From e821676444319a6bda817de4a7a47e95eb5aa0ba Mon Sep 17 00:00:00 2001 From: sergiocorato Date: Tue, 7 Oct 2025 11:54:15 +0200 Subject: [PATCH] [14.0][FIX] l10n_it_delivery_note put ddt ref in invoice in correct sequence position when invoicing multiple orders --- .../models/account_invoice.py | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/l10n_it_delivery_note/models/account_invoice.py b/l10n_it_delivery_note/models/account_invoice.py index 93937e3a4c72..12f46645fc17 100644 --- a/l10n_it_delivery_note/models/account_invoice.py +++ b/l10n_it_delivery_note/models/account_invoice.py @@ -94,7 +94,9 @@ def update_delivery_note_lines(self): new_lines = [] old_lines = invoice.invoice_line_ids.filtered(lambda l: l.note_dn) old_lines.unlink() - + # move all the invoice lines sequence (included sections/notes) + for inv_line in invoice.invoice_line_ids: + inv_line.sequence += 10 # # TODO: Come bisogna comportarsi nel caso in # cui il DdT non sia un DdT "valido"? @@ -112,7 +114,15 @@ def update_delivery_note_lines(self): context["lang"] = invoice.partner_id.lang if len(invoice.delivery_note_ids) == 1: - sequence = invoice.invoice_line_ids[0].sequence - 1 + # get the first position of the normal invoice lines + sequence = ( + min( + invoice.invoice_line_ids.filtered( + lambda l: not l.display_type + ).mapped("sequence") + ) + - 5 + ) new_lines.append( ( 0, @@ -123,7 +133,6 @@ def update_delivery_note_lines(self): ) ) else: - sequence = 1 done_invoice_lines = self.env["account.move.line"] for dn in invoice.mapped("delivery_note_ids").sorted(key="name"): dn_invoice_lines = invoice.invoice_line_ids.filtered( @@ -147,6 +156,9 @@ def update_delivery_note_lines(self): note_line.delivery_note_id.id ) if dn_invoice_lines: + # get the first position of the invoice lines linked to a + # delivery note, excluding in this way the section/note lines + sequence = min(dn_invoice_lines.mapped("sequence")) - 5 new_lines.append( ( 0, @@ -154,10 +166,6 @@ def update_delivery_note_lines(self): self._prepare_note_dn_value(sequence, dn), ) ) - sequence += 1 - for invoice_line in dn_invoice_lines: - invoice_line.sequence = sequence - sequence += 1 invoice.write({"line_ids": new_lines})