details: https://code.tryton.org/tryton/commit/316795b10472
branch: 7.8
user: Cédric Krier <[email protected]>
date: Thu Sep 10 14:14:16 2026 +0200
description:
Sort invoices and shipments on Function fields of sale and purchase
Closes #15083
(grafted from 9385c3660f174830a30529078f3e2899a7a8672c)
diffstat:
modules/purchase/purchase.py | 19 +++++++++++++------
modules/sale/sale.py | 19 +++++++++++++------
2 files changed, 26 insertions(+), 12 deletions(-)
diffs (102 lines):
diff -r 4e1d14676c85 -r 316795b10472 modules/purchase/purchase.py
--- a/modules/purchase/purchase.py Thu Sep 10 16:07:26 2026 +0200
+++ b/modules/purchase/purchase.py Thu Sep 10 14:14:16 2026 +0200
@@ -17,7 +17,7 @@
from trytond.ir.note import NoteCopyMixin
from trytond.model import (
ChatMixin, Index, ModelSQL, ModelView, Unique, Workflow, fields,
- sequence_ordered)
+ sequence_ordered, sort)
from trytond.model.exceptions import AccessError
from trytond.modules.account.tax import TaxableMixin
from trytond.modules.account_product.exceptions import AccountError
@@ -44,13 +44,16 @@
def get_shipments_returns(model_name):
"Computes the returns or shipments"
def method(self, name):
- Model = Pool().get(model_name)
+ pool = Pool()
+ Model = pool.get(model_name)
+ field = getattr(self.__class__, name)
+ order = field.order if field.order is not None else Model._order
shipments = set()
for line in self.line_lines:
for move in line.moves:
if isinstance(move.shipment, Model):
- shipments.add(move.shipment.id)
- return list(shipments)
+ shipments.add(move.shipment)
+ return sort(shipments, order)
return method
@@ -578,12 +581,16 @@
return result
def get_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.line_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_invoices(cls, name, clause):
diff -r 4e1d14676c85 -r 316795b10472 modules/sale/sale.py
--- a/modules/sale/sale.py Thu Sep 10 16:07:26 2026 +0200
+++ b/modules/sale/sale.py Thu Sep 10 14:14:16 2026 +0200
@@ -17,7 +17,7 @@
from trytond.ir.note import NoteCopyMixin
from trytond.model import (
ChatMixin, Index, ModelSQL, ModelView, Unique, Workflow, fields,
- sequence_ordered)
+ sequence_ordered, sort)
from trytond.model.exceptions import AccessError
from trytond.modules.account.tax import TaxableMixin
from trytond.modules.account_product.exceptions import AccountError
@@ -45,13 +45,16 @@
def get_shipments_returns(model_name):
"Computes the returns or shipments"
def method(self, name):
- Model = Pool().get(model_name)
+ pool = Pool()
+ Model = pool.get(model_name)
+ field = getattr(self.__class__, name)
+ order = field.order if field.order is not None else Model._order
shipments = set()
for line in self.line_lines:
for move in line.moves:
if isinstance(move.shipment, Model):
- shipments.add(move.shipment.id)
- return list(shipments)
+ shipments.add(move.shipment)
+ return sort(shipments, order)
return method
@@ -694,12 +697,16 @@
return result
def get_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.line_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_invoices(cls, name, clause):