details:   https://code.tryton.org/tryton/commit/ea3d027558f9
branch:    7.0
user:      Cédric Krier <[email protected]>
date:      Sun Sep 13 13:57:29 2026 +0200
description:
        Use explicit order for shipments and invoices on sale and purchase

        Closes #15090
        (grafted from 05dbc76d7b374aebf7aaef7c03617cbec6c67393)
diffstat:

 modules/purchase/purchase.py |  19 ++++++++++++-------
 modules/sale/sale.py         |  15 ++++++++++-----
 2 files changed, 22 insertions(+), 12 deletions(-)

diffs (79 lines):

diff -r 78bf3c890afc -r ea3d027558f9 modules/purchase/purchase.py
--- a/modules/purchase/purchase.py      Sun Sep 13 14:01:21 2026 +0200
+++ b/modules/purchase/purchase.py      Sun Sep 13 13:57:29 2026 +0200
@@ -191,14 +191,17 @@
             ('exception', 'Exception'),
             ], 'Invoice State', readonly=True, required=True, sort=False)
     invoices = fields.Function(fields.Many2Many(
-            'account.invoice', None, None, "Invoices"),
+            'account.invoice', None, None, "Invoices",
+            order=[('id', 'ASC')]),
         'get_invoices', searcher='search_invoices')
     invoices_ignored = fields.Many2Many(
-            'purchase.purchase-ignored-account.invoice',
-            'purchase', 'invoice', 'Ignored Invoices', readonly=True)
+        'purchase.purchase-ignored-account.invoice',
+        'purchase', 'invoice', 'Ignored Invoices', readonly=True,
+        order=[('id', 'ASC')])
     invoices_recreated = fields.Many2Many(
-            'purchase.purchase-recreated-account.invoice',
-            'purchase', 'invoice', 'Recreated Invoices', readonly=True)
+        'purchase.purchase-recreated-account.invoice',
+        'purchase', 'invoice', 'Recreated Invoices', readonly=True,
+        order=[('id', 'ASC')])
     origin = fields.Reference(
         "Origin", selection='get_origin',
         states={
@@ -219,10 +222,12 @@
             ('exception', 'Exception'),
             ], 'Shipment State', readonly=True, required=True, sort=False)
     shipments = fields.Function(fields.Many2Many(
-            'stock.shipment.in', None, None, "Shipments"),
+            'stock.shipment.in', None, None, "Shipments",
+            order=[('id', 'ASC')]),
         'get_shipments', searcher='search_shipments')
     shipment_returns = fields.Function(fields.Many2Many(
-            'stock.shipment.in.return', None, None, "Shipment Returns"),
+            'stock.shipment.in.return', None, None, "Shipment Returns",
+            order=[('id', 'ASC')]),
         'get_shipment_returns', searcher='search_shipment_returns')
     moves = fields.Function(
         fields.Many2Many('stock.move', None, None, "Moves"),
diff -r 78bf3c890afc -r ea3d027558f9 modules/sale/sale.py
--- a/modules/sale/sale.py      Sun Sep 13 14:01:21 2026 +0200
+++ b/modules/sale/sale.py      Sun Sep 13 13:57:29 2026 +0200
@@ -219,13 +219,16 @@
             ('exception', 'Exception'),
             ], 'Invoice State', readonly=True, required=True, sort=False)
     invoices = fields.Function(fields.Many2Many(
-            'account.invoice', None, None, "Invoices"),
+            'account.invoice', None, None, "Invoices",
+            order=[('id', 'ASC')]),
         'get_invoices', searcher='search_invoices')
     invoices_ignored = fields.Many2Many('sale.sale-ignored-account.invoice',
-            'sale', 'invoice', 'Ignored Invoices', readonly=True)
+            'sale', 'invoice', 'Ignored Invoices', readonly=True,
+        order=[('id', 'ASC')])
     invoices_recreated = fields.Many2Many(
         'sale.sale-recreated-account.invoice', 'sale', 'invoice',
-        'Recreated Invoices', readonly=True)
+        'Recreated Invoices', readonly=True,
+        order=[('id', 'ASC')])
     shipment_method = fields.Selection([
             ('manual', 'Manual'),
             ('order', 'On Order Processed'),
@@ -243,10 +246,12 @@
             ('exception', 'Exception'),
             ], "Shipment State", readonly=True, required=True, sort=False)
     shipments = fields.Function(fields.Many2Many(
-            'stock.shipment.out', None, None, "Shipments"),
+            'stock.shipment.out', None, None, "Shipments",
+            order=[('id', 'ASC')]),
         'get_shipments', searcher='search_shipments')
     shipment_returns = fields.Function(fields.Many2Many(
-            'stock.shipment.out.return', None, None, "Shipment Returns"),
+            'stock.shipment.out.return', None, None, "Shipment Returns",
+            order=[('id', 'ASC')]),
         'get_shipment_returns', searcher='search_shipment_returns')
     moves = fields.Function(
         fields.Many2Many('stock.move', None, None, "Moves"),

Reply via email to