use SL::Common;
use SL::DBUtils;
+use SL::GenericTranslations;
use SL::IS;
use SL::Mailer;
use SL::MoreCommon;
sub save_dunning {
$main::lxdebug->enter_sub();
- my ($self, $myconfig, $form, $rows, $userspath, $spool) = @_;
+ my ($self, $myconfig, $form, $rows) = @_;
# connect to database
my $dbh = $form->dbconnect_noauto($myconfig);
(SELECT SUM(fee)
FROM dunning_config
WHERE dunning_level <= (SELECT dunning_level FROM dunning_config WHERE id = ?)),
- (SELECT (amount - paid) * (current_date - transdate) FROM ar WHERE id = ?)
+ (SELECT (amount - paid) * (current_date - duedate) FROM ar WHERE id = ?)
* (SELECT interest_rate FROM dunning_config WHERE id = ?)
/ 360,
current_date,
return;
}
- my $template = PlainTextTemplate->new(undef, $form, $myconfig);
+ my $template = SL::Template::create(type => 'PlainText', form => $form, myconfig => $myconfig);
my $mail = Mailer->new();
$mail->{from} = $myconfig->{email};
$mail->{to} = $ref->{recipient};
ORDER BY dunning_level ASC
LIMIT 1)
, ?))
- LEFT JOIN dunning d ON ((d.trans_id = a.id) AND (cfg.dunning_level = d.dunning_level))
+ LEFT JOIN dunning d ON (d.id = (
+ SELECT MAX(d2.id)
+ FROM dunning d2
+ WHERE (d2.trans_id = a.id)
+ AND (d2.dunning_level = cfg.dunning_level)
+ ))
WHERE (a.paid < a.amount)
AND (a.duedate < current_date)
$copies *= 1;
$copies = 1 unless $copies;
- my $inputfiles = join " ", map { "${main::spool}/$_ " x $copies } @{ $form->{DUNNING_PDFS} };
+ my $spool = $::lx_office_conf{paths}->{spool};
+ my $inputfiles = join " ", map { "$spool/$_ " x $copies } @{ $form->{DUNNING_PDFS} };
my $dunning_id = $form->{dunning_id};
$dunning_id =~ s|[^\d]||g;
- my $in = IO::File->new("gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=- $inputfiles |");
+ my $in = IO::File->new($::lx_office_conf{applications}->{ghostscript} . " -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=- $inputfiles |");
$form->error($main::locale->text('Could not spawn ghostscript.')) unless $in;
if ($form->{media} eq 'printer') {
$in->close();
- map { unlink("${main::spool}/$_") } @{ $form->{DUNNING_PDFS} };
+ map { unlink("$spool/$_") } @{ $form->{DUNNING_PDFS} };
$main::lxdebug->leave_sub();
}
$form->{total_open_amount} = $form->format_amount($myconfig, $form->round_amount($ref->{total_open_amount}, 2), 2);
$form->{total_amount} = $form->format_amount($myconfig, $form->round_amount($ref->{fee} + $ref->{total_interest} + $ref->{total_open_amount}, 2), 2);
+ $self->set_customer_cvars($myconfig, $form);
$self->set_template_options($myconfig, $form);
my $filename = "dunning_${dunning_id}_" . Common::unique_id() . ".pdf";
- $form->{OUT} = ">${main::spool}/$filename";
+ my $spool = $::lx_office_conf{paths}->{spool};
+ $form->{OUT} = ">${spool}/$filename";
$form->{keep_tmpfile} = 1;
delete $form->{tmpfile};
push @{ $form->{DUNNING_PDFS} }, $filename;
- push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'filename' => "${main::spool}/$filename",
+ push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'filename' => "${spool}/$filename",
'name' => "dunning_${dunning_id}.pdf" };
- $form->parse_template($myconfig, $main::userspath);
+ $form->parse_template($myconfig);
$dbh->disconnect() unless $provided_dbh;
$query =
qq|SELECT
ar.invnumber, ar.transdate AS invdate, ar.amount, ar.netamount,
- ar.duedate, ar.notes, ar.notes AS invoicenotes,
+ ar.duedate, ar.notes, ar.notes AS invoicenotes, ar.customer_id,
c.name, c.department_1, c.department_2, c.street, c.zipcode, c.city, c.country,
c.contact, c.customernumber, c.phone, c.fax, c.email,
map { $form->{$_} = $form->format_amount($myconfig, $form->{$_}, 2) } qw(fee interest invamount);
+ $self->set_customer_cvars($myconfig, $form);
$self->set_template_options($myconfig, $form);
my $filename = Common::unique_id() . "dunning_invoice_${dunning_id}.pdf";
- $form->{OUT} = ">$main::spool/$filename";
+ my $spool = $::lx_office_conf{paths}->{spool};
+ $form->{OUT} = ">$spool/$filename";
$form->{keep_tmpfile} = 1;
delete $form->{tmpfile};
map { delete $form->{$_} } grep /^[a-z_]+_\d+$/, keys %{ $form };
- $form->parse_template($myconfig, $main::userspath);
+ $form->parse_template($myconfig);
restore_form($saved_form);
push @{ $form->{DUNNING_PDFS} }, $filename;
- push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'filename' => "${main::spool}/$filename",
+ push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'filename' => "${spool}/$filename",
'name' => "dunning_invoice_${dunning_id}.pdf" };
$dbh->disconnect() unless $provided_dbh;
$main::lxdebug->leave_sub();
}
+sub set_customer_cvars {
+ my ($self, $myconfig, $form) = @_;
+
+ my $custom_variables = CVar->get_custom_variables(dbh => $form->get_standard_dbh,
+ module => 'CT',
+ trans_id => $form->{customer_id});
+ map { $form->{"vc_cvar_$_->{name}"} = $_->{value} } @{ $custom_variables };
+
+ $form->{cp_greeting} = GenericTranslations->get(dbh => $form->get_standard_dbh,
+ translation_type => 'greetings::' . ($form->{cp_gender} eq 'f' ? 'female' : 'male'),
+ language_id => $form->{language_id},
+ allow_fallback => 1);
+}
+
1;