From 9145184622d71a035a17916d023504a2082928b2 Mon Sep 17 00:00:00 2001 From: Alicia Garzo Moreno Date: Mon, 15 Apr 2024 20:04:57 +0200 Subject: [PATCH] [17.0][IMP] contract: solve error for last_date_invoiced field --- contract/models/contract.py | 1 + contract/tests/test_contract.py | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/contract/models/contract.py b/contract/models/contract.py index acd00af63..3c6c54f71 100644 --- a/contract/models/contract.py +++ b/contract/models/contract.py @@ -516,6 +516,7 @@ class ContractContract(models.Model): not contract_line.is_canceled and contract_line.recurring_next_date and contract_line.recurring_next_date <= date_ref + and contract_line.next_period_date_start ) lines2invoice = previous = self.env["contract.line"] diff --git a/contract/tests/test_contract.py b/contract/tests/test_contract.py index b97c7266d..77e8f5c2a 100644 --- a/contract/tests/test_contract.py +++ b/contract/tests/test_contract.py @@ -2362,3 +2362,26 @@ class TestContract(TestContractBase): action = self.contract.action_preview() self.assertIn("/my/contracts/", action["url"]) self.assertIn("access_token=", action["url"]) + + def test_recurring_create_invoice(self): + self.acct_line.date_start = "2024-01-01" + self.acct_line.recurring_invoicing_type = "pre-paid" + self.acct_line.date_end = "2024-04-01" + self.contract.recurring_create_invoice() + self.assertEqual(self.acct_line.last_date_invoiced, to_date("2024-01-31")) + self.assertEqual(self.acct_line.recurring_next_date, to_date("2024-02-01")) + self.assertEqual(len(self.contract._get_related_invoices()), 1) + self.contract.recurring_create_invoice() + self.assertEqual(self.acct_line.last_date_invoiced, to_date("2024-02-29")) + self.assertEqual(self.acct_line.recurring_next_date, to_date("2024-03-01")) + self.assertEqual(len(self.contract._get_related_invoices()), 2) + self.contract.recurring_create_invoice() + self.assertEqual(self.acct_line.last_date_invoiced, to_date("2024-03-31")) + self.assertEqual(self.acct_line.recurring_next_date, to_date("2024-04-01")) + self.assertEqual(len(self.contract._get_related_invoices()), 3) + self.contract.recurring_create_invoice() + self.assertEqual(self.acct_line.last_date_invoiced, to_date("2024-04-01")) + self.assertFalse(self.acct_line.recurring_next_date) + self.assertEqual(len(self.contract._get_related_invoices()), 4) + self.contract.recurring_create_invoice() + self.assertEqual(len(self.contract._get_related_invoices()), 4)