}
# 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);
$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,