odoo 8 质量确认制造

odoo 8 mass confirm manufacture

我正在批量确认处于草稿状态的制造订单 (MO),我正在使用在制造订单树视图中选择 MO 后从更多按钮执行的以下代码:

@api.multi
def mass_action(self):
    mo_obj = self.env['mrp.production']
    mo_ids = self.env.context.get('active_ids')
    if self.confirm:
        domain = [('state', '=', 'draft'),
                  ('id', 'in', mo_ids)]
        draft_mo_lst = mo_obj.search(domain)
        for x in draft_mo_lst:
            x.action_confirm()

如果 MO 是从销售订单创建的,则当我按 "Force reservation" 时一切正常(从那里创建时已经确认)。

如果我确认 MO 是使用创建按钮或来自另一个模板的函数创建的,那么在使用此向导后,产品在按下 "Force reservation" 按钮后不会进入就绪状态。它似乎保留了产品并将它们分配到库存移动数据库 table 但 MO 本身不会将状态更改为就绪。之后MO好像卡住了

我是不是遗漏了什么,还是需要以不同的方式来做?

以下代码解决了这个问题。 action_confirm() 函数必须通过工作流信号 "button_confirm".

调用
@api.multi
def mass_action(self):
    mo_obj = self.env['mrp.production']
    mo_ids = self.env.context.get('active_ids')
    from openerp import workflow
    if self.confirm:
        domain = [('state', '=', 'draft'),
                  ('id', 'in', mo_ids)]
        draft_mo_lst = mo_obj.search(domain)
        for x in draft_mo_lst:
            workflow.trg_validate(self._uid, 'mrp.production', x.id, 'button_confirm', self._cr)