From ce07a3d24e17a03c85a99b450c98f67558136941 Mon Sep 17 00:00:00 2001 From: Alicia Garzo Moreno Date: Thu, 11 Apr 2024 00:13:50 +0200 Subject: [PATCH] [16.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 f10f2e1ba..ac408d564 100644 --- a/contract/models/contract.py +++ b/contract/models/contract.py @@ -510,6 +510,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 3814620e3..430a1337c 100644 --- a/contract/tests/test_contract.py +++ b/contract/tests/test_contract.py @@ -1744,6 +1744,29 @@ class TestContract(TestContractBase): len(invoice_lines), ) + 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) + def test_get_period_to_invoice_monthlylastday_postpaid(self): self.acct_line.date_start = "2018-01-05" self.acct_line.recurring_invoicing_type = "post-paid"