Recommit von r1013 von udo_spallek: Reopend Bug 246: Buchungsjournal stellt Stornobuc...
[kivitendo-erp.git] / SL / DATEV.pm
index e48b4db..e0a0435 100644 (file)
@@ -256,10 +256,16 @@ sub get_transactions {
   $sth->execute || $form->dberror($query);
   $i = 0;
   $g = 0;
+  my $counter = 0;
   @splits;
   while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
     $count    = 0;
     $firstrun = 1;
+    $counter++;
+    if (($counter % 500) == 0) {
+      print("$counter ");
+    }
+
     $count += $ref->{amount};
     push @{$i}, $ref;
     while (abs($count) > 0.01 || $firstrun) {
@@ -308,16 +314,12 @@ sub get_transactions {
           $blubb{'amount'} =
             $form->round_amount(($i->[$j]->{'amount'} * $test * -1), 2);
 
-          #print(STDERR $test, " Taxrate\n\n");
           $blubb{'umsatz'} =
             abs($form->round_amount(($i->[$j]->{'amount'} * $test), 2)) * $ml;
 
           $i->[$j]->{'umsatz'} =
             abs($form->round_amount(($i->[$j]->{'amount'} * $test), 2)) * $ml;
 
-          #print(STDERR $i->[$j]->{'umsatz'}, " Steuer Umsatz\n");
-          #print(STDERR $i->[$j]->{'amount'}, " Steuer Betrag\n");
-          #print(STDERR $blubb{'umsatz'}, " Umsatz NOTSPLIT\n");
           push @{ $splits[$g] }, \%blubb;
           push @{ $splits[$g] }, $i->[$j];
           push @{ $form->{DATEV} }, \@{ $splits[$g] };
@@ -327,8 +329,7 @@ sub get_transactions {
         }
       }
       if (abs($absumsatz) > 0.01) {
-        print(STDERR $absumsatz, "ABSAUMSATZ\n");
-        $form->error("Datev-Export fehlgeschlagen!");
+        $form->error("Datev-Export fehlgeschlagen! Bei Transaktion $i->[0]->{trans_id}\n");
       }
     } else {
       push @{ $form->{DATEV} }, \@{$i};
@@ -588,12 +589,20 @@ sub kne_buchungsexport {
   my @ed_versionsets;
   my $fileno = 0;
 
+  $form->header;
+  print qq|
+  <html>
+  <body>Export in Bearbeitung<br>
+  Buchungss&auml;tze verarbeitet:
+|;
+
   $fromto =
     &get_dates($form->{zeitraum}, $form->{monat},
                $form->{quartal},  $form->{transdatefrom},
                $form->{transdateto});
   &get_transactions($myconfig, $form, $fromto);
-
+  my $counter = 0;
+  print qq|<br>2. Durchlauf:|;
   while (scalar(@{ $form->{DATEV} })) {
     my $blockcount      = 1;
     my $remaining_bytes = 256;
@@ -607,8 +616,13 @@ sub kne_buchungsexport {
     $remaining_bytes -= length($header);
 
     while (scalar(@{ $form->{DATEV} }) > 0) {
-      $transaction    = shift @{ $form->{DATEV} };
-      $trans_lines    = scalar(@{$transaction});
+      $transaction = shift @{ $form->{DATEV} };
+      $trans_lines = scalar(@{$transaction});
+      $counter++;
+      if (($counter % 500) == 0) {
+        print("$counter ");
+      }
+
       $umsatz         = 0;
       $gegenkonto     = "";
       $konto          = "";
@@ -629,8 +643,14 @@ sub kne_buchungsexport {
                   'ß' => 'sz');
 
       for (my $i = 0; $i < $trans_lines; $i++) {
-        if (abs($transaction->[$i]->{'umsatz'}) > abs($umsatz)) {
-          $umsatz = $transaction->[$i]->{'umsatz'};
+        if ($trans_lines == 2) {
+          if (abs($transaction->[$i]->{'amount'}) > abs($umsatz)) {
+            $umsatz = $transaction->[$i]->{'amount'};
+          }
+        } else {
+          if (abs($transaction->[$i]->{'umsatz'}) > abs($umsatz)) {
+            $umsatz = $transaction->[$i]->{'umsatz'};
+          }
         }
         if ($transaction->[$i]->{'datevautomatik'}) {
           $datevautomatik = 1;
@@ -809,6 +829,9 @@ sub kne_buchungsexport {
     print(EV $ed_versionset[$file]);
   }
   close(EV);
+  print qq|<br>Done. <br></body>
+</html>
+|;
   ###
   $main::lxdebug->leave_sub();
 }
@@ -842,8 +865,7 @@ sub kne_stammdatenexport {
     qq|SELECT c.accno, c.description FROM chart c WHERE c.accno >=|
     . $dbh->quote($form->{accnofrom}) . qq|
            AND c.accno <= |
-    . $dbh->quote($form->{accnoto})
-    . qq| ORDER BY c.accno|;
+    . $dbh->quote($form->{accnoto}) . qq| ORDER BY c.accno|;
 
   $sth = $dbh->prepare($query);
   $sth->execute || $form->dberror($query);