use SL::Common;
use SL::DBUtils;
+use SL::GenericTranslations;
use SL::IS;
use SL::Mailer;
use SL::MoreCommon;
(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)
my $in = IO::File->new("gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=- $inputfiles |");
$form->error($main::locale->text('Could not spawn ghostscript.')) unless $in;
- my $out;
-
if ($form->{media} eq 'printer') {
$form->get_printer_code($myconfig);
+ my $out;
if ($form->{printer_command}) {
$out = IO::File->new("| $form->{printer_command}");
}
+ $::locale->with_raw_io($out, sub { $out->print($_) while <$in> });
+
$form->error($main::locale->text('Could not spawn the printer command.')) unless $out;
} else {
my $dunning_filename = $form->get_formname_translation('dunning');
- $out = IO::File->new('>-');
- $out->print(qq|Content-Type: Application/PDF\n| .
- qq|Content-Disposition: attachment; filename="${dunning_filename}_${dunning_id}.pdf"\n\n|);
- }
+ print qq|Content-Type: Application/PDF\n| .
+ qq|Content-Disposition: attachment; filename="${dunning_filename}_${dunning_id}.pdf"\n\n|;
- while (my $line = <$in>) {
- $out->print($line);
+ $::locale->with_raw_io(\*STDOUT, sub { print while <$in> });
}
$in->close();
- $out->close();
map { unlink("${main::spool}/$_") } @{ $form->{DUNNING_PDFS} };
$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";
$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";
$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;