Cancel sales move when cancelling a purchase request

issue5107
review19591002
This commit is contained in:
Nicolas Évrard committed 2015-11-17 17:32:14 -03:00
1 parent d97ebeb94c
commit 4ff573a3ba
2 files changed
+26 -1

No files matched your search

+3
View File
@@ -17,3 +17,6 @@ def register():
ShipmentIn,
Template,
module='sale_supply', type_='model')
Pool.register(
HandlePurchaseCancellationException,
module='sale_supply', type_='wizard')
+23 -1
View File
@@ -7,7 +7,8 @@ from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
from trytond.tools import grouped_slice
__all__ = ['PurchaseRequest', 'Purchase']
__all__ = ['PurchaseRequest', 'Purchase',
'HandlePurchaseCancellationException']
__metaclass__ = PoolMeta
@@ -81,3 +82,24 @@ class Purchase:
def cancel(cls, purchases):
super(Purchase, cls).cancel(purchases)
cls._sale_supply_process(purchases)
class HandlePurchaseCancellationException:
__name__ = 'purchase.request.handle.purchase.cancellation'
def transition_cancel_request(self):
pool = Pool()
SaleLine = pool.get('sale.line')
Move = pool.get('stock.move')
next_state = super(HandlePurchaseCancellationException,
self).transition_cancel_request()
moves = []
for sub_ids in grouped_slice(Transaction().context['active_ids']):
sale_lines = SaleLine.search([
('purchase_request', 'in', sub_ids),
])
moves += [m for line in sale_lines for m in line.moves]
if moves:
Move.cancel(moves)
return next_state