我正在批量确认处于草稿状态的制造订单(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似乎陷入了困境。
我错过了什么,或者我是否需要以某种方式做到这一点?
答案 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)