DATEV-Export: Brutto/Brutto-Abweichungen summieren und Erklärung anzeigen, falls...
authorMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 5 Feb 2010 13:23:37 +0000 (14:23 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 5 Feb 2010 16:03:51 +0000 (17:03 +0100)
SL/DATEV.pm
bin/mozilla/datev.pl
templates/webpages/datev/net_gross_difference_de.html [new file with mode: 0644]
templates/webpages/datev/net_gross_difference_master.html [new file with mode: 0644]

index 56c3e82..49e824b 100644 (file)
@@ -330,6 +330,9 @@ sub _get_transactions {
   my ($notsplitindex);
   my @errors   = ();
 
+  $form->{net_gross_differences}     = [];
+  $form->{sum_net_gross_differences} = 0;
+
   $fromto      =~ s/transdate/ac\.transdate/g;
 
   my $taxkeys  = Taxkeys->new();
@@ -535,8 +538,13 @@ sub _get_transactions {
       $idx++;
     }
 
-    if (abs($absumsatz) >= 0.01) {
-      push @errors, "Datev-Export fehlgeschlagen! Bei Transaktion $trans->[0]->{trans_id} ($absumsatz, Rundungsfehler $rounding_error)\n";
+    $absumsatz = $form->round_amount($absumsatz, 2);
+    if (abs($absumsatz) >= (0.01 * (1 + scalar @taxed))) {
+      push @errors, "Datev-Export fehlgeschlagen! Bei Transaktion $trans->[0]->{trans_id} ($absumsatz)\n";
+
+    } elsif (abs($absumsatz) >= 0.01) {
+      push @{ $form->{net_gross_differences} }, $absumsatz;
+      $form->{sum_net_gross_differences} += $absumsatz;
     }
   }
 
index 9f758b0..4ada35f 100644 (file)
@@ -363,6 +363,8 @@ sub export3 {
 
       print(qq|<br><b>| . $locale->text('KNE-Export erfolgreich!') . qq|</b><br><br><a href="$link">Download</a>|);
 
+      print $form->parse_html_template('datev/net_gross_difference') if @{ $form->{net_gross_differences} };
+
     } else {
       $form->error("KNE-Export schlug fehl.");
     }
diff --git a/templates/webpages/datev/net_gross_difference_de.html b/templates/webpages/datev/net_gross_difference_de.html
new file mode 100644 (file)
index 0000000..98e963e
--- /dev/null
@@ -0,0 +1,27 @@
+[% USE HTML %][% USE LxERP %]
+
+<p>
+ <b>Hinweis:</b>
+</p>
+
+<p>
+ Lx-Office speichert Buchungsdaten als aggregierte Nettowerte.
+
+ Das DATEV-Dateiformat hingegen erwartet aufgeteilte Buchungssätze mit
+ Bruttowerten.
+
+ Es ist deshalb technisch nicht immer möglich, aus den vorhandenen
+ aggregierten Nettowerten solche Bruttowerte zu errechnen, sodass für
+ einen Beleg betrachtet die von Lx-Office angezeigten und die in den
+ DATEV-Export geschriebenen Bruttowerte exakt übereinstimmen.
+
+ Abweichungen im Cent-Bereich sind in beide Richtungen möglich (Brutto
+ Lx-Office ist größer als Brutto DATEV und umgekehrt), werden aber von
+ den Steuerbehörden anstandslos akzeptiert.
+</p>
+
+<p>
+ In dem gerade durchgeführten Export gab es [% net_gross_differences.size %]
+ solcher Fälle. Die Summe aller Abweichungen beläuft sich auf
+ [% LxERP.format_amount(sum_net_gross_differences, 2) %].
+</p>
diff --git a/templates/webpages/datev/net_gross_difference_master.html b/templates/webpages/datev/net_gross_difference_master.html
new file mode 100644 (file)
index 0000000..98e963e
--- /dev/null
@@ -0,0 +1,27 @@
+[% USE HTML %][% USE LxERP %]
+
+<p>
+ <b>Hinweis:</b>
+</p>
+
+<p>
+ Lx-Office speichert Buchungsdaten als aggregierte Nettowerte.
+
+ Das DATEV-Dateiformat hingegen erwartet aufgeteilte Buchungssätze mit
+ Bruttowerten.
+
+ Es ist deshalb technisch nicht immer möglich, aus den vorhandenen
+ aggregierten Nettowerten solche Bruttowerte zu errechnen, sodass für
+ einen Beleg betrachtet die von Lx-Office angezeigten und die in den
+ DATEV-Export geschriebenen Bruttowerte exakt übereinstimmen.
+
+ Abweichungen im Cent-Bereich sind in beide Richtungen möglich (Brutto
+ Lx-Office ist größer als Brutto DATEV und umgekehrt), werden aber von
+ den Steuerbehörden anstandslos akzeptiert.
+</p>
+
+<p>
+ In dem gerade durchgeführten Export gab es [% net_gross_differences.size %]
+ solcher Fälle. Die Summe aller Abweichungen beläuft sich auf
+ [% LxERP.format_amount(sum_net_gross_differences, 2) %].
+</p>