self.pool.get('stock.move').force_assign(cr, uid, move_ids)
wf_service.trg_write(uid, 'stock.picking', pick.id, cr)
return True
+
+ def button_cancel(self, cr, uid, ids, *args):
+ """ Changes state of picking to cancel.
+ @return: True
+ """
+ wf_service = netsvc.LocalService("workflow")
+ for pick in self.browse(cr, uid, ids):
+ wf_service.trg_validate(uid, 'stock.picking', pick.id, 'button_cancel', cr)
+ return True
def draft_force_assign(self, cr, uid, ids, *args):
""" Confirms picking directly from draft state.
for move in pick.move_lines:
if move.state not in ('cancel','done'):
return False
- if move.state=='done':
+ if move.state=='done' and not move.scrapped:
ok = True
return ok
if not pick.move_lines:
return True
for move in pick.move_lines:
- if move.state == 'done':
+ if move.state == 'done' and not move.scrapped:
raise osv.except_osv(_('Error!'), _('You cannot cancel picking because stock move is in done state!'))
return True
def unlink(self, cr, uid, ids, context=None):
<button name="action_process" states="assigned" string="Confirm & Transfer" groups="stock.group_stock_user" type="object" class="oe_highlight"/>
<button name="%(action_stock_invoice_onshipping)d" string="Create Invoice/Refund" attrs="{'invisible': ['|','|',('state','<>','done'),('invoice_state','=','invoiced'),('invoice_state','=','none')]}" type="action" class="oe_highlight"/>
<button name="%(act_stock_return_picking)d" string="Reverse Transfer" states="done" type="action"/>
- <button name="button_cancel" states="assigned,confirmed,draft" string="_Cancel"/>
+ <button name="button_cancel" type="object" states="assigned,confirmed,draft" string="_Cancel"/>
</span>
<field name="state" widget="statusbar" statusbar_visible="draft,assigned,done" statusbar_colors='{"shipping_except":"red","invoice_except":"red","waiting_date":"blue"}'/>
</header>