use English qw(-no_match_vars);
use List::MoreUtils qw(uniq);
+use SL::Common;
use SL::DB::AuthUser;
use SL::DB::Default;
use SL::DB::Order;
use SL::Helper::CreatePDF qw(create_pdf find_template);
use SL::Mailer;
use SL::Util qw(trim);
+use SL::System::Process;
sub create_job {
$_[0]->create_standard_job('0 3 1 * *'); # first day of month at 3:00 am
$key = $::locale->unquote_special_chars('html', $key) if $sub_fmt eq 'html';
my $new_value;
- if (!$params{vars}->{$key}) {
- $new_value = '';
-
- } elsif ($format) {
+ if ($params{vars}->{$key} && $format) {
$format = $::locale->unquote_special_chars('html', $format) if $sub_fmt eq 'html';
$new_value = DateTime::Format::Strptime->new(
time_zone => 'local',
)->format_datetime($params{vars}->{$key}->[0]);
- } else {
+ } elsif ($params{vars}->{$key}) {
$new_value = $params{vars}->{$1}->[1]->($params{vars}->{$1}->[0]);
+
+ } elsif ($params{invoice} && $params{invoice}->can($key)) {
+ $new_value = $params{invoice}->$key;
}
- $new_value = $::locale->quote_special_chars('html', $new_value) if $sub_fmt eq 'html';
+ $new_value //= '';
+ $new_value = $::locale->quote_special_chars('html', $new_value) if $sub_fmt eq 'html';
$new_value;
$mail->send;
}
+sub _store_pdf_in_webdav {
+ my ($self, $pdf_file_name, $invoice) = @_;
+
+ return unless $::instance_conf->get_webdav_documents;
+
+ my $form = Form->new('');
+
+ $form->{cwd} = SL::System::Process->exe_dir;
+ $form->{tmpdir} = ($pdf_file_name =~ m{(.+)/})[0];
+ $form->{tmpfile} = ($pdf_file_name =~ m{.+/(.+)})[0];
+ $form->{format} = 'pdf';
+ $form->{formname} = 'invoice';
+ $form->{type} = 'invoice';
+ $form->{vc} = 'customer';
+ $form->{invnumber} = $invoice->invnumber;
+ $form->{recipient_locale} = $invoice->language ? $invoice->language->template_code : '';
+
+ Common::copy_file_to_webdav_folder($form);
+}
+
sub _print_invoice {
my ($self, $data) = @_;
return unless @recipients;
+ my $language = $data->{invoice}->language ? $data->{invoice}->language->template_code : undef;
my %create_params = (
- template => $self->find_template(name => 'invoice'),
+ template => scalar($self->find_template(name => 'invoice', language => $language)),
variables => Form->new(''),
return => 'file_name',
+ record => $data->{invoice},
variable_content_types => {
longdescription => 'html',
partnotes => 'html',
$create_params{variables}->prepare_for_printing;
my $pdf_file_name;
+ my $label = $language && Locale::is_supported($language) ? Locale->new($language)->text('Invoice') : $::locale->text('Invoice');
eval {
$pdf_file_name = $self->create_pdf(%create_params);
+ $self->_store_pdf_in_webdav($pdf_file_name, $data->{invoice});
+
for (qw(email_subject email_body)) {
_replace_vars(
object => $data->{config},
+ invoice => $data->{invoice},
vars => $data->{time_period_vars},
attribute => $_,
attribute_format => 'text'
$mail->{message} = $data->{config}->email_body;
$mail->{attachments} = [{
path => $pdf_file_name,
- name => sprintf('%s %s.pdf', $::locale->text('Invoice'), $data->{invoice}->invnumber),
+ name => sprintf('%s %s.pdf', $label, $data->{invoice}->invnumber),
}];
my $error = $mail->send;