将数量写入特定日志 - Odoo v8
Write quantities to specific journal - Odoo v8
我需要的是自动将一些数量写入特定的日记帐,读取它们并将它们写入借方或贷方字段,具体取决于情况。
但是,重点是,我需要这样做:
1.- 不创建发票
2.- 取决于 class/table
的状态
3.- 没有将函数添加到任何字段,所以一旦它改变状态,数量就会被写入日志。
我试过这个方法,但我认为这不起作用,因为它应该在 computed
浮点数或整数字段上:
@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
字段会更新为生成的发票。但在这种情况下,发票不是必需的,我只需要阅读并复制一些字段(计算或未计算),然后 "paste" 在所选期刊的上述字段上。
希望我已经解释清楚了。
有什么想法吗?
如果您需要在每次字段更改时执行一些操作,但您不需要创建一个调用计算方法的新字段(使用 @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
值。
我需要的是自动将一些数量写入特定的日记帐,读取它们并将它们写入借方或贷方字段,具体取决于情况。
但是,重点是,我需要这样做:
1.- 不创建发票
2.- 取决于 class/table
的状态3.- 没有将函数添加到任何字段,所以一旦它改变状态,数量就会被写入日志。
我试过这个方法,但我认为这不起作用,因为它应该在 computed
浮点数或整数字段上:
@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
字段会更新为生成的发票。但在这种情况下,发票不是必需的,我只需要阅读并复制一些字段(计算或未计算),然后 "paste" 在所选期刊的上述字段上。
希望我已经解释清楚了。
有什么想法吗?
如果您需要在每次字段更改时执行一些操作,但您不需要创建一个调用计算方法的新字段(使用 @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
值。