Wiederkehrende Rechnungen: bei E-Mail-Versand Rechnungsattribute als Variablen
authorMoritz Bunkus <m.bunkus@linet.de>
Tue, 10 Nov 2020 10:24:24 +0000 (11:24 +0100)
committerMoritz Bunkus <m.bunkus@linet.de>
Tue, 10 Nov 2020 10:28:59 +0000 (11:28 +0100)
Praxisbeispiel ist, dass man im Betreff der Rechnung die
Rechnungsnummer angeben möchte; das geht nun mit z.B. »Rechnung <%invnumber%>«.

SL/BackgroundJob/CreatePeriodicInvoices.pm
doc/changelog
doc/dokumentation.xml

index 5c223e6..3a74c49 100644 (file)
@@ -152,10 +152,7 @@ sub _replace_vars {
     $key               = $::locale->unquote_special_chars('html', $key) if $sub_fmt eq 'html';
     my $new_value;
 
     $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(
       $format    = $::locale->unquote_special_chars('html', $format) if $sub_fmt eq 'html';
 
       $new_value = DateTime::Format::Strptime->new(
@@ -164,11 +161,15 @@ sub _replace_vars {
         time_zone   => 'local',
       )->format_datetime($params{vars}->{$key}->[0]);
 
         time_zone   => 'local',
       )->format_datetime($params{vars}->{$key}->[0]);
 
-    } else {
+    } elsif ($params{vars}->{$key}) {
       $new_value = $params{vars}->{$1}->[1]->($params{vars}->{$1}->[0]);
       $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;
 
 
     $new_value;
 
@@ -431,6 +432,7 @@ sub _email_invoice {
     for (qw(email_subject email_body)) {
       _replace_vars(
         object           => $data->{config},
     for (qw(email_subject email_body)) {
       _replace_vars(
         object           => $data->{config},
+        invoice          => $data->{invoice},
         vars             => $data->{time_period_vars},
         attribute        => $_,
         attribute_format => 'text'
         vars             => $data->{time_period_vars},
         attribute        => $_,
         attribute_format => 'text'
index 968ae47..3a88767 100644 (file)
@@ -22,6 +22,11 @@ Kleinere neue Features und Detailverbesserungen:
    Fehlermeldung nach dem Verbuchen von Einkaufsrechnungen, weil auf
    die Maske zum Erfassen einer weiteren neuen Einkaufsrechnung
    weitergeleitet wurde.
    Fehlermeldung nach dem Verbuchen von Einkaufsrechnungen, weil auf
    die Maske zum Erfassen einer weiteren neuen Einkaufsrechnung
    weitergeleitet wurde.
+ - Wiederkehrende Rechnung: beim automatischen Versand erzeugter
+   Rechnungen per E-Mail können nun auch Rechnungsattribute als
+   Variablen im Betreff & Text der E-Mails genutzt werden
+   (z.B. <%invnumber%> für die Rechnungsnummer oder
+   <%transaction_description%> für die Vorgangsbezeichnung).
 
 Bugfixes (Tracker: https://www.kivitendo.de/redmine):
 97 Benutzer löschen unter System->Benutzer funktioniert nicht
 
 Bugfixes (Tracker: https://www.kivitendo.de/redmine):
 97 Benutzer löschen unter System->Benutzer funktioniert nicht
index 7f98d40..c73c1de 100644 (file)
@@ -3667,6 +3667,11 @@ digits_year: 4</programlisting>
         bis zu welchem Monat und Jahr die aktuelle Abrechnungsperiode dauert:
         <literal>Abrechnungszeitrum: &lt;%period_start_date FORMAT=%m/%Y%&gt;
         bis &lt;%period_end_date FORMAT=%m/%Y%&gt;</literal></para>
         bis zu welchem Monat und Jahr die aktuelle Abrechnungsperiode dauert:
         <literal>Abrechnungszeitrum: &lt;%period_start_date FORMAT=%m/%Y%&gt;
         bis &lt;%period_end_date FORMAT=%m/%Y%&gt;</literal></para>
+
+        <para>Beim automatischen Versand der Rechnugen via E-Mail können neben diesen speziellen Variablen auch einige Eigenschaften der
+        Rechnung selber als Variablen im Betreff &amp; dem Text der E-Mails genutzt werden. Beispiele sind
+        <varname>&lt;%invnumber%&gt;</varname> für die Rechnungsnummber oder <varname>&lt;transaction_description%&gt;</varname> für die
+        Vorgangsbezeichnung. Diese Variablen stehen beim Erzeugen der Rechnung logischerweise noch nicht zur Verfügung.</para>
       </sect2>
 
       <sect2 id="features.periodic-invoices.reports">
       </sect2>
 
       <sect2 id="features.periodic-invoices.reports">