]> wagnertech.de Git - kivitendo-erp.git/commitdiff
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 aeb0444c054d3ea1f32f47efc7a213f6231011d6..521dc1b303fef720a3be585e8fd358ee2cd435a3 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 9257e6ca7139059ca0e2d3ddc855ce82459213b4..3b91502d5e2f990e11497512768396787f1572a4 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;