SEPA-Export: Überweisungen via SEPA - Feature Überweisungsdatum vorbelegen
authorJan Büren <jan@kivitendo.de>
Mon, 10 Sep 2018 19:23:04 +0000 (21:23 +0200)
committerJan Büren <jan@kivitendo.de>
Mon, 10 Sep 2018 19:23:04 +0000 (21:23 +0200)
Muss aktiv in der Mandantenkonfiguration (Feature -> SEPA) aktiviert werden.
Entweder wird ein vorhandenes Skontoziel als Ausführungsdatum an
die Bank/Export übergeben oder die Netto-Fälligkeit.
Skonto geht vor Netto. Bei beiden Verfahren wird ein Puffer
in Tagen (Standard 0) abgezogen.

SL/DB/MetaSetup/Default.pm
bin/mozilla/sepa.pl
doc/changelog
locale/de/all
sql/Pg-upgrade2/sepa_recommended_execution_date.sql [new file with mode: 0644]
templates/webpages/client_config/_features.html
templates/webpages/sepa/bank_transfer_create.html

index 8f052b6..d1f8db5 100644 (file)
@@ -126,6 +126,9 @@ __PACKAGE__->meta->columns(
   sdonumber                                 => { type => 'text' },
   sepa_creditor_id                          => { type => 'text' },
   sepa_reference_add_vc_vc_id               => { type => 'boolean', default => 'false' },
+  sepa_set_duedate_as_default_exec_date     => { type => 'boolean', default => 'false' },
+  sepa_set_skonto_date_as_default_exec_date => { type => 'boolean', default => 'false' },
+  sepa_set_skonto_date_buffer_in_days       => { type => 'integer', default => '0' },
   servicenumber                             => { type => 'text' },
   shipped_qty_fill_up                       => { type => 'boolean', default => 'true', not_null => 1 },
   shipped_qty_item_identity_fields          => { type => 'array', default => '{parts_id}', not_null => 1 },
index 36f2ff4..7218846 100755 (executable)
@@ -116,7 +116,21 @@ sub bank_transfer_create {
 
   # override default payment_type selection and set it to the one chosen by the user
   # in the previous step, so that we don't need the logic in the template
+  my $subtract_days   = $::instance_conf->get_sepa_set_skonto_date_buffer_in_days;
+  my $set_skonto_date = $::instance_conf->get_sepa_set_skonto_date_as_default_exec_date;
+  my $set_duedate     = $::instance_conf->get_sepa_set_duedate_as_default_exec_date;
   foreach my $bt (@bank_transfers) {
+    # add a good recommended exec date
+    # set to skonto date if exists or to duedate
+    # in both cases subtract the same buffer (if configured, default 0)
+    $bt->{recommended_execution_date} =
+      $set_skonto_date && $bt->{payment_type} eq 'with_skonto_pt' ?
+                   DateTime->from_kivitendo($bt->{skonto_date})->subtract(days => $subtract_days)->to_kivitendo
+   :  $set_duedate && $bt->{duedate}                              ?
+                   DateTime->from_kivitendo($bt->{duedate}    )->subtract(days => $subtract_days)->to_kivitendo
+   :  undef;
+
+
     foreach my $type ( @{$bt->{payment_select_options}} ) {
       if ( $type->{payment_type} eq $bt->{payment_type} ) {
         $type->{selected} = 1;
index b51f136..45aa518 100644 (file)
@@ -30,12 +30,16 @@ Kleinere neue Features und Detailverbesserungen:
   - Verknüpfte Belege um die Verknüpfung von Beleg nach E-Mail-Journal erweitert.
   - Filter nach Abteilungen für Lieferplan
   - Eindeutigkeit bei Rechnungsnummern von Kreditoren. (Es erfolgt eine  Warnung bei Duplikaten (Überprüfung auf Lieferant mit Rechnungsnummer))
-  - Mit SEPA-Export verknüpft Kreditorenbelege (Einkaufsrechnung oder Kreditorenbuchungen) können nicht mehr gelöscht oder storniert werden.
+  - Mit dem SEPA-Export verknüpfte Kreditorenbelege (Einkaufsrechnung oder Kreditorenbuchungen) können nicht mehr gelöscht oder storniert werden.
   - Tab "Belege" beim Kunden und Lieferanten. Offene Rechnungen, Aufträge
     werden angezeigt. Eine Umsatz und Mahnstatistik können in Tabs geöffnet
     werden. Belegtypen Angebote, Aufträge (Kunden), bzw Preisanfragen,
     Lieferantenaufträge (Lieferanten) sowie die Belege Rechnungen, Emails,
     Briefe können in weiteren Tabs angezeigt werden.
+  - SEPA-Export. Überweisungsdatum vorbelegen, entweder die Fälligkeit oder falls vorhanden das Skonto-Datum.
+    Das Skonto-Datum hat Priorität vor der letzten Fälligkeit.
+    Zusätzlich kann ein Puffer in Tagen vom Zahlungsziel abgezogen werden (Standard 0). Das Verhalten muss für jeden
+    Mandanten unter Mandantenkonfiguration -> Features -> SEPA aktiv eingeschaltet werden.
 
 Bugfixes:
 - Bugfix #336 Beim Drucken mehrerer Rechnung aus dem Bericht heraus mit aktiviertem DMS bricht mit Fehlermeldung ab
index 4811fde..f8ce2d6 100755 (executable)
@@ -1599,6 +1599,7 @@ $self->{texts} = {
   'Import result'               => 'Import-Ergebnis',
   'Import scanned documents'    => 'Importiere gescannte Dateien',
   'Importdate'                  => 'Importdatum',
+  'In addition to the above date functions, subtract the following amount of days from the calculated date as a buffer.' => 'Der folgende Puffer in Tagen wird von den beiden obigen vorausberechneten Daten abgezogen.',
   'In order to do that hit the button "Delete transaction".' => 'Drücken Sie dafür auf den Button "Buchung löschen".',
   'In order to migrate the old folder structure into the new structure you have to chose which client the old structure will be assigned to.' => 'Um die alte Ordnerstruktur in die neue Struktur zu migrieren, müssen Sie festlegen, welchem Mandanten die bisherige Struktur zugewiesen wird.',
   'In order to use kivitendo you have to create at least a client, a user and a group.' => 'Um kivitendo zu nutzen, müssen Sie mindestens einen Mandanten, einen Benutzer und eine Gruppe anlegen.',
@@ -2791,6 +2792,8 @@ $self->{texts} = {
   'Set fields'                  => 'Felder setzen',
   'Set lastcost'                => 'EK-Preis übernehmen',
   'Set sellprice'               => 'VK-Preis übernehmen',
+  'Set the invoice duedate as the default execution date for SEPA export.' => 'Das Fälligkeitsdatum des Belegs als Ausführungsdatum im SEPA-Export setzen.',
+  'Set the invoice skonto date (if exists) as the default execution date for SEPA export.' => 'Das Skonto-Datum des Belegs als Ausführungsdatum im SEPA-Export setzen. Hat Priorität vor dem Fälligkeitsdatum.',
   'Set to paid missing'         => 'Fehlbetrag setzen',
   'Settings'                    => 'Einstellungen',
   'Setup Menu'                  => 'Menü-Variante',
diff --git a/sql/Pg-upgrade2/sepa_recommended_execution_date.sql b/sql/Pg-upgrade2/sepa_recommended_execution_date.sql
new file mode 100644 (file)
index 0000000..af28a6a
--- /dev/null
@@ -0,0 +1,7 @@
+-- @tag: sepa_recommended_execution_date
+-- @description: Einstellung, ob bei SEPA Überweisungen zusätzlich die Lieferanten-/Kundennummer im Verwendungszweck angezeigt wird
+-- @depends: release_3_5_2
+
+ALTER TABLE defaults ADD COLUMN sepa_set_duedate_as_default_exec_date boolean DEFAULT FALSE;
+ALTER TABLE defaults ADD COLUMN sepa_set_skonto_date_as_default_exec_date boolean DEFAULT FALSE;
+ALTER TABLE defaults ADD COLUMN sepa_set_skonto_date_buffer_in_days integer DEFAULT 0;
index 1b685bd..045c542 100644 (file)
    <td align="right">[% LxERP.t8('Add Customer/Vendor Number as a reference add-on for SEPA export.') %]</td>
    <td>[% L.yes_no_tag('defaults.sepa_reference_add_vc_vc_id', SELF.defaults.sepa_reference_add_vc_vc_id) %]</td>
   </tr>
-
+  <tr>
+   <td align="right">[% LxERP.t8('Set the invoice duedate as the default execution date for SEPA export.') %]</td>
+   <td>[% L.yes_no_tag('defaults.sepa_set_duedate_as_default_exec_date', SELF.defaults.sepa_set_duedate_as_default_exec_date) %]</td>
+  </tr>
+  <tr>
+   <td align="right">[% LxERP.t8('Set the invoice skonto date (if exists) as the default execution date for SEPA export.') %]</td>
+   <td>[% L.yes_no_tag('defaults.sepa_set_skonto_date_as_default_exec_date', SELF.defaults.sepa_set_skonto_date_as_default_exec_date) %]</td>
+  </tr>
+  <tr>
+   <td align="right">[% LxERP.t8('In addition to the above date functions, subtract the following amount of days from the calculated date as a buffer.') %]</td>
+   <td>[% L.input_tag('defaults.sepa_set_skonto_date_buffer_in_days', LxERP.format_amount(SELF.defaults.sepa_set_skonto_date_buffer_in_days, 0), style=style) %]</td>
+  </tr>
   <tr><td class="listheading" colspan="4">[% LxERP.t8("Experimental Features") %]</td></tr>
   <tr>
    <td align="right">[% LxERP.t8('Enable experimental features') %]</td>
index 9e0aa87..0eab6ff 100644 (file)
       </td>
       <td align="left" [%- IF bank_transfer.within_skonto_period %]style="background-color: LightGreen"[%- END %]>[%- IF bank_transfer.skonto_amount %] [% LxERP.format_amount(bank_transfer.percent_skonto, 2) %] % = [% LxERP.format_amount(bank_transfer.skonto_amount, 2) %] € [% 'until' | $T8 %] [% bank_transfer.skonto_date %] [% END %]</td>
       <td nowrap>
-        [% L.date_tag('bank_transfers[].requested_execution_date', bank_transfer.requested_execution_date) %]
+        [% L.date_tag('bank_transfers[].requested_execution_date', bank_transfer.recommended_execution_date) %]
       </td>
      </tr>
     [%- END %]