From bb79d8029f318e696f41a2c9e715c2bed6b99d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 30 Sep 2026 13:00:48 +0200 Subject: [PATCH] Sort advance payment invoices on Function fields of sale Closes #15131 --- modules/sale_advance_payment/sale.py | 10 +++++++--- .../tests/scenario_advance_payment.rst | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/sale_advance_payment/sale.py b/modules/sale_advance_payment/sale.py index ec91d3e05d..2dfce7f45a 100644 --- a/modules/sale_advance_payment/sale.py +++ b/modules/sale_advance_payment/sale.py @@ -8,7 +8,7 @@ from simpleeval import simple_eval from trytond import backend, config from trytond.i18n import gettext from trytond.model import ( - DeactivableMixin, ModelSQL, ModelView, Workflow, fields) + DeactivableMixin, ModelSQL, ModelView, Workflow, fields, sort) from trytond.modules.company.model import ( CompanyMultiValueMixin, CompanyValueMixin) from trytond.modules.currency.fields import Monetary @@ -346,12 +346,16 @@ class Sale(metaclass=PoolMeta): self.advance_payment_lines = advance_payment_term.get_lines(self) def get_advance_payment_invoices(self, name): + pool = Pool() + Invoice = pool.get('account.invoice') + field = getattr(self.__class__, name) + order = field.order if field.order is not None else Invoice._order invoices = set() for line in self.advance_payment_lines: for invoice_line in line.invoice_lines: if invoice_line.invoice: - invoices.add(invoice_line.invoice.id) - return list(invoices) + invoices.add(invoice_line.invoice) + return sort(invoices, order) @classmethod def search_advance_payment_invoices(cls, name, clause): diff --git a/modules/sale_advance_payment/tests/scenario_advance_payment.rst b/modules/sale_advance_payment/tests/scenario_advance_payment.rst index 6487947261..8d4508dc65 100644 --- a/modules/sale_advance_payment/tests/scenario_advance_payment.rst +++ b/modules/sale_advance_payment/tests/scenario_advance_payment.rst @@ -392,7 +392,7 @@ it:: ... handle_exception.form.recreate_invoices.find()) >>> handle_exception.execute('handle') >>> sale.reload() - >>> _, inv_recreated = sale.advance_payment_invoices + >>> inv_recreated, _ = sale.advance_payment_invoices >>> inv_recreated.total_amount Decimal('10.00') >>> assertEqual(inv_recreated.invoice_date, next_week)