commit b5173b5c2e0148aa4ff959487304545c67395ea4
Author: Jan Büren <jan@kivitendo-premium.de>
Date:   Tue Feb 14 11:07:11 2023 +0100

    Mahnungen erzeugen, Anzeige der E-Mail-Adresse für Empfänger (falls vorhanden)
    
    Wird entsprechend deaktiviert falls überhaupt keine valide E-Mail-Adresse
    bei den Stammdaten hinterlegt sind. E-Mail-Adressen werden in folgender
    Reihenfolge überprüft und der erste Treffer wird übernommen:
    1.  Abweichende Rechnungsadresse
    1.1  Mahnungsempfänger der abweichenden Rechnungsadresse
    1.2  normale E-Mail-Empfänger der abweichenden Rechnungsadresse
    2.  Rechnungsadresse Basisdaten
    2.1  Mahnungsempfänger der Rechnungsadresse
    2.2  Rechnungsempfänger (E-Mail) der Rechnungsadresse

diff --git a/SL/DN.pm b/SL/DN.pm
index a81321956..d73e8e4a5 100644
--- a/SL/DN.pm
+++ b/SL/DN.pm
@@ -674,7 +674,9 @@ sub get_invoices {
          a.direct_debit,
          pt.description as payment_term,
          dep.description as departmentname,
-         ct.invoice_mail AS cv_email,
+         COALESCE (NULLIF(aba.dunning_mail, ''), NULLIF(aba.email,''),
+                   NULLIF(ct.dunning_mail, ''),
+                   NULLIF(ct.invoice_mail, '')) AS recipient,
          cfg.dunning_description, cfg.dunning_level,
 
          d.transdate AS dunning_date, d.duedate AS dunning_duedate,
@@ -691,6 +693,7 @@ sub get_invoices {
        FROM ar a
 
        LEFT JOIN customer ct ON (a.customer_id = ct.id)
+       LEFT JOIN additional_billing_addresses aba ON (aba.id = a.billing_address_id)
        LEFT JOIN department dep ON (a.department_id = dep.id)
        LEFT JOIN payment_terms pt ON (a.payment_id = pt.id)
        LEFT JOIN dunning_config cfg ON (a.dunning_config_id = cfg.id)
@@ -721,7 +724,7 @@ sub get_invoices {
 
        $where
 
-       ORDER BY a.id, transdate, duedate, name|;
+       ORDER BY a.id, transdate, duedate, ct.name|;
   my $sth = prepare_execute_query($form, $dbh, $query, $id_for_max_dunning_level, @values);
 
   $form->{DUNNINGS} = [];
diff --git a/locale/de/all b/locale/de/all
index 339de4e94..d78246f71 100644
--- a/locale/de/all
+++ b/locale/de/all
@@ -2440,6 +2440,7 @@ $ ./scripts/installation_check.pl',
   'No function blocks have been created yet.' => 'Es wurden noch keine Funktionsblöcke angelegt.',
   'No groups have been created yet.' => 'Es wurden noch keine Gruppen angelegt.',
   'No internal phone extensions have been configured yet.' => 'Es wurden noch keine internen Durchwahlen konfiguriert.',
+  'No invoice email found.'     => 'Keine Rechnungsmailadresse gefunden.',
   'No invoices have been selected.' => 'Es wurden keine Rechnungen ausgewählt.',
   'No part was selected.'       => 'Es wurde kein Artikel ausgewählt',
   'No payment term has been created yet.' => 'Es wurden noch keine Zahlungsbedingungen angelegt.',
diff --git a/templates/webpages/dunning/show_invoices.html b/templates/webpages/dunning/show_invoices.html
index 2fa7784d7..b94afb679 100644
--- a/templates/webpages/dunning/show_invoices.html
+++ b/templates/webpages/dunning/show_invoices.html
@@ -74,7 +74,7 @@
      <td>[% HTML.escape(row.payment_term) %]</td>
 
      <td><input type="checkbox" name="active_[% loop.count %]" value="1" [% IF row.active %]checked[% END %]></td>
-     <td><input type="checkbox" name="email_[% loop.count %]" value="1" [% IF row.email && row.cv_email %]checked[% END %]>[% HTML.escape(row.cv_email) %]</td>
+     <td>[% IF row.recipient %]<input type="checkbox" name="email_[% loop.count %]" value="1" [% IF row.email && row.recipient %]checked[% END %]>[% row.recipient %] [% ELSE %]<input type="checkbox" name="dummy" disabled="true"> [% LxERP.t8("No invoice email found.") %] [% END %]</td>
      <td><input type="checkbox" name="include_invoice_[% loop.count %]" value="1" [% IF row.print_original_invoice %]checked[% END %]></td>
      <td><input type="hidden" name="customername_[% loop.count %]" size="6" value="[% HTML.escape(row.customername) %]">
       <a href="controller.pl?action=CustomerVendor/edit&db=customer&id=[% row.customer_id %]">[% HTML.escape(row.customername) %]</a>
