ZUGFeRD: Test-Modus über Mandantenkonfiguration konfigurierbar gemacht
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 3 Mar 2020 10:27:59 +0000 (11:27 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 3 Mar 2020 10:27:59 +0000 (11:27 +0100)
SL/DB/Helper/ZUGFeRD.pm
SL/DB/MetaSetup/Default.pm
locale/de/all
sql/Pg-upgrade2/defaults_zugferd_test_mode.sql [new file with mode: 0644]
templates/webpages/client_config/_features.html

index b129de4..ae64c79 100644 (file)
@@ -298,9 +298,12 @@ sub _exchanged_document_context {
 
   #   <rsm:ExchangedDocumentContext>
   $params{xml}->startTag("rsm:ExchangedDocumentContext");
-  $params{xml}->startTag("ram:TestIndicator");
-  $params{xml}->dataElement("udt:Indicator", "true"); # TODO: change to 'false'
-  $params{xml}->endTag;
+
+  if ($::instance_conf->get_create_zugferd_invoices == 2) {
+    $params{xml}->startTag("ram:TestIndicator");
+    $params{xml}->dataElement("udt:Indicator", "true");
+    $params{xml}->endTag;
+  }
 
   $params{xml}->startTag("ram:GuidelineSpecifiedDocumentContextParameter");
   $params{xml}->dataElement("ram:ID", "urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended");
index cccd690..76373ea 100644 (file)
@@ -41,7 +41,7 @@ __PACKAGE__->meta->columns(
   coa                                       => { type => 'text' },
   company                                   => { type => 'text' },
   create_part_if_not_found                  => { type => 'boolean', default => 'false' },
-  create_zugferd_invoices                   => { type => 'boolean' },
+  create_zugferd_invoices                   => { type => 'integer' },
   currency_id                               => { type => 'integer', not_null => 1 },
   customer_hourly_rate                      => { type => 'numeric', precision => 8, scale => 2 },
   customer_projects_only_in_sales           => { type => 'boolean', default => 'false', not_null => 1 },
index e6d43d4..87df282 100755 (executable)
@@ -710,6 +710,8 @@ $self->{texts} = {
   'Create Date'                 => 'Erstelldatum',
   'Create HTML'                 => 'HTML erzeugen',
   'Create PDF'                  => 'PDF erzeugen',
+  'Create ZUGFeRD invoices'     => 'ZUGFeRD-Rechnungen erzeugen',
+  'Create ZUGFeRD invoices in test mode' => 'ZUGFeRD-Rechnungen im Testmodus erzeugen',
   'Create a new background job' => 'Einen neuen Hintergrund-Job anlegen',
   'Create a new client'         => 'Einen neuen Mandanten anlegen',
   'Create a new delivery term'  => 'Neue Lieferbedingungen anlegen',
@@ -1032,6 +1034,7 @@ $self->{texts} = {
   'Displayable Name Preferences' => 'Einstellungen für Anzeigenamen',
   'Do not change the tax rate of taxkey 0.' => 'Ändern Sie nicht den Steuersatz vom Steuerschlüssel 0.',
   'Do not check for duplicates' => 'Nicht nach Dubletten suchen',
+  'Do not create ZUGFeRD invoices' => 'Keine ZUGFeRD-Rechnungen erzeugen',
   'Do not link to a project.'   => 'Nicht mit einem Projekt verknüpfen.',
   'Do not modify this position' => 'Diese Position nicht verändern',
   'Do not run the task server for this client' => 'Task-Server nicht für diesen Mandanten ausführen',
@@ -1586,7 +1589,7 @@ $self->{texts} = {
   'If disabled purchase invoices can only be created by conversion from existing requests for quotations, purchase orders and purchase delivery orders.' => 'Falls deaktiviert, so können Einkaufsrechnungen nur durch Umwandlung aus bestehenden Preisanfragen, Lieferantenaufträgen und Einkaufslieferscheinen angelegt werden.',
   'If disabled sales orders cannot be converted into sales invoices directly.' => 'Falls deaktiviert, so können Verkaufsaufträge nicht direkt in Verkaufsrechnungen umgewandelt werden.',
   'If disabled sales quotations cannot be converted into sales invoices directly.' => 'Falls deaktiviert, so können Verkaufsangebote nicht direkt in Verkaufsrechnungen umgewandelt werden.',
-  'If enabled ZUGFeRD-conformant sales invoice PDFs will be create.' => 'Falls aktiviert, werden ZUGFeRD-konforme PDFs für Verkaufsrechnungen erzeugt.',
+  'If enabled ZUGFeRD-conformant sales invoice PDFs will be created.' => 'Falls aktiviert, werden ZUGFeRD-konforme PDFs für Verkaufsrechnungen erzeugt.',
   'If enabled a column will be shown in sales and purchase orders that lists both the amount and the value not shipped yet for each item.' => 'Falls eingeschaltet, wird für jede Position in Auftragsbestätigungen und Lieferantenaufträgen eine Spalte mit noch nicht gelieferter Menge und Wert angezeigt.',
   'If enabled a warning will be shown in sales and purchase orders if there are two or more positions of the same part (new controller only).' => 'Falls eingeschaltet, wird eine Warnung angezeigt, wenn der Auftrag mehrere gleiche Artikel enthält (nur neuer Controller).',
   'If enabled a warning will be shown in sales and purchase orders if there the delivery date is empty.' => 'Falls aktiviert, Warnungen ausgeben sobald Aufträge (Einkauf- und Verkauf) keinen Liefertermin haben.',
@@ -1601,6 +1604,7 @@ $self->{texts} = {
   'If the counted quantity differs more than this threshold from the quantity in the database, a warning will be shown. Set to 0 to switch of this feature.' => 'Wenn die gezählte Menge mehr als diesen Schwellenwert von der Menge in der Datenbank abweicht, wird eine Warnmeldung angezeigt. Setzen Sie den Schwellenwert auf 0, um dieses Feature abzuschalten.',
   'If the database user listed above does not have the right to create a database then enter the name and password of the superuser below:' => 'Falls der oben genannte Datenbankbenutzer nicht die Berechtigung zum Anlegen neuer Datenbanken hat, so können Sie hier den Namen und das Passwort des Datenbankadministratoraccounts angeben:',
   'If the default transfer out always succeed use this bin for negative stock quantity.' => 'Standardlagerplatz für Auslagern ohne Prüfung auf Bestand',
+  'If the test mode is enabled, the ZUGFeRD invoices will be flagged so that they\'re only fit to be used for testing purposes.' => 'Wenn der Testmodus aktiviert ist, werden ZUGFeRD-Rechnungen so markiert, dass sie nur für Testzwecke dienen dürfen.',
   'If yes, delivery order positions are considered "delivered" only if they have been stocked out of the inventory. Otherwise saving the delivery order is considered delivered.' => 'Wenn diese Option aktiviert ist, gelten Lieferscheinpositionen nur dann als geliefert wenn sie im Lieferschein ausgelagert wurden, und die Ware aus dem Lager ausgebucht wurde. Andernfalls gilt das Speichern des Lieferscheins als Lieferung.',
   'If you enter values for the part number and / or part description then only those bins containing parts whose part number or part description match your input will be shown.' => 'Wenn Sie für die Artikelnummer und / oder die Beschreibung etwas eingeben, so werden nur die Lagerplätze angezeigt, in denen Waren eingelagert sind, die Ihre Suchbegriffe enthalten.',
   'If you have not chosen for example the category revenue for a tax and you choose an revenue account to create a transfer in the general ledger, this tax will not be displayed in the tax dropdown.' => 'Wenn Sie z.B. die Kategory Erlös für eine Steuer nicht gewählt haben und ein Erlöskonto beim Erstellen einer Dialogbuchung wählen, wird diese Steuer auch nicht im Dropdown-Menü für die Steuern angezeigt.',
diff --git a/sql/Pg-upgrade2/defaults_zugferd_test_mode.sql b/sql/Pg-upgrade2/defaults_zugferd_test_mode.sql
new file mode 100644 (file)
index 0000000..924b3df
--- /dev/null
@@ -0,0 +1,6 @@
+-- @tag: defaults_zugferd_test_mode
+-- @description: ZUGFeRD optional nur im Test-Modus
+-- @depends: defaults_create_zugferd_data
+ALTER TABLE defaults
+ALTER COLUMN create_zugferd_invoices TYPE INTEGER
+USING create_zugferd_invoices::INTEGER;
index 349ada0..c868571 100644 (file)
   </tr>
   <tr>
    <td align="right">[% LxERP.t8("Create sales invoices with ZUGFeRD data") %]</td>
-   <td>[% L.yes_no_tag("defaults.create_zugferd_invoices", SELF.defaults.create_zugferd_invoices) %]</td>
-   <td>[% LxERP.t8("If enabled ZUGFeRD-conformant sales invoice PDFs will be create.") %]</td>
+   <td>[% L.select_tag("defaults.create_zugferd_invoices", [ [ 0, LxERP.t8('Do not create ZUGFeRD invoices') ], [ 1, LxERP.t8('Create ZUGFeRD invoices') ], [ 2, LxERP.t8('Create ZUGFeRD invoices in test mode') ] ],
+                       default=SELF.defaults.create_zugferd_invoices) %]</td>
+   <td>
+     [% LxERP.t8("If enabled ZUGFeRD-conformant sales invoice PDFs will be created.") %]
+     [% LxERP.t8("If the test mode is enabled, the ZUGFeRD invoices will be flagged so that they're only fit to be used for testing purposes.") %]
+   </td>
   </tr>
 
   <tr><td class="listheading" colspan="4">[% LxERP.t8("E-mail") %]</td></tr>