我正在尝试使用自动操作更新模型“product.supplierinfo”中的“sequence”值,以便在根据采购订单更新供应商的价格时,该供应商优先计算补货成本。为了实现这一点,新的/更新的记录必须获得该产品的最低“序列”值
自动操作设置: 型号:product.supplierinfo 操作:执行Python代码 条件:创建和更新
py的这一部分成功重置从2开始的序列:
val = 1
registers = model.search([('product_tmpl_id','=',record.product_tmpl_id.id)], order = "sequence asc")
for reg in registers:
val = val + 1
reg['sequence'] = val
另一个成功地为更新/新行提供了序列值1:
record.write({'sequence': 1})
但是,当将所有行放在一起时,所有行都会得到顺序1:
val = 1
registers = model.search([('product_tmpl_id','=',record.product_tmpl_id.id)], order = "sequence asc")
for reg in registers:
val = val + 1
reg['sequence'] = val
record.write({'sequence': 1})
因为我是一个非常不懂的人,我甚至认为循环可能不会以缩进结束,并尝试使用另一个来证明我遗漏了什么(首先将序列1设置为目标记录,然后从搜索方法中删除该记录)。它在所有寄存器的序列值上仍然得到1:
record.write({'sequence': 1})
val = 1
registers = model.search([('product_tmpl_id','=',record.product_tmpl_id.id),('id','!=', record.id)], order = "sequence asc")
for reg in registers:
val = val + 1
reg['sequence'] = val
知道为什么它不设置触发器记录的顺序1,然后从2开始设置其余的吗
在@CZoellner的帮助下,我们发现我的代码正在创建一个循环,该循环在所有记录中运行,当编辑序列值时,它将再次触发自动操作。出于某种原因,它不会抛出无限循环的错误
但是,解决方法是检查记录组的最大值
write.date
,以验证自动操作是否已经完成最终工作代码为:
感谢@CZoellner的合作
相关问题 更多 >
编程相关推荐