A5 sollte als Papiergröße ebenfalls funktionieren.
[kivitendo-erp.git] / SL / AR.pm
index 926a1b6..5fc6032 100644 (file)
--- a/SL/AR.pm
+++ b/SL/AR.pm
@@ -411,7 +411,8 @@ sub ar_transactions {
     qq|SELECT a.id, a.invnumber, a.ordnumber, a.transdate, | .
     qq|  a.duedate, a.netamount, a.amount, a.paid, | .
     qq|  a.invoice, a.datepaid, a.terms, a.notes, a.shipvia, | .
-    qq|  a.shippingpoint, a.storno, a.globalproject_id, | .
+    qq|  a.shippingpoint, a.storno, a.storno_id, a.globalproject_id, | .
+    qq|  a.marge_total, a.marge_percent, | .
     qq|  a.transaction_description, | .
     qq|  pr.projectnumber AS globalprojectnumber, | .
     qq|  c.name, | .
@@ -634,7 +635,7 @@ sub storno {
   $storno_row->{invnumber}  = 'Storno-' . $storno_row->{invnumber};
   $storno_row->{amount}    *= -1;
   $storno_row->{netamount} *= -1;
-  $storno_row->{paid}       = $storno_amount->{amount};
+  $storno_row->{paid}       = $storno_row->{amount};
 
   delete @$storno_row{qw(itime mtime)};
 
@@ -645,9 +646,16 @@ sub storno {
   do_query($form, $dbh, $query, $id);
 
   # now copy acc_trans entries
-  $query = qq|SELECT * FROM acc_trans WHERE trans_id = ?|;
-  for my $row (@{ selectall_hashref_query($form, $dbh, $query, $id) }) {
-    delete @$row{qw(itime mtime)};
+  $query = qq|SELECT a.*, c.link FROM acc_trans a LEFT JOIN chart c ON a.chart_id = c.id WHERE a.trans_id = ? ORDER BY a.oid|;
+  my $rowref = selectall_hashref_query($form, $dbh, $query, $id); 
+
+  # kill all entries containing payments, which are the last 2n rows, of which the last has link =~ /paid/
+  while ($rowref->[-1]{link} =~ /paid/) {
+    splice(@$rowref, -2);
+  }
+
+  for my $row (@$rowref) {
+    delete @$row{qw(itime mtime link)};
     $query = sprintf 'INSERT INTO acc_trans (%s) VALUES (%s)', join(', ', keys %$row), join(', ', map '?', values %$row);
     $row->{trans_id}   = $new_id;
     $row->{amount}    *= -1;