From 6269b4aabed7e43f03b64f97c0656e0617bf01c6 Mon Sep 17 00:00:00 2001 From: mtr Date: Tue, 23 Nov 2010 19:12:18 +0530 Subject: [PATCH] [FIX] Sale: 'Recreate procurement' on shipping exception ignores partial deliveries lp bug: https://launchpad.net/bugs/674420 fixed bzr revid: mtr@mtr-20101123134218-qa6lf3us1c1k76zc --- addons/sale/sale.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 29826e1c293..27740cbd8ac 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -671,6 +671,8 @@ class sale_order(osv.osv): def action_ship_create(self, cr, uid, ids, *args): wf_service = netsvc.LocalService("workflow") picking_id = False + move_obj = self.pool.get('stock.move') + proc_obj = self.pool.get('procurement.order') company = self.pool.get('res.users').browse(cr, uid, uid).company_id for order in self.browse(cr, uid, ids, context={}): proc_ids = [] @@ -742,7 +744,13 @@ class sale_order(osv.osv): }) proc_ids.append(proc_id) self.pool.get('sale.order.line').write(cr, uid, [line.id], {'procurement_id': proc_id}) - + + if line.state == 'exception': + for pick in order.picking_ids: + for moves in pick.move_lines: + if moves.state == 'cancel': + move_obj.write(cr, uid, [move_id], {'product_qty': moves.product_qty}) + proc_obj.write(cr, uid, [proc_id], {'product_qty': moves.product_qty, 'product_uos_qty': moves.product_qty}) val = {} for proc_id in proc_ids: wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr) @@ -752,7 +760,8 @@ class sale_order(osv.osv): if order.state == 'shipping_except': val['state'] = 'progress' - + val['shipped'] = False + if (order.order_policy == 'manual'): for line in order.order_line: if (not line.invoiced) and (line.state not in ('cancel', 'draft')):