use SL::DB::AuthUser;
use SL::DB::Default;
use SL::DB::Employee;
+use SL::File;
use SL::GenericTranslations;
use SL::IS;
use SL::Mailer;
use SL::TransNumber;
use SL::Util qw(trim);
use SL::DB;
+use SL::Webdav;
use File::Copy;
my $q_insert_dunning =
qq|INSERT INTO dunning (id, dunning_id, dunning_config_id, dunning_level, trans_id,
- fee, interest, transdate, duedate)
+ fee, interest, transdate, duedate, original_invoice_printed)
VALUES (?, ?, ?,
(SELECT dunning_level FROM dunning_config WHERE id = ?),
?,
* (SELECT interest_rate FROM dunning_config WHERE id = ?)
/ 360,
current_date,
- current_date + (SELECT payment_terms FROM dunning_config WHERE id = ?))|;
+ current_date + (SELECT payment_terms FROM dunning_config WHERE id = ?),
+ ?)|;
my $h_insert_dunning = prepare_query($form, $dbh, $q_insert_dunning);
my @invoice_ids;
@values = ($row_id, $dunning_id, $next_config_id,
$next_config_id, $invoice_id, $next_config_id,
- $invoice_id, $next_config_id, $next_config_id);
+ $invoice_id, $next_config_id, $next_config_id,
+ $print_invoice);
do_statement($form, $h_insert_dunning, $q_insert_dunning, @values);
RecordLinks->create_links(
$self->print_dunning($myconfig, $form, $dunning_id, $dbh);
if ($print_invoice) {
- $self->print_original_invoices($myconfig, $form, $_, $dbh) for @invoice_ids;
+ $self->print_original_invoice($myconfig, $form, $_) for @invoice_ids;
}
if ($send_email) {
$dunning_id =~ s|[^\d]||g;
- my ($language_tc, $output_numberformat, $output_dateformat, $output_longdates);
+ my ($language_tc, $output_numberformat, $output_dateformat, $output_longdates, @dunned_invoices);
if ($form->{"language_id"}) {
($language_tc, $output_numberformat, $output_dateformat, $output_longdates) =
AM->get_language_details($myconfig, $form, $form->{language_id});
ar.transdate, ar.duedate, ar.customer_id,
ar.invnumber, ar.ordnumber, ar.cp_id,
ar.amount, ar.netamount, ar.paid,
- ar.employee_id, ar.salesman_id,
+ ar.employee_id, ar.salesman_id, ar.id AS dunned_invoice_id,
(SELECT cu.name FROM currencies cu WHERE cu.id = ar.currency_id) AS curr,
(SELECT description from department WHERE id = ar.department_id) AS department,
ar.amount - ar.paid AS open_amount,
map { $ref->{$_} = $form->format_amount($myconfig, $ref->{$_}, 2) } qw(amount netamount paid open_amount fee interest linetotal);
map { $form->{$_} = $ref->{$_} } keys %$ref;
map { push @{ $form->{TEMPLATE_ARRAYS}->{"dn_$_"} }, $ref->{$_} } keys %$ref;
+ push @dunned_invoices, {id => $ref->{dunned_invoice_id}, invnumber => $ref->{invnumber}};
}
$sth->finish();
}
$form->{attachment_filename} = $form->get_formname_translation($form->{attachment_type}) . "_${dunning_id}.pdf";
$form->{attachment_id} = $form->{invoice_id};
+
+ # this generates the file in the spool directory
$form->parse_template($myconfig);
+ # save dunning pdf in filemanagement/webdav for each invoice
+ foreach my $dunned_invoice (@dunned_invoices) {
+ if ($::instance_conf->get_doc_storage) {
+ SL::File->save(
+ object_id => $dunned_invoice->{id},
+ object_type => $form->{attachment_type},
+ mime_type => 'application/pdf',
+ source => 'created',
+ file_type => 'document',
+ file_name => $form->{attachment_filename},
+ file_path => "${spool}/$filename",
+ );
+ }
+
+ if ($::instance_conf->get_webdav_documents) {
+ my $webdav = SL::Webdav->new(
+ type => 'invoice',
+ number => $dunned_invoice->{invnumber},
+ );
+ my $webdav_file = SL::Webdav::File->new(
+ webdav => $webdav,
+ filename => $form->{attachment_filename},
+ );
+ $webdav_file->store(file => "${spool}/$filename");
+ }
+ }
+
$main::lxdebug->leave_sub();
}
push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'path' => "${spool}/$filename",
'name' => $attachment_filename };
+ # save dunning fee pdf in filemanagement/webdav for each dunned invoice
+ if ($::instance_conf->get_doc_storage || $::instance_conf->get_webdav_documents) {
+ $query = qq|SELECT trans_id, invnumber FROM dunning LEFT JOIN ar ON (ar.id = trans_id) WHERE dunning_id = ?|;
+ my $dunned_invoices = selectall_hashref_query($form, $dbh, $query, $dunning_id);
+
+ foreach my $dunned_invoice (@$dunned_invoices) {
+ if ($::instance_conf->get_doc_storage) {
+ SL::File->save(
+ object_id => $dunned_invoice->{trans_id},
+ object_type => 'dunning',
+ mime_type => 'application/pdf',
+ source => 'created',
+ file_type => 'document',
+ file_name => $attachment_filename,
+ file_path => "${spool}/$filename",
+ );
+ }
+
+ if ($::instance_conf->get_webdav_documents) {
+ my $webdav = SL::Webdav->new(
+ type => 'invoice',
+ number => $dunned_invoice->{invnumber},
+ );
+ my $webdav_file = SL::Webdav::File->new(
+ webdav => $webdav,
+ filename => $attachment_filename,
+ );
+ $webdav_file->store(file => "${spool}/$filename");
+ }
+ }
+ }
+
$main::lxdebug->leave_sub();
}
}
-sub print_original_invoices {
+sub print_original_invoice {
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;
my $saved_reicpient_locale = $form->{recipient_locale};
$form->{recipient_locale} = $invoice->language;
+ my $attachment_filename = $form->get_formname_translation('invoice') . "_" . $invoice->invnumber . ".pdf";
+
push @{ $form->{DUNNING_PDFS} }, $file_name;
push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'path' => "${spool}/$file_name",
- 'name' => $form->get_formname_translation('invoice') . "_" . $invoice->invnumber . ".pdf" };
+ 'name' => $attachment_filename };
$form->{recipient_locale} = $saved_reicpient_locale;
+
+ # save original invoice pdf in filemanagement/webdav for dunned invoice
+ if ($::instance_conf->get_doc_storage) {
+ SL::File->save(
+ object_id => $invoice_id,
+ object_type => 'dunning_orig_invoice',
+ mime_type => 'application/pdf',
+ source => 'created',
+ file_type => 'document',
+ file_name => $attachment_filename,
+ file_path => "${spool}/$file_name",
+ );
+ }
+ if ($::instance_conf->get_webdav_documents) {
+ my $webdav = SL::Webdav->new(
+ type => 'invoice',
+ number => $invoice->invnumber,
+ );
+ my $webdav_file = SL::Webdav::File->new(
+ webdav => $webdav,
+ filename => $attachment_filename,
+ );
+ $webdav_file->store(file => "${spool}/$file_name");
+ }
+
}
1;