odoo 8质量确认制造

时间:2017-08-24 13:16:22

标签: python python-2.7 openerp odoo-8

我正在批量确认处于草稿状态的制造订单(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是根据销售订单创建的,那么当我按下“强制预约”时,一​​切都有效(从那里开始已经确认了)。

如果我确认使用其他模板中的创建按钮或功能创建的MO,则在使用此向导后,按“强制预约”按钮后生产不会进入就绪状态。它似乎保留了产品并将它们分配到库存移动数据库表中,但MO本身并未将状态更改为准备就绪。在此之后,MO似乎陷入了困境。

我错过了什么,或者我是否需要以某种方式做到这一点?

1 个答案:

答案 0 :(得分:0)

以下代码修复了该问题。必须通过工作流信号" button_confirm"来调用action_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)