Kosmetik; Variablen lokal deklarieren.
authorMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 5 Sep 2008 10:33:22 +0000 (10:33 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 5 Sep 2008 10:33:22 +0000 (10:33 +0000)
SL/DATEV.pm

index fb11d58..1484b1d 100644 (file)
@@ -216,16 +216,21 @@ sub get_dates {
   return $fromto;
 }
 
-sub get_transactions {
+sub _get_transactions {
   $main::lxdebug->enter_sub();
 
-  my $dbh = $form->get_standard_dbh($myconfig);
+  my $fromto   =  shift;
 
-  $fromto =~ s/transdate/ac\.transdate/g;
+  my $myconfig =  \%main::myconfig;
+  my $form     =  $main::form;
 
-  my %taxes = selectall_as_map($form, $dbh, qq|SELECT id, rate FROM tax|, 'id', 'rate');
+  my $dbh      =  $form->get_standard_dbh($myconfig);
 
-  my $query =
+  $fromto      =~ s/transdate/ac\.transdate/g;
+
+  my %taxes    =  selectall_as_map($form, $dbh, qq|SELECT id, rate FROM tax|, 'id', 'rate');
+
+  my $query    =
     qq|SELECT ac.oid, ac.transdate, ac.trans_id,ar.id, ac.amount, ac.taxkey,
          ar.invnumber, ar.duedate, ar.amount as umsatz,
          ct.name,
@@ -268,91 +273,92 @@ sub get_transactions {
 
        ORDER BY trans_id, oid|;
 
-  my $sth = prepare_execute_query($form, $dbh, $query);
+  my $sth     = prepare_execute_query($form, $dbh, $query);
 
-  $i = 0;
-  $g = 0;
+  my $g       = 0;
   my $counter = 0;
   my @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;
+    my $i        = [ $ref ];
+
+    my $count    = $ref->{amount};
+    my $firstrun = 1;
+
     while (abs($count) > 0.01 || $firstrun) {
-      $ref2 = $sth->fetchrow_hashref(NAME_lc);
+      my $ref2 = $sth->fetchrow_hashref(NAME_lc);
       last unless ($ref2);
-      $count += $ref2->{amount};
+
       push @{$i}, $ref2;
-      $firstrun = 0;
+
+      $count    += $ref2->{amount};
+      $firstrun  = 0;
     }
+
     my %taxid_taxkeys = ();
-    $absumsatz = 0;
-    if (scalar(@{$i}) > 2) {
-      for my $j (0 .. (scalar(@{$i}) - 1)) {
-        if (abs($i->[$j]->{'amount'}) > abs($absumsatz)) {
-          $absumsatz     = $i->[$j]->{'amount'};
-          $notsplitindex = $j;
-        }
-        if (($i->[$j]->{'taxtaxkey'}) && ($i->[$j]->{'taxid'})) {
-          $taxid_taxkeys{$i->[$j]->{'taxtaxkey'}}     = $i->[$j]->{'taxid'};
-        }
-      }
-      $ml = ($i->[0]->{'umsatz'} > 0) ? 1 : -1;
-      for my $j (0 .. (scalar(@{$i}) - 1)) {
-        if (   ($j != $notsplitindex)
-            && ($i->[$j]->{'chart_id'}  eq "")
-            && (   $i->[$j]->{'taxkey'} eq ""
-                || $i->[$j]->{'taxkey'} eq "0"
-                || $i->[$j]->{'taxkey'} eq "1"
-                || $i->[$j]->{'taxkey'} eq "10"
-                || $i->[$j]->{'taxkey'} eq "11")) {
-          my %blubb = {};
-          map({ $blubb{$_} = $i->[$notsplitindex]->{$_}; } keys(%{ $i->[$notsplitindex] }));
-
-          $absumsatz           += $i->[$j]->{'amount'};
-          $blubb{'amount'}      = $i->[$j]->{'amount'} * (-1);
-          $blubb{'umsatz'}      = abs($i->[$j]->{'amount'}) * $ml;
-          $i->[$j]->{'umsatz'}  = abs($i->[$j]->{'amount'}) * $ml;
-
-          push @{ $splits[$g] }, \%blubb;    #$i->[$notsplitindex];
-          push @{ $splits[$g] }, $i->[$j];
-          push @{ $form->{DATEV} }, \@{ $splits[$g] };
-
-          $g++;
-
-        } elsif (($j != $notsplitindex) && ($i->[$j]->{'chart_id'} eq "")) {
-          $absumsatz += ($i->[$j]->{'amount'} * (1 + $taxes{ $taxid_taxkeys{$i->[$j]->{'taxkey'}} }));
-
-          my %blubb   = {};
-          map({ $blubb{$_} = $i->[$notsplitindex]->{$_}; } keys(%{ $i->[$notsplitindex] }));
-
-          $test                = 1 + $taxes{  $taxid_taxkeys{$i->[$j]->{'taxkey'}} };
-          $blubb{'amount'}     = $form->round_amount(($i->[$j]->{'amount'} * $test * -1), 2);
-          $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;
-
-          push @{ $splits[$g] }, \%blubb;
-          push @{ $splits[$g] }, $i->[$j];
-          push @{ $form->{DATEV} }, \@{ $splits[$g] };
-          $g++;
+    my $absumsatz     = 0;
+    if (scalar(@{$i}) <= 2) {
+      push @{ $form->{DATEV} }, \@{$i};
+      next;
+    }
 
-        } else {
-          next;
-        }
+    for my $j (0 .. (scalar(@{$i}) - 1)) {
+      if (abs($i->[$j]->{'amount'}) > abs($absumsatz)) {
+        $absumsatz     = $i->[$j]->{'amount'};
+        $notsplitindex = $j;
       }
-      if (abs($absumsatz) > 0.01) {
-        $form->error("Datev-Export fehlgeschlagen! Bei Transaktion $i->[0]->{trans_id} $absumsatz\n");
+      if (($i->[$j]->{'taxtaxkey'}) && ($i->[$j]->{'taxid'})) {
+        $taxid_taxkeys{$i->[$j]->{'taxtaxkey'}}     = $i->[$j]->{'taxid'};
       }
-    } else {
-      push @{ $form->{DATEV} }, \@{$i};
     }
-    $i++;
+    $ml = ($i->[0]->{'umsatz'} > 0) ? 1 : -1;
+    for my $j (0 .. (scalar(@{$i}) - 1)) {
+      if (   ($j != $notsplitindex)
+          && ($i->[$j]->{'chart_id'}  eq "")
+          && (   $i->[$j]->{'taxkey'} eq ""
+              || $i->[$j]->{'taxkey'} eq "0"
+              || $i->[$j]->{'taxkey'} eq "1"
+              || $i->[$j]->{'taxkey'} eq "10"
+              || $i->[$j]->{'taxkey'} eq "11")) {
+        my %blubb = {};
+        map({ $blubb{$_} = $i->[$notsplitindex]->{$_}; } keys(%{ $i->[$notsplitindex] }));
+
+        $absumsatz           += $i->[$j]->{'amount'};
+        $blubb{'amount'}      = $i->[$j]->{'amount'} * (-1);
+        $blubb{'umsatz'}      = abs($i->[$j]->{'amount'}) * $ml;
+        $i->[$j]->{'umsatz'}  = abs($i->[$j]->{'amount'}) * $ml;
+
+        push @{ $splits[$g] }, \%blubb;    #$i->[$notsplitindex];
+        push @{ $splits[$g] }, $i->[$j];
+        push @{ $form->{DATEV} }, \@{ $splits[$g] };
+
+        $g++;
+
+      } elsif (($j != $notsplitindex) && ($i->[$j]->{'chart_id'} eq "")) {
+        $absumsatz += ($i->[$j]->{'amount'} * (1 + $taxes{ $taxid_taxkeys{$i->[$j]->{'taxkey'}} }));
+
+        my %blubb   = {};
+        map({ $blubb{$_} = $i->[$notsplitindex]->{$_}; } keys(%{ $i->[$notsplitindex] }));
+
+        $test                = 1 + $taxes{  $taxid_taxkeys{$i->[$j]->{'taxkey'}} };
+        $blubb{'amount'}     = $form->round_amount(($i->[$j]->{'amount'} * $test * -1), 2);
+        $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;
+
+        push @{ $splits[$g] }, \%blubb;
+        push @{ $splits[$g] }, $i->[$j];
+        push @{ $form->{DATEV} }, \@{ $splits[$g] };
+        $g++;
+      }
+    }
+
+    if (abs($absumsatz) > 0.01) {
+      $form->error("Datev-Export fehlgeschlagen! Bei Transaktion $i->[0]->{trans_id} $absumsatz\n");
+    }
   }
   $sth->finish;
   $dbh->disconnect;
@@ -620,7 +626,7 @@ sub kne_buchungsexport {
     &get_dates($form->{zeitraum}, $form->{monat},
                $form->{quartal},  $form->{transdatefrom},
                $form->{transdateto});
-  &get_transactions($myconfig, $form, $fromto);
+  _get_transactions($fromto);
   my $counter = 0;
   print qq|<br>2. Durchlauf:|;
   while (scalar(@{ $form->{DATEV} })) {