From bbdb7ed441253b0572535e293b58193dd4445a94 Mon Sep 17 00:00:00 2001 From: manu Date: Thu, 23 Jan 2025 09:59:58 +0100 Subject: [PATCH] [FIX]sale_advance_payment: Amount residual with signed invoice amount --- sale_advance_payment/models/sale.py | 4 ++- .../tests/test_sale_advance_payment.py | 30 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/sale_advance_payment/models/sale.py b/sale_advance_payment/models/sale.py index 965b37a4a96..9547889ed17 100644 --- a/sale_advance_payment/models/sale.py +++ b/sale_advance_payment/models/sale.py @@ -83,7 +83,9 @@ def _compute_advance_payment(self): # Consider payments in related invoices. invoice_paid_amount = 0.0 for inv in order.invoice_ids: - invoice_paid_amount += inv.amount_total - inv.amount_residual + invoice_paid_amount += ( + inv.amount_total_signed - inv.amount_residual_signed + ) amount_residual = order.amount_total - advance_amount - invoice_paid_amount payment_state = "not_paid" inv_currency = order.currency_id or self.env.company.currency_id diff --git a/sale_advance_payment/tests/test_sale_advance_payment.py b/sale_advance_payment/tests/test_sale_advance_payment.py index ae9ffd72012..8a55c50a9f2 100644 --- a/sale_advance_payment/tests/test_sale_advance_payment.py +++ b/sale_advance_payment/tests/test_sale_advance_payment.py @@ -377,3 +377,33 @@ def test_03_residual_amount_big_pre_payment(self): self.assertEqual(invoice.amount_residual, 0.0) self.assertEqual(self.sale_order_1.amount_residual, 1600) self.assertEqual(invoice.amount_residual, 0) + + def test_04_residual_amount_credit_note(self): + self.sale_order_1.action_confirm() + self.sale_order_1._create_invoices() + invoice = self.sale_order_1.invoice_ids[0] + invoice.invoice_date = fields.Date.today() + invoice.action_post() + self.env["account.payment.register"].with_context( + active_model="account.move", active_ids=invoice.ids + ).create( + { + "amount": 3600.0, + "group_payment": True, + "payment_difference_handling": "open", + } + )._create_payments() + self.assertEqual(self.sale_order_1.amount_residual, 0) + credit_note = invoice._reverse_moves() + credit_note.invoice_date = fields.Date.today() + credit_note.action_post() + self.env["account.payment.register"].with_context( + active_model="account.move", active_ids=credit_note.ids + ).create( + { + "amount": 3600.0, + "group_payment": True, + "payment_difference_handling": "open", + } + )._create_payments() + self.assertEqual(self.sale_order_1.amount_residual, 3600)