Bugfix #406 Fehlerhafte abzurechnende Werte, falls Gutschriften höher als Auftragswert
authorJan Büren <jan@kivitendo.de>
Tue, 12 Nov 2019 09:23:18 +0000 (10:23 +0100)
committerJan Büren <jan@kivitendo.de>
Tue, 12 Nov 2019 09:28:26 +0000 (10:28 +0100)
SL/OE.pm

index 1d06450..5665b04 100644 (file)
--- a/SL/OE.pm
+++ b/SL/OE.pm
@@ -377,8 +377,13 @@ SQL
   while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
     $ref->{billed_amount}    = $billed_amount{$ref->{id}};
     $ref->{billed_netamount} = $billed_netamount{$ref->{id}};
-    $ref->{remaining_amount} = $ref->{amount} - $ref->{billed_amount};
-    $ref->{remaining_netamount} = $ref->{netamount} - $ref->{billed_netamount};
+    if ($ref->{billed_amount} < 0) { # case: credit note(s) higher than invoices
+      $ref->{remaining_amount} = $ref->{amount} + $ref->{billed_amount};
+      $ref->{remaining_netamount} = $ref->{netamount} + $ref->{billed_netamount};
+    } else {
+      $ref->{remaining_amount} = $ref->{amount} - $ref->{billed_amount};
+      $ref->{remaining_netamount} = $ref->{netamount} - $ref->{billed_netamount};
+    }
     $ref->{exchangerate} = 1 unless $ref->{exchangerate};
     push @{ $form->{OE} }, $ref if $ref->{id} != $id{ $ref->{id} };
     $id{ $ref->{id} } = $ref->{id};