use SL::Util qw(trim);
use SL::DB;
+use File::Copy;
+
use strict;
sub get_config {
$form->{"template_$i"}, $form->{"fee_$i"}, $form->{"interest_rate_$i"},
$form->{"active_$i"} ? 't' : 'f', $form->{"auto_$i"} ? 't' : 'f', $form->{"email_$i"} ? 't' : 'f',
$form->{"email_attachment_$i"} ? 't' : 'f', conv_i($form->{"payment_terms_$i"}), conv_i($form->{"terms_$i"}),
- $form->{"create_invoices_for_fees_$i"} ? 't' : 'f');
+ $form->{"create_invoices_for_fees_$i"} ? 't' : 'f',
+ $form->{"print_original_invoice_$i"} ? 't' : 'f');
if ($form->{"id_$i"}) {
$query =
qq|UPDATE dunning_config SET
template = ?, fee = ?, interest_rate = ?,
active = ?, auto = ?, email = ?,
email_attachment = ?, payment_terms = ?, terms = ?,
- create_invoices_for_fees = ?
+ create_invoices_for_fees = ?,
+ print_original_invoice = ?
WHERE id = ?|;
push(@values, conv_i($form->{"id_$i"}));
} else {
qq|INSERT INTO dunning_config
(dunning_level, dunning_description, email_subject, email_body,
template, fee, interest_rate, active, auto, email,
- email_attachment, payment_terms, terms, create_invoices_for_fees)
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)|;
+ email_attachment, payment_terms, terms, create_invoices_for_fees,
+ print_original_invoice)
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)|;
}
do_query($form, $dbh, $query, @values);
}
my @invoice_ids;
my ($next_dunning_config_id, $customer_id);
- my $send_email = 0;
+ my ($send_email, $print_invoice) = (0, 0);
foreach my $row (@{ $rows }) {
push @invoice_ids, $row->{invoice_id};
@values = ($row->{next_dunning_config_id}, $row->{invoice_id});
do_statement($form, $h_update_ar, $q_update_ar, @values);
- $send_email |= $row->{email};
+ $send_email |= $row->{email};
+ $print_invoice |= $row->{print_invoice};
my $next_config_id = conv_i($row->{next_dunning_config_id});
my $invoice_id = conv_i($row->{invoice_id});
$self->print_invoice_for_fees($myconfig, $form, $dunning_id, $dbh);
$self->print_dunning($myconfig, $form, $dunning_id, $dbh);
+ if ($print_invoice) {
+ $self->print_original_invoices($myconfig, $form, $_, $dbh) for @invoice_ids;
+ }
if ($send_email) {
$self->send_email($myconfig, $form, $dunning_id, $dbh);
nextcfg.dunning_description AS next_dunning_description,
nextcfg.id AS next_dunning_config_id,
- nextcfg.terms, nextcfg.active, nextcfg.email
+ nextcfg.terms, nextcfg.active, nextcfg.email, nextcfg.print_original_invoice
FROM ar a
}
+sub print_original_invoices {
+ my ($self, $myconfig, $form, $invoice_id) = @_;
+ # get one invoice as object and print to pdf
+ my $invoice = SL::DB::Invoice->new(id => $invoice_id)->load;
+
+ die "Invalid invoice object" unless ref($invoice) eq 'SL::DB::Invoice';
+
+ my $print_form = Form->new('');
+ $print_form->{type} = 'invoice';
+ $print_form->{formname} = 'invoice',
+ $print_form->{format} = 'pdf',
+ $print_form->{media} = 'file';
+ # no language override, should always be the object's language
+ $invoice->flatten_to_form($print_form, format_amounts => 1);
+ $print_form->prepare_for_printing;
+
+ my $filename = SL::Helper::CreatePDF->create_pdf(
+ template => 'invoice.tex',
+ variables => $print_form,
+ return => 'file_name',
+ );
+
+ my $spool = $::lx_office_conf{paths}->{spool};
+ my ($volume, $directory, $file_name) = File::Spec->splitpath($filename);
+ my $full_file_name = File::Spec->catfile($spool, $file_name);
+
+ move($filename, $full_file_name) or die "The move operation failed: $!";
+
+ # form get_formname_translation should use language_id_$i
+ my $saved_reicpient_locale = $form->{recipient_locale};
+ $form->{recipient_locale} = $invoice->language;
+
+ push @{ $form->{DUNNING_PDFS} }, $file_name;
+ push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'path' => "${spool}/$file_name",
+ 'name' => $form->get_formname_translation('invoice') . "_" . $invoice->invnumber . ".pdf" };
+
+ $form->{recipient_locale} = $saved_reicpient_locale;
+}
+
1;