changeset e9f3ab658e28 in modules/sale_supply_production:default
details: 
https://hg.tryton.org/modules/sale_supply_production?cmd=changeset&node=e9f3ab658e28
description:
        Split process method to avoid create/write in loop

        issue10801
        review372071002
diffstat:

 sale.py |  20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)

diffs (39 lines):

diff -r 006adae230c2 -r e9f3ab658e28 sale.py
--- a/sale.py   Sun Jul 04 17:54:48 2021 +0200
+++ b/sale.py   Fri Oct 08 19:21:06 2021 +0200
@@ -9,14 +9,19 @@
 class Sale(metaclass=PoolMeta):
     __name__ = 'sale.sale'
 
-    def create_shipment(self, shipment_type):
-        if shipment_type == 'out':
-            self.create_productions()
-        return super().create_shipment(shipment_type)
+    @classmethod
+    def _process_shipment(cls, sales):
+        pool = Pool()
+        Production = pool.get('production')
+
+        productions = []
+        for sale in sales:
+            productions.extend(sale.create_productions())
+        Production.save(productions)
+        Production.set_moves(productions)
+        super()._process_shipment(sales)
 
     def create_productions(self):
-        pool = Pool()
-        Production = pool.get('production')
         productions = []
         for line in self.lines:
             production = line.get_production()
@@ -26,8 +31,7 @@
                 production.on_change_with_planned_start_date())
             productions.append(production)
             assert not line.productions
-        Production.save(productions)
-        Production.set_moves(productions)
+        return productions
 
 
 class Line(metaclass=PoolMeta):

Reply via email to