diff --git a/sale_force_invoiced/model/sale_order.py b/sale_force_invoiced/model/sale_order.py index 1cab4c96d61..3ef0e45cc75 100644 --- a/sale_force_invoiced/model/sale_order.py +++ b/sale_force_invoiced/model/sale_order.py @@ -24,6 +24,13 @@ def _compute_invoice_status(self): ) return res + @api.model + def write(self, vals): + res = super().write(vals) + if "force_invoiced" in vals: + self._compute_amount_to_invoice() + return res + class SaleOrderLine(models.Model): _inherit = "sale.order.line" diff --git a/sale_force_invoiced/tests/test_sale_force_invoiced.py b/sale_force_invoiced/tests/test_sale_force_invoiced.py index b69e5c79ef1..159a6ceca9a 100644 --- a/sale_force_invoiced/tests/test_sale_force_invoiced.py +++ b/sale_force_invoiced/tests/test_sale_force_invoiced.py @@ -40,12 +40,21 @@ def _create_product(self, name, product_ctg): def test_sales_order(self): so = self.sale_order_model.create({"partner_id": self.customer.id}) sol1 = self.sale_order_line_model.create( - {"product_id": self.service_1.id, "product_uom_qty": 1, "order_id": so.id} + { + "product_id": self.service_1.id, + "product_uom_qty": 1, + "order_id": so.id, + "price_unit": 1.0, + } ) sol2 = self.sale_order_line_model.create( - {"product_id": self.service_2.id, "product_uom_qty": 2, "order_id": so.id} + { + "product_id": self.service_2.id, + "product_uom_qty": 2, + "order_id": so.id, + "price_unit": 2.0, + } ) - # confirm quotation so.action_confirm() # update quantities delivered @@ -80,8 +89,17 @@ def test_sales_order(self): self.assertEqual( sol2.invoice_status, "invoiced", "The SOL invoice status should be Invoiced" ) - + self.assertEqual( + so.amount_to_invoice, + 0.0, + "Amount to invoice when invoice is forced should be 0", + ) so.force_invoiced = False self.assertEqual( so.invoice_status, "to invoice", "The invoice status should be To Invoice" ) + self.assertEqual( + so.amount_to_invoice, + 5.0, + "Amount to invoice when invoice is not forced should be original amount", + )