odoo/addons/stock_picking_wave/stock_picking_wave.py

64 lines
3.0 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
from openerp.tools.translate import _
from openerp.osv import fields, osv
from openerp import workflow
class stock_picking_wave(osv.osv):
_name = "stock.picking.wave"
_columns = {
'name': fields.char('name', required=True, help='Name of the picking wave'),
'resp_id': fields.many2one('res.partner', 'Responsible', help='Person responsible for this wave'),
'time': fields.float('Time', help='Time it will take to perform the wave'),
'picking_ids': fields.one2many('stock.picking', 'wave_id', 'Pickings', help='List of picking associated to this wave'),
'capacity': fields.float('Capacity', help='The capacity of the transport used to get the goods'),
'capacity_uom': fields.many2one('product.uom', 'Unit of Measure', help='The Unity Of Measure of the transport capacity'),
}
def confirm_picking(self, cr, uid, ids, context=None):
picking_todo = self.pool.get('stock.picking').search(cr, uid, [('wave_id', 'in', ids)], context=context)
self.pool.get('stock.picking').wave_confirm_picking(cr, uid, picking_todo, context=context)
return True
def cancel_picking(self, cr, uid, ids, context=None):
picking_todo = self.pool.get('stock.picking').search(cr, uid, [('wave_id', 'in', ids)], context=context)
self.pool.get('stock.picking').wave_cancel_picking(cr, uid, picking_todo, context=context)
return True
class stock_picking(osv.osv):
_inherit = "stock.picking"
_columns = {
'wave_id': fields.many2one('stock.picking.wave', 'Picking Wave', help='Picking wave associated to this picking'),
}
def wave_confirm_picking(self, cr, uid, ids, context=None):
"""Set all stocks moves associated to this picking to done state and if picking is in draft,
advance workflow to confirmed (which mean that it will afterwards automatically go to done)
"""
move_obj = self.pool.get('stock.move')
for picking in self.browse(cr, uid, ids, context=context):
if picking.state == 'draft':
workflow.trg_validate(uid, 'stock.picking', picking.id, 'button_confirm', cr)
moves_todo = move_obj.search(cr, uid, [('picking_id', 'in', ids)], context=context)
move_obj.action_done(cr, uid, moves_todo, context=context)
return True
def wave_cancel_picking(self, cr, uid, ids, context=None):
"""Cancel the pickings and all stock move associated
"""
for id in ids:
workflow.trg_validate(uid, 'stock.picking', id, 'button_cancel', cr)
return True
class stock_picking_in(osv.osv):
_inherit = "stock.picking.in"
_columns = {
'wave_id': fields.many2one('stock.picking.wave', 'Picking Wave', help='Picking wave associated to this picking'),
}
class stock_picking_out(osv.osv):
_inherit = "stock.picking.out"
_columns = {
'wave_id': fields.many2one('stock.picking.wave', 'Picking Wave', help='Picking wave associated to this picking'),
}