在pick - odoo中设置销售订单字段参考

时间:2017-07-20 11:47:44

标签: openerp odoo-8 picking

我希望在销售订单确认和拣配创建时直接选择销售团队参考。

但是我没有得到足够的暗示如何实现这一目标。因为在销售订单确认时调用的方法如下所示。

def action_button_confirm(self, cr, uid, ids, context=None):
    if not context:
        context = {}
    assert len(ids) == 1, 'This option should only be used for a single id at a time.'
    self.signal_workflow(cr, uid, ids, 'order_confirm')
    if context.get('send_email'):
        self.force_quotation_send(cr, uid, ids, context=context)
    return True

这里没有任何提示如何将其传递给采摘?

  

目的:

     

我的目标是在采摘/发货时设置销售团队参考。

2 个答案:

答案 0 :(得分:1)

这并不容易。 Odoo使用procurement.order来创建stock.move s和stock.picking s。问题:拣货可能有多个销售订单作为原产地。因此可以引用多个销售团队。

但是尝试使用计算字段:

section_id = fields.Many2one(
    comodel_name="crm.case.section", string="Sales Team",
    compute="_compute_section_id")

@api.multi
def _compute_section_id(self):
    for picking in self:
        section_ids = set()
        for move in picking.move_lines:
            if move.sale_line_id.order_id.section_id
                section_ids.add(move.sale_line_id.order_id.section_id.id)
        if len(section_ids) == 1:
            picking.section_id = section_ids.pop()

您也可以使用相关字段,但这可能会产生非常糟糕的副作用。因为Odoo将采取第一步。

section_id = fields.Many2one(
    comodel_name="crm.case.section", string="Sales Team",
    related="move_lines.sale_line_id.order_id.section_id")

答案 1 :(得分:0)

我从创建选择的地方获得了该方法。所以我刚刚继承了它并添加了我的代码。 action_ship_create 将始终在从销售订单创建发货时被调用。

 @api.cr_uid_ids_context
    def action_ship_create(self,cr,uid,ids,context={}):
        result=super(sale_order,self).action_ship_create(cr,uid,ids,context=context)
        for order in self.browse(cr,uid,ids,context=context):
            order.picking_ids.write({'section_id':order.section_id.id})
        return result