diff --git a/subscription_oca/models/sale_subscription.py b/subscription_oca/models/sale_subscription.py index 114db35968..d35da1ee5e 100644 --- a/subscription_oca/models/sale_subscription.py +++ b/subscription_oca/models/sale_subscription.py @@ -453,7 +453,8 @@ def write(self, values): if record.stage_id.type == "in_progress": record.in_progress = True today = date.today() - record.date_start = today + if not record.date_start: + record.date_start = today record.calculate_recurring_next_date(today) elif record.stage_id.type == "post": record.close_reason_id = values.get("close_reason_id", False) diff --git a/subscription_oca/tests/test_subscription_oca.py b/subscription_oca/tests/test_subscription_oca.py index 0d9ca7afca..5a395a5530 100644 --- a/subscription_oca/tests/test_subscription_oca.py +++ b/subscription_oca/tests/test_subscription_oca.py @@ -130,6 +130,12 @@ def setUpClass(cls): "type": "pre", } ) + cls.stage_3 = cls.env["sale.subscription.stage"].create( + { + "name": "Test Sub Stage 3 in progress", + "type": "in_progress", + } + ) cls.tag = cls.env["sale.subscription.tag"].create( { "name": "Test Tag", @@ -631,6 +637,12 @@ def test_open_subscription(self): action = invoice.action_open_subscription() self.assertEqual(action["res_id"], self.sub1.id) + def test_subscription_oca_date_start(self): + self.sub6.write({"stage_id": self.stage_3}) + self.assertEqual(fields.Date.to_string(self.sub6.date_start), "2099-01-01") + self.sub3.write({"stage_id": self.stage_3}) + self.assertEqual(self.sub3.date_start, fields.Date.today()) + def _collect_all_sub_test_results(self, subscription): """Creates the invoice of a subscription and returns its data :param subscription: subscription to invoice