changeset cec950fc25c3 in modules/purchase:default
details: https://hg.tryton.org/modules/purchase?cmd=changeset&node=cec950fc25c3
description:
Process purchase when move is done without shipment
issue11125
review393371002
diffstat:
stock.py | 39 +++++++++++++++++++++++++--------------
1 files changed, 25 insertions(+), 14 deletions(-)
diffs (61 lines):
diff -r f5b6151aa9f0 -r cec950fc25c3 stock.py
--- a/stock.py Sat Dec 18 16:31:10 2021 +0100
+++ b/stock.py Thu Jan 20 19:02:06 2022 +0100
@@ -134,18 +134,22 @@
super(ShipmentInReturn, cls).done(shipments)
-def process_purchase_move(func):
- @wraps(func)
- def wrapper(cls, moves):
- pool = Pool()
- Purchase = pool.get('purchase.purchase')
- with Transaction().set_context(_check_access=False):
- purchases = set(
- m.purchase for m in cls.browse(moves) if m.purchase)
- func(cls, moves)
- if purchases:
- Purchase.__queue__.process(purchases)
- return wrapper
+def process_purchase_move(without_shipment=False):
+ def _process_purchase_move(func):
+ @wraps(func)
+ def wrapper(cls, moves):
+ pool = Pool()
+ Purchase = pool.get('purchase.purchase')
+ with Transaction().set_context(_check_access=False):
+ p_moves = cls.browse(moves)
+ if without_shipment:
+ p_moves = [m for m in p_moves if not m.shipment]
+ purchases = set(m.purchase for m in p_moves if m.purchase)
+ func(cls, moves)
+ if purchases:
+ Purchase.__queue__.process(purchases)
+ return wrapper
+ return _process_purchase_move
class Move(metaclass=PoolMeta):
@@ -232,13 +236,20 @@
@classmethod
@ModelView.button
+ @Workflow.transition('done')
+ @process_purchase_move(without_shipment=True)
+ def do(cls, moves):
+ super().do(moves)
+
+ @classmethod
+ @ModelView.button
@Workflow.transition('cancelled')
- @process_purchase_move
+ @process_purchase_move(without_shipment=True)
def cancel(cls, moves):
super(Move, cls).cancel(moves)
@classmethod
- @process_purchase_move
+ @process_purchase_move()
def delete(cls, moves):
super(Move, cls).delete(moves)