Odoo12社区版分拣单处理时生成欠单流程

1.stock.picking:
button_validate方法中

# _check_backorder方法校验行数量是否全部满足,不满足则需要弹框提示是否创建欠单
if self._check_backorder():
    return self.action_generate_backorder_wizard()
self.action_done()

在这里插入图片描述

2.stock.picking:
action_generate_backorder_wizard方法返回确认对象及界面

def action_generate_backorder_wizard(self):
     view = self.env.ref('stock.view_backorder_confirmation')
     wiz = self.env['stock.backorder.confirmation'].create({
    
    'pick_ids': [(4, p.id) for p in self]})
     return {
    
    
         'name': _('Create Backorder?'),
         'type': 'ir.actions.act_window',
         'view_type': 'form',
         'view_mode': 'form',
         'res_model': 'stock.backorder.confirmation',
         'views': [(view.id, 'form')],
         'view_id': view.id,
         'target': 'new',
         'res_id': wiz.id,
         'context': self.env.context,
     }

在这里插入图片描述

3.stock.move:
_action_done方法
在这里插入图片描述

4.stock.picking:
_create_backorder方法会创建对应的欠单

@api.multi
def _create_backorder(self, backorder_moves=[]):
    """ Move all non-done lines into a new backorder picking.
    """
    backorders = self.env['stock.picking']
    for picking in self:
        moves_to_backorder = picking.move_lines.filtered(lambda x: x.state not in ('done', 'cancel'))
        if moves_to_backorder:
            backorder_picking = picking.copy({
    
    
                'name': '/',
                'move_lines': [],
                'move_line_ids': [],
                'backorder_id': picking.id
            })
            picking.message_post(
                body=_('The backorder <a href=# data-oe-model=stock.picking data-oe-id=%d>%s</a> has been created.') % (
                    backorder_picking.id, backorder_picking.name))
            moves_to_backorder.write({
    
    'picking_id': backorder_picking.id})
            moves_to_backorder.mapped('package_level_id').write({
    
    'picking_id':backorder_picking.id})
            moves_to_backorder.mapped('move_line_ids').write({
    
    'picking_id': backorder_picking.id})
            backorder_picking.action_assign()
            backorders |= backorder_picking
    return backorders

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_23931991/article/details/100518452
今日推荐