From 893eb9a5ba43b6986bdc8c54b9bb32252fe99900 Mon Sep 17 00:00:00 2001 From: Jacques-Etienne Baudoux Date: Mon, 9 Mar 2026 18:17:48 +0100 Subject: [PATCH 1/2] [IMP] contract: invoice lines Allow to hook contract._prepare_invoice to add more invoice lines --- contract/models/contract.py | 1 - 1 file changed, 1 deletion(-) diff --git a/contract/models/contract.py b/contract/models/contract.py index aa29221f67..18f13ee1fe 100644 --- a/contract/models/contract.py +++ b/contract/models/contract.py @@ -608,7 +608,6 @@ def _prepare_recurring_invoices_values(self, date_ref=False): if not contract_lines: continue invoice_vals = contract._prepare_invoice(date_ref) - invoice_vals["invoice_line_ids"] = [] for line in contract_lines: invoice_line_vals = line._prepare_invoice_line() if invoice_line_vals: From 6276c8ca0007cf3d11d318a7085e2fcf814a0123 Mon Sep 17 00:00:00 2001 From: Jacques-Etienne Baudoux Date: Wed, 18 Mar 2026 12:19:16 +0100 Subject: [PATCH 2/2] [FIX] contract: invoicing Fix date_ref when invoicing multiple contracts --- contract/models/contract.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/contract/models/contract.py b/contract/models/contract.py index 18f13ee1fe..b997a7b352 100644 --- a/contract/models/contract.py +++ b/contract/models/contract.py @@ -598,16 +598,17 @@ def _prepare_recurring_invoices_values(self, date_ref=False): """ invoices_values = [] for contract in self: - if not date_ref: - date_ref = contract.recurring_next_date - if not date_ref: + contract_date_ref = date_ref + if not contract_date_ref: + contract_date_ref = contract.recurring_next_date + if not contract_date_ref: # this use case is possible when recurring_create_invoice is # called for a finished contract continue - contract_lines = contract._get_lines_to_invoice(date_ref) + contract_lines = contract._get_lines_to_invoice(contract_date_ref) if not contract_lines: continue - invoice_vals = contract._prepare_invoice(date_ref) + invoice_vals = contract._prepare_invoice(contract_date_ref) for line in contract_lines: invoice_line_vals = line._prepare_invoice_line() if invoice_line_vals: