【发布时间】:2018-06-12 07:14:04
【问题描述】:
如果没有“qty_available”,我想禁止制作产品。但是这段代码不起作用。
仅当我将 @api.constrains 更改为 @api.onchange('move_lines') 时它才有效,但如果我使用 onchange 进行此操作,仍然有可能保存记录。
作为 api.constrains ingores 的名字,我怎样才能使它工作
class mrp_production(osv.osv):
_inherit = 'mrp.production'
@api.constrains('qty_available', 'move_lines.qty_available')
def move_lines_check(self):
for line in self.move_lines:
if line.qty_available < 1:
raise ValidationError(_('There is not enough raw material, check Quantity on hand'))
更新目标
所以再一次的目标是如果没有原材料来制造产品,就会出现警告(我们不能从无到有),如果没有足够的材料,应该是不可能制造产品的。
【问题讨论】:
-
你知道,这些约束会在保存时触发吗?
-
是的,但我仍然可以保存记录
-
那就不要使用self.qty_available=123。使用 self.write({'wty_available':123})
-
qty_available 是 move_lines.qty_available 中的字段,这就是我努力回答的原因
-
能否请您写下您在此“保护”背后的首选流程?因为我会在 bom 字段上编写一个 onchange 触发器,它应该检查其 bom 线产品的所有产品可用性。如果某些东西不可用,只需发出警告,然后将 bom 设置为 False(空)。
标签: odoo-8 odoo odoo-10 odoo-9