diff --git a/purchase_blanket_order/models/blanket_orders.py b/purchase_blanket_order/models/blanket_orders.py index fe6c9cd1f0a..ee6f848ff7d 100644 --- a/purchase_blanket_order/models/blanket_orders.py +++ b/purchase_blanket_order/models/blanket_orders.py @@ -275,11 +275,15 @@ def set_to_draft(self): def action_confirm(self): self._validate() for order in self: - sequence_obj = self.env["ir.sequence"] - if order.company_id: - sequence_obj = sequence_obj.with_company(order.company_id) - name = sequence_obj.next_by_code("purchase.blanket.order") - order.write({"confirmed": True, "name": name}) + vals = {"confirmed": True} + # Set name by sequence only if is necessary + if order.name == _("Draft"): + sequence_obj = self.env["ir.sequence"] + if order.company_id: + sequence_obj = sequence_obj.with_company(order.company_id) + name = sequence_obj.next_by_code("purchase.blanket.order") or _("Draft") + vals.update({"name": name}) + order.write(vals) return True def action_cancel(self): diff --git a/purchase_blanket_order/tests/test_purchase_blanket_order.py b/purchase_blanket_order/tests/test_purchase_blanket_order.py index b614dfb67b8..dbb9f2259e0 100644 --- a/purchase_blanket_order/tests/test_purchase_blanket_order.py +++ b/purchase_blanket_order/tests/test_purchase_blanket_order.py @@ -89,13 +89,17 @@ def test_01_create_blanket_order_flow(self): blanket_order.sudo().action_confirm() blanket_order.validity_date = fields.Date.to_string(self.tomorrow) + initial_name = blanket_order.name blanket_order.sudo().action_confirm() + self.assertNotEqual(initial_name, blanket_order.name) blanket_order.sudo().action_cancel() self.assertEqual(blanket_order.state, "expired") blanket_order.sudo().set_to_draft() self.assertEqual(blanket_order.state, "draft") + previous_name = blanket_order.name blanket_order.sudo().action_confirm() + self.assertEqual(previous_name, blanket_order.name) self.assertEqual(blanket_order.state, "open") blanket_order.action_view_purchase_blanket_order_line()