From b63b7d4404e67a381653112f89c1966d5f38d235 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Sun, 28 Jul 2013 19:27:17 +0200 Subject: [PATCH] [FIX] typo bzr revid: fp@openerp.com-20130728172717-5czhagzuzvafggz9 --- addons/stock/stock.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 02e94f71a49..f75af880f18 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -398,22 +398,22 @@ class stock_picking(osv.osv): return super(stock_picking, self).create(cr, user, vals, context) + # The state of a picking depends on the state of its related stock.move + # done, draft, cancel: all lines are done / draft / cancel + # confirmed, auto, assigned depends on move_type (all at once or direct) def _get_state(self, cr, uid, ids, field_name, arg, context=None): res = {} for pick in self.browse(cr, uid, ids, context=context): - states = [x.state for x in pick.move_lines] - res[pick.id] = 'draft' - if not 'draft' in states: - if 'confirmed' in states: - res[pick.id] = 'confirmed' - elif 'waiting' in states: - res[pick.id] = 'auto' - elif 'assigned' in states: - res[pick.id] = 'assigned' - elif 'done' in states: - res[pick.id] = 'done' - if all([x == 'cancel' for x in states]): - res[pick.id] = 'cancel' + for state in ('cancel','draft','done'): + if all([x.state == state for x in pick.move_lines]): + res[pick.id] = state + order = {'confirmed':0, 'auto':1, 'assigned':2} + order_inv = dict(zip(order.values(),order.keys())) + lst = [order[x.state] for x in pick.move_lines if x not in ('cancel','draft','done')] + if pick.move_lines == 'one': + res[pick.id] = order_inv(min(lst)) + else: + res[pick.id] = order_inv(max(lst)) return res def _get_pickings(self, cr, uid, ids, context=None): @@ -438,7 +438,7 @@ class stock_picking(osv.osv): #'type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal')], 'Shipping Type', required=True, select=True, help="Shipping type specify, goods coming in or going out."), 'note': fields.text('Notes', states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}), 'move_type': fields.selection([('direct', 'Partial'), ('one', 'All at once')], 'Delivery Method', required=True, states={'done':[('readonly', True)], 'cancel':[('readonly',True)]}, help="It specifies goods to be deliver partially or all at once"), - 'state': fields.function(_get_state, type="selection", store = {'stock.move': (_get_pickings, ['state'], 20)}, selection = [ + 'state': fields.function(_get_state, type="selection", store = {'stock.picking': (lambda x: x, ['move_type', 'move_lines'], 20), 'stock.move': (_get_pickings, ['state'], 20)}, selection = [ ('draft', 'Draft'), ('cancel', 'Cancelled'), ('auto', 'Waiting Another Operation'),