Verkaufsrechnungen: aktuellen Mahnstatus anzeigen; Texte leichter verständlich
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 1 Oct 2015 11:33:17 +0000 (13:33 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 1 Oct 2015 11:38:03 +0000 (13:38 +0200)
Zusätzlich zur höchsten Stufe aktuell noch offenen Rechnungen und dem
gesamten offenen Betrag angemahnter Rechnungen des Kunden wird nun auch
explizit angezeigt, wenn die aktuelle Rechnung selber angemahnt
wurde. Diese Warnung wird nicht nur fett, sondern sogar rot dargestellt.

SL/IS.pm
bin/mozilla/is.pl
css/kivitendo/main.css
css/lx-office-erp/main.css
locale/de/all
templates/webpages/is/form_header.html

index 5550dda..88c015d 100644 (file)
--- a/SL/IS.pm
+++ b/SL/IS.pm
@@ -1895,9 +1895,11 @@ sub retrieve_invoice {
            a.language_id, a.delivery_customer_id, a.delivery_vendor_id, a.type,
            a.transaction_description, a.donumber, a.invnumber_for_credit_note,
            a.marge_total, a.marge_percent, a.direct_debit, a.delivery_term_id,
+           dc.dunning_description,
            e.name AS employee
          FROM ar a
          LEFT JOIN employee e ON (e.id = a.employee_id)
+         LEFT JOIN dunning_config dc ON (a.dunning_config_id = dc.id)
          WHERE a.id = ?|;
     $ref = selectfirst_hashref_query($form, $dbh, $query, $id);
     map { $form->{$_} = $ref->{$_} } keys %{ $ref };
index 4b31771..41d7e31 100644 (file)
@@ -380,7 +380,7 @@ sub form_header {
   $TMPL_VAR{HIDDENS} = [qw(
     id action type media format queued printed emailed title vc discount
     title creditlimit creditremaining tradediscount business closedto locked shipped storno storno_id
-    max_dunning_level dunning_amount
+    max_dunning_level dunning_amount dunning_description
     shiptoname shiptostreet shiptozipcode shiptocity shiptocountry  shiptocontact shiptophone shiptofax
     shiptoemail shiptodepartment_1 shiptodepartment_2  shiptocp_gender message email subject cc bcc taxaccounts cursor_fokus
     convert_from_do_ids convert_from_oe_ids convert_from_ar_ids useasnew
index b14c25f..9c5ea64 100644 (file)
@@ -466,3 +466,10 @@ div.cpc_block span.cpc_block_second_row {
 span.toggle_selected {
   font-weight: bold;
 }
+.dunned_invoice {
+  font-weight: bold;
+  color: #f00;
+}
+.customer_dunning_level {
+  font-weight: bold;
+}
index fe993c2..da2835c 100644 (file)
@@ -477,3 +477,10 @@ div.cpc_block span.cpc_block_second_row {
 span.toggle_selected {
   font-weight: bold;
 }
+.dunned_invoice {
+  font-weight: bold;
+  color: #f00;
+}
+.customer_dunning_level {
+  font-weight: bold;
+}
index d2b4655..2a05468 100755 (executable)
@@ -735,6 +735,7 @@ $self->{texts} = {
   'Customer saved!'             => 'Kunde gespeichert!',
   'Customer type'               => 'Kundentyp',
   'Customer variables'          => 'Kundenvariablen',
+  'Customer\'s current maximum dunning level: #1' => 'Aktuell höchste Mahnstufe des Kunden: #1',
   'Customer/Vendor'             => 'Kunde/Lieferant',
   'Customer/Vendor (database ID)' => 'Kunde/Lieferant (Datenbank-ID)',
   'Customer/Vendor Name'        => 'Kunde/Lieferant',
@@ -951,6 +952,7 @@ $self->{texts} = {
   'Due Date missing!'           => 'Fälligkeitsdatum fehlt!',
   'Due to security concerns these files have to be deleted or moved after the migration before you can continue using kivitendo.' => 'Aus Sicherheitsgründen müssen diese Dateien nach erfolgter Migration gelöscht oder verschoben werden, bevor kivitendo weiter genutzt werden kann.',
   'Duedate +Days'               => 'Fällikeitsdatum +Tage',
+  'Dunned open amount: #1'      => 'Angemahnter, offener Betrag: #1',
   'Dunning'                     => 'Mahnung',
   'Dunning Amount'              => 'gemahnter Betrag',
   'Dunning Date'                => 'Mahndatum',
@@ -964,6 +966,7 @@ $self->{texts} = {
   'Dunning Process started for selected invoices!' => 'Mahnprozess für selektierte Rechnungen gestartet',
   'Dunning number'              => 'Mahnungsnummer',
   'Dunning overview'            => 'Mahnungsübersicht',
+  'Dunning status'              => 'Mahnstatus',
   'Dunnings'                    => 'Mahnungen',
   'Duplicate in CSV file'       => 'Duplikat in CSV-Datei',
   'Duplicate in database'       => 'Duplikat in Datenbank',
@@ -2937,6 +2940,7 @@ $self->{texts} = {
   'This group is valid for the following clients' => 'Diese Gruppe ist für die folgenden Mandanten gültig',
   'This has been changed in this version, therefore please change the "old" bins to some real warehouse bins.' => 'Das wurde in dieser Version umgestellt, bitte ändern Sie die Freitext-Lagerplätze auf vorhandene Lagerplätze.',
   'This has been changed in this version.' => 'Ab dieser Version ist dies nicht mehr so.',
+  'This invoice\'s dunning level: #1' => 'Mahnstufe dieser Rechnung: #1',
   'This is a very critical problem.' => 'Dieses Problem ist sehr schwerwiegend.',
   'This is the client to be selected by default on the login screen.' => 'Dies ist derjenige Mandant, der im Loginbildschirm standardmäßig ausgewählt sein wird.',
   'This is the default bin for parts' => 'Standard-Lagerplatz für Stammdaten/Waren',
index ca11fb1..7b6712d 100644 (file)
             <span class="plus[% IF is_credit_remaining_negativ %]0[% ELSE %]1[% END %]">[% LxERP.format_amount(creditremaining,0 ,'0') %]</span>
           </td>
         </tr>
-[%- IF max_dunning_level %]
+[%- IF max_dunning_level || dunning_description  %]
         <tr>
-          <th align="right">[% 'Max. Dunning Level' | $T8 %]:</th>
-          <td>
-            <b>[% max_dunning_level %]</b>; [% 'Dunning Amount' | $T8 %]: <b>[% LxERP.format_amount(dunning_amount,2) %]</b>
+          <th align="right" valign="top">[% LxERP.t8("Dunning status") %]</th>
+          <td valign="top">
+           [% IF dunning_description %]
+            <span class="dunned_invoice">[% LxERP.t8("This invoice's dunning level: #1", dunning_description) %]</span>
+            [% IF max_dunning_level %]<br>[% END %]
+           [% END %]
+           [% IF max_dunning_level %]
+            <span class="customer_dunning_level">
+             [% LxERP.t8("Customer's current maximum dunning level: #1", max_dunning_level) %]
+             <br>
+             [% LxERP.t8("Dunned open amount: #1", LxERP.format_amount(dunning_amount, 2)) %]
+            </span>
+           [% END %]
           </td>
         </tr>
 [%- END %]