Split process method to avoid create/write in loop
issue10801 review372071002
This commit is contained in:
1 parent
7a64fa6d47
commit
1da0d185fd
2 files changed
+23
-18
No files matched your search
+13
-9
@@ -147,18 +147,22 @@ class Purchase(metaclass=PoolMeta):
|
||||
'purchase': self.rec_name,
|
||||
})
|
||||
|
||||
def create_move(self, move_type):
|
||||
@classmethod
|
||||
def _process_shipment(cls, purchases):
|
||||
pool = Pool()
|
||||
DropShipment = pool.get('stock.shipment.drop')
|
||||
|
||||
moves = super(Purchase, self).create_move(move_type)
|
||||
if moves and self.customer and move_type == 'in':
|
||||
drop_shipment = self.create_drop_shipment()
|
||||
drop_shipment.supplier_moves = moves
|
||||
drop_shipment.save()
|
||||
DropShipment.wait([drop_shipment])
|
||||
|
||||
return moves
|
||||
drop_shipments = []
|
||||
for purchase in purchases:
|
||||
if purchase.customer:
|
||||
moves = purchase.create_move('in')
|
||||
if moves:
|
||||
drop_shipment = purchase.create_drop_shipment()
|
||||
drop_shipment.supplier_moves = moves
|
||||
drop_shipments.append(drop_shipment)
|
||||
DropShipment.save(drop_shipments)
|
||||
DropShipment.wait(drop_shipments)
|
||||
super()._process_shipment(purchases)
|
||||
|
||||
def create_drop_shipment(self):
|
||||
pool = Pool()
|
||||
|
||||
@@ -82,21 +82,22 @@ class Sale(metaclass=PoolMeta):
|
||||
get_drop_shipments = get_shipments_returns('stock.shipment.drop')
|
||||
search_drop_shipments = search_shipments_returns('stock.shipment.drop')
|
||||
|
||||
def create_shipment(self, shipment_type):
|
||||
shipments = super(Sale, self).create_shipment(shipment_type)
|
||||
if shipment_type == 'out':
|
||||
with Transaction().set_context(_drop_shipment=True):
|
||||
self.create_drop_shipment_moves()
|
||||
return shipments
|
||||
|
||||
def create_drop_shipment_moves(self):
|
||||
@classmethod
|
||||
def _process_shipment(cls, sales):
|
||||
pool = Pool()
|
||||
Move = pool.get('stock.move')
|
||||
super()._process_shipment(sales)
|
||||
moves = []
|
||||
with Transaction().set_context(_drop_shipment=True):
|
||||
for sale in sales:
|
||||
moves.extend(sale.create_drop_shipment_moves())
|
||||
Move.save(moves)
|
||||
|
||||
def create_drop_shipment_moves(self):
|
||||
moves = []
|
||||
for line in self.lines:
|
||||
moves += line.get_drop_moves()
|
||||
Move.save(moves)
|
||||
return moves
|
||||
|
||||
|
||||
class Line(metaclass=PoolMeta):
|
||||
|
||||
Reference in new issue
Block a user