Wiederkehrende Rechnungen: Druckvorlage nach Auftragssprache auswählen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 6 Jun 2019 14:20:48 +0000 (16:20 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 6 Jun 2019 14:22:56 +0000 (16:22 +0200)
Bisher wurde immer die Standarddruckvorlage genutzt und die im Auftrag
und damit der Rechnung eingestellte Sprache komplett ignoriert.

Weiterhin wird der Dateiname des Anhangs nach der eingestellten
Sprache gesetzt. Das funktioniert nur, wenn die in kivitendo
konfigurierten Sprachen dieselben Sprachkürzel nutzen, wie kivitendos
Übersetzungen selber heißen (also »de« und »en«).

SL/BackgroundJob/CreatePeriodicInvoices.pm
SL/Locale.pm

index aeb0444..521dc1b 100644 (file)
@@ -382,8 +382,9 @@ sub _email_invoice {
 
   return unless @recipients;
 
+  my $language      = $data->{invoice}->language ? $data->{invoice}->language->template_code : undef;
   my %create_params = (
-    template               => scalar($self->find_template(name => 'invoice')),
+    template               => scalar($self->find_template(name => 'invoice', language => $language)),
     variables              => Form->new(''),
     return                 => 'file_name',
     variable_content_types => {
@@ -397,6 +398,7 @@ sub _email_invoice {
   $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);
@@ -423,7 +425,7 @@ sub _email_invoice {
       $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;
index 9257e6c..3b91502 100644 (file)
@@ -74,6 +74,12 @@ sub new {
   return $locales_by_country{$country}
 }
 
+sub is_supported {
+  my ($country) = @_;
+
+  return -f "locale/$country/all";
+}
+
 sub _init {
   my $self     = shift;
   my $country  = shift;