我需要的是自动将一些数量写入特定期刊,阅读并在借方或贷方字段中写入,具体取决于具体情况。
但是,重点是,我需要这样做:
1.-不创建发票
2.-取决于班级/表格的状态
3.-如果不将函数添加到任何字段,那么只要它改变状态,就会将数量写入日记。
我尝试过这种方法,但我认为这不起作用,因为它应该在computed
Float或Integer字段上:
@api.multi
@api.depends('order_picking', 'order_picking.isbn', 'contract_worksheet')
def accounting_scenarios(self):
for record in self:
if record.state == awaitingraw:
record.isbn.printer_wip_account.debit = record.contract_worksheet.total_alles
elif record.state == work_in_progress:
record.transporter.transp_transit.debit = record.contract_worksheet.total_alles
所以,它基本上什么也没做。
我需要一种行为,例如,在完成购买或销售时,debit
或credit
fieds会根据生成的发票进行更新。但在这种情况下,发票是没有必要的,我只需要阅读,并复制一些字段(计算与否),然后在所选期刊的上述字段中“粘贴”。
我希望我已经解释过了。
有什么想法吗?
答案 0 :(得分:1)
如果您需要在每次字段更改时执行某些操作,但您不需要创建调用计算方法(使用@api.depends
装饰器)的新字段,则应覆盖ORM字段所属模型的write
方法。所以,在你的情况下,我会做这样的事情:
@api.multi
def write(self, vals):
res = super(YourModel, self).write(vals)
if 'state' in vals:
for record in self:
contract_worksheet = record.contract_worksheet
if record.state == awaitingraw:
printer_wip_account = record.isbn.printer_wip_account
res &= printer_wip_account.write({
'debit': sum(c.total_alles for c in contract_worksheet),
})
elif record.state == work_in_progress:
transp_transit = record.transporter.transp_transit
res &= transp_transit.write({
'debit': sum(c.total_alles for c in contract_worksheet),
})
return res
上述代码可能不准确,因为我不知道您在那里使用的所有字段的类型,但是,您无法获取One2many
的值直接字段,您需要循环它以获得所需的值。我假设字段total_alles
是计算的Float
,并且每个contract_worksheet
记录都有不同的值,所以你必须将它们相加才能得到一个只写的浮点数在debit
值。