From dd4d72d710ab9ffcc3143130a6b5feecf8ce7a5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lionel=20Sausin=20=28Num=C3=A9rigraphe=29?= Date: Fri, 25 Jul 2014 11:54:36 +0200 Subject: [PATCH] [FIX] stock: partial deliveries switch on delivered picking Users don't care for the backorder picking precisely because they can't process it, whereas they may have to do some more things on the picking they processed: invoice it, print delivery orders or transportation stickers.. Refresh the browse record after changing the name to avoid the need to rebrowse. Fixes #1372 --- addons/stock/stock.py | 6 +++--- addons/stock/wizard/stock_partial_picking.py | 18 ++++++++++++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index d363275b7fa..64284f7c0c2 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -1305,6 +1305,7 @@ class stock_picking(osv.osv): {'name': sequence_obj.get(cr, uid, 'stock.picking.%s'%(pick.type)), }) + pick.refresh() new_picking = self.copy(cr, uid, pick.id, { 'name': new_picking_name, @@ -1362,9 +1363,8 @@ class stock_picking(osv.osv): self.action_move(cr, uid, [new_picking], context=context) wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_done', cr) wf_service.trg_write(uid, 'stock.picking', pick.id, cr) - delivered_pack_id = pick.id - back_order_name = self.browse(cr, uid, delivered_pack_id, context=context).name - self.message_post(cr, uid, new_picking, body=_("Back order %s has been created.") % (back_order_name), context=context) + delivered_pack_id = new_picking + self.message_post(cr, uid, new_picking, body=_("Back order %s has been created.") % (pick.name), context=context) else: self.action_move(cr, uid, [pick.id], context=context) wf_service.trg_validate(uid, 'stock.picking', pick.id, 'button_done', cr) diff --git a/addons/stock/wizard/stock_partial_picking.py b/addons/stock/wizard/stock_partial_picking.py index ceedb682ed8..7358855924d 100644 --- a/addons/stock/wizard/stock_partial_picking.py +++ b/addons/stock/wizard/stock_partial_picking.py @@ -156,6 +156,8 @@ class stock_partial_picking(osv.osv_memory): return partial_move def do_partial(self, cr, uid, ids, context=None): + if context is None: + context = {} assert len(ids) == 1, 'Partial picking processing may only be done one at a time.' stock_picking = self.pool.get('stock.picking') stock_move = self.pool.get('stock.move') @@ -211,7 +213,19 @@ class stock_partial_picking(osv.osv_memory): if (picking_type == 'in') and (wizard_line.product_id.cost_method == 'average'): partial_data['move%s' % (wizard_line.move_id.id)].update(product_price=wizard_line.cost, product_currency=wizard_line.currency.id) - stock_picking.do_partial(cr, uid, [partial.picking_id.id], partial_data, context=context) - return {'type': 'ir.actions.act_window_close'} + + # Do the partial delivery and open the picking that was delivered + # We don't need to find which view is required, stock.picking does it. + done = stock_picking.do_partial( + cr, uid, [partial.picking_id.id], partial_data, context=context) + return { + 'type': 'ir.actions.act_window', + 'res_model': context.get('active_model', 'stock.picking'), + 'name': _('Partial Delivery'), + 'res_id': done[partial.picking_id.id]['delivered_picking'], + 'view_type': 'form', + 'view_mode': 'form,tree,calendar', + 'context': context, + } # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: