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 ...
}
# pay invoice or go to the next bank transaction if the amount is not sufficiently high
if ($invoice->open_amount <= $amount_of_transaction) {
}
# 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);
if ($invoice->is_sales) {
$amount_of_transaction -= $sign * $invoice->open_amount;
$bank_transaction->invoice_amount($bank_transaction->invoice_amount + $invoice->open_amount);
$amount_of_transaction += $sign * $invoice->open_amount if (!$invoice->is_sales);
$bank_transaction->invoice_amount($bank_transaction->invoice_amount - $invoice->open_amount);
}
$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,
} else {
$invoice->pay_invoice(chart_id => $bank_transaction->local_bank_account->chart_id,
trans_id => $invoice->id,