mirror of
https://github.com/NaN-tic/trytond-patches.git
synced 2023-12-14 06:03:03 +01:00
45 lines
1.5 KiB
Diff
45 lines
1.5 KiB
Diff
diff --git a/tryton/modules/stock/shipment.py b/tryton/modules/stock/shipment.py
|
|
index c84676d730..324e8999ac 100644
|
|
--- a/tryton/modules/stock/shipment.py
|
|
+++ b/tryton/modules/stock/shipment.py
|
|
@@ -62,16 +62,26 @@ class ShipmentAssignMixin(ShipmentMixin):
|
|
cls.assign(shipments)
|
|
|
|
@dualmethod
|
|
- def assign_ignore(cls, shipments):
|
|
+ def assign_ignore(cls, shipments, moves=None):
|
|
pool = Pool()
|
|
Move = pool.get('stock.move')
|
|
- Move.write([
|
|
- m for s in shipments for m in s.assign_moves
|
|
- if m.assignation_required
|
|
- and m.state in {'staging', 'draft'}], {
|
|
+ assign_moves = {
|
|
+ m for s in shipments for m in s.assign_moves
|
|
+ if m.assignation_required and m.state in {'staging', 'draft'}}
|
|
+ if moves is None:
|
|
+ moves = list(assign_moves)
|
|
+ else:
|
|
+ moves = [m for m in moves if m in assign_moves]
|
|
+ Move.write(moves, {
|
|
'quantity': 0,
|
|
})
|
|
- cls.assign(shipments)
|
|
+ to_assign = [
|
|
+ s for s in shipments
|
|
+ if all(
|
|
+ m.state not in {'staging', 'draft'}
|
|
+ for m in s.assign_moves if m.assignation_required)]
|
|
+ if to_assign:
|
|
+ cls.assign(to_assign)
|
|
|
|
@classmethod
|
|
def _get_assign_domain(cls):
|
|
@@ -2707,7 +2717,7 @@ class Assign(Wizard):
|
|
return 'end'
|
|
|
|
def transition_ignore(self):
|
|
- self.record.assign_ignore()
|
|
+ self.record.assign_ignore(self.partial.moves)
|
|
return 'end'
|