diff --git a/modules/purchase/purchase.py b/modules/purchase/purchase.py index 125cef0981..00a2ba74bb 100644 --- a/modules/purchase/purchase.py +++ b/modules/purchase/purchase.py @@ -15,7 +15,7 @@ from trytond.ir.attachment import AttachmentCopyMixin from trytond.ir.note import NoteCopyMixin from trytond.model import ( Index, Model, 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 @@ -42,13 +42,16 @@ def samesign(a, b): 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.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 @@ -558,12 +561,16 @@ class Purchase( 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.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 --git a/modules/sale/sale.py b/modules/sale/sale.py index 310c9bacef..bbbdc54bdf 100644 --- a/modules/sale/sale.py +++ b/modules/sale/sale.py @@ -14,7 +14,7 @@ from trytond.ir.attachment import AttachmentCopyMixin from trytond.ir.note import NoteCopyMixin from trytond.model import ( Index, Model, 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 @@ -42,13 +42,16 @@ def samesign(a, b): 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.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 @@ -607,12 +610,16 @@ class Sale( 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.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):