我需要的是自动将一些数量写入特定日记帐,读取它们并将其写入借方或贷方字段,具体取决于情况。
但是,重点是,我需要这样做:
1.- 不创建发票
2.- 取决于类/表的状态
3.- 无需将函数添加到任何字段,因此一旦状态更改,数量就会写入日志中。
我尝试过这种方法,但我认为这不起作用,因为它应该位于计算
浮点或整数字段上:
@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
所以,它基本上什么也不做。
我需要一种行为,例如当购买或销售完成时,借方
或贷方
字段会使用生成的发票进行更新。但在这种情况下,发票不是必需的,我只需要阅读并复制一些字段(计算或未计算),然后将其“粘贴”到所选日记帐的上述字段上。
我希望我已经解释清楚了。
有什么想法吗?
最佳答案
如果您需要在每次字段更改时执行某些操作,但不需要创建一个调用计算方法(使用 @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
记录都有不同的值,因此您必须将它们相加获取唯一要写入借方
值的浮点值。
关于python - 将数量写入特定日记帐 - Odoo v8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47545329/