Bankauszug verbuchen invoice_amount vor pay-invoice
authorJan Büren <jan@kivitendo-premium.de>
Mon, 13 Jun 2016 14:37:55 +0000 (16:37 +0200)
committerJan Büren <jan@kivitendo-premium.de>
Mon, 13 Jun 2016 14:37:55 +0000 (16:37 +0200)
Die Reihenfolge der Verarbeitung des Bankausszugs ist jetzt
wichtig. Vorher wurde einfach der Betrag der gesamten Rechnung
abgezogen, jetzt ist es nur noch der offene Betrag, der nach
der Zahlungsverbuchung dann auf 0 ist. Deshalb vorher ...

SL/Controller/BankTransaction.pm

index 8b9ee20..7a944e6 100644 (file)
@@ -398,11 +398,7 @@ sub action_save_invoices {
       }
       # pay invoice or go to the next bank transaction if the amount is not sufficiently high
       if ($invoice->open_amount <= $amount_of_transaction) {
-        $invoice->pay_invoice(chart_id     => $bank_transaction->local_bank_account->chart_id,
-                              trans_id     => $invoice->id,
-                              amount       => $invoice->open_amount,
-                              payment_type => $payment_type,
-                              transdate    => $bank_transaction->transdate->to_kivitendo);
+        # first calculate new bank transaction amount ...
         if ($invoice->is_sales) {
           $amount_of_transaction -= $sign * $invoice->open_amount;
           $bank_transaction->invoice_amount($bank_transaction->invoice_amount + $invoice->open_amount);
@@ -410,6 +406,12 @@ sub action_save_invoices {
           $amount_of_transaction += $sign * $invoice->open_amount if (!$invoice->is_sales);
           $bank_transaction->invoice_amount($bank_transaction->invoice_amount - $invoice->open_amount);
         }
+        # ... and then pay the invoice
+        $invoice->pay_invoice(chart_id     => $bank_transaction->local_bank_account->chart_id,
+                              trans_id     => $invoice->id,
+                              amount       => $invoice->open_amount,
+                              payment_type => $payment_type,
+                              transdate    => $bank_transaction->transdate->to_kivitendo);
       } else {
         $invoice->pay_invoice(chart_id     => $bank_transaction->local_bank_account->chart_id,
                               trans_id     => $invoice->id,