GoBD: Bei unbalanced ledger Fehlern abbrechen und Fehler zeigen
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 4 Dec 2015 15:43:14 +0000 (16:43 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 28 Oct 2016 15:11:20 +0000 (17:11 +0200)
SL/Controller/GoBD.pm
SL/GoBD.pm
locale/de/all

index 463c6d7..a151adb 100644 (file)
@@ -35,6 +35,7 @@ sub action_export {
     return;
   }
 
+  my $filename;
   my $gobd = SL::GoBD->new(
     company    => $::instance_conf->get_company,
     location   => $::instance_conf->get_address,
@@ -42,7 +43,16 @@ sub action_export {
     to         => $self->to,
   );
 
-  my $filename = $gobd->generate_export;
+  eval {
+    $filename = $gobd->generate_export;
+  } or do {
+    my $errors = $@;
+    flash('error', t8('The export failed because of malformed transactions. Please fix those before exporting.'));
+
+    $::lxdebug->dump(0,  "GoBD errors:", \@$errors);
+    $self->action_filter;
+    return;
+  };
 
   $self->send_file($filename, name => t8('gobd-#1-#2.zip', $self->from->ymd, $self->to->ymd), unlink => 1);
 }
index e8a0558..2992b5f 100644 (file)
@@ -419,6 +419,10 @@ sub do_datev_csv_export {
 
   $datev->_get_transactions(from_to => $datev->fromto);
 
+  if ($datev->errors) {
+    die [ $datev->errors ];
+  }
+
   for my $transaction (@{ $datev->{DATEV} }) {
     for my $entry (@{ $transaction }) {
       $entry->{sortkey} = join '-', map { lc } (DateTime->from_kivitendo($entry->{transdate})->strftime('%Y%m%d'), $entry->{name}, $entry->{reference});
index 82715cf..b4038f0 100755 (executable)
@@ -2904,6 +2904,7 @@ $self->{texts} = {
   'The execution schedule is invalid.' => 'Der Ausführungszeitplan ist ungültig.',
   'The execution type is invalid.' => 'Der Ausführungstyp ist ungültig.',
   'The existing record has been created from the link target to add.' => 'Der bestehende Beleg wurde aus dem auszuwählenden Verknüpfungsziel erstellt.',
+  'The export failed because of malformed transactions. Please fix those before exporting.' => 'Es sind fehlerhafte Buchungen im Exportzeitraum vorhanden. Bitte korrigieren Sie diese vor dem Export.',
   'The factor is missing in row %d.' => 'Der Faktor fehlt in Zeile %d.',
   'The factor is missing.'      => 'Der Faktor fehlt.',
   'The file has been sent to the printer.' => 'Die Datei wurde an den Drucker geschickt.',