创建发票和付款,然后通过 Odoo 模块中的代码 link
Create invoices and payments then link them by code in Odoo module
我正在使用 Odoo 13,我创建了名为 my_module.invoice 的模型,在使用该模型后我需要注册一些付款,因此我创建了另一个名为 my_module.payment,它们是一对多的关系,它们工作正常。付款完成相关发票后,我需要获取模块发票和付款的值,并使用 account.move 和 [ 在 Odoo 中创建相同的场景=36=]。
我能够将 my_module.invoice 转换为 account.move 并将 my_module.payment 转换为 account.payment 但不能 link 它们。
这是将我的模型转换为 Odoo 模型的代码:
# "record" is my_module.invoce model and "ni" is Odoo's account.move model
# Here I convert my invoice model into Odoo's model
new_invoice = record.env['account.move']
ni = new_invoice.create({
'partner_id': record.client,
'invoice_date': record.invoice_date,
'type': 'out_invoice',
'state': 'draft',
'invoice_line_ids': [(0, 0, {'product_id': record.product_id,
'account_id': record.account_id,
'name': record.product_name,
'quantity': 1,
'price_unit': record.total_to_pay
}
)],
})
然后如果 account.move 被创建,那么模块会创建 account.payment:
# If ni (account.move) is true, it means the invoice has been created, so lets create the account.payment
if ni:
new_payment = self.env['account.payment']
np = new_payment.create({
'payment_type': 'inbound',
'has_invoices': True,
'payment_method_id': 1,
'partner_type': 'customer',
'partner_id': some_client,
'amount': my_module.payment.amount,
'payment_date': my_module.payment.create_date,
'journal_id': my_module.payment.journal_id.id,
'communication': ni,
})
np.post()
至此,一切正常,但我不知道如何将新创建的 account.payment 分配给新创建的 account.move
有没有人经历过这种情况或知道如何link他们?
注意:我创建不同模型以将它们转换为 Odoo 模型的原因是因为在 Odoo 中使用正常流程之前存在一些逻辑和条件。
您可以使用上下文将发票关系传递给新付款:
new_payment = self.env['account.payment'].\
with_context(active_ids=ni.ids, active_model='account.move', active_id=ni.id)
np = new_payment.create({ ......
注意:支付模型的communication
字段是char
字段,因此您将account.move
对象分配给char
字段,这是错误的。例如,您可以传递 name
的发票。
'communication': ni.name,
我正在使用 Odoo 13,我创建了名为 my_module.invoice 的模型,在使用该模型后我需要注册一些付款,因此我创建了另一个名为 my_module.payment,它们是一对多的关系,它们工作正常。付款完成相关发票后,我需要获取模块发票和付款的值,并使用 account.move 和 [ 在 Odoo 中创建相同的场景=36=]。 我能够将 my_module.invoice 转换为 account.move 并将 my_module.payment 转换为 account.payment 但不能 link 它们。
这是将我的模型转换为 Odoo 模型的代码:
# "record" is my_module.invoce model and "ni" is Odoo's account.move model
# Here I convert my invoice model into Odoo's model
new_invoice = record.env['account.move']
ni = new_invoice.create({
'partner_id': record.client,
'invoice_date': record.invoice_date,
'type': 'out_invoice',
'state': 'draft',
'invoice_line_ids': [(0, 0, {'product_id': record.product_id,
'account_id': record.account_id,
'name': record.product_name,
'quantity': 1,
'price_unit': record.total_to_pay
}
)],
})
然后如果 account.move 被创建,那么模块会创建 account.payment:
# If ni (account.move) is true, it means the invoice has been created, so lets create the account.payment
if ni:
new_payment = self.env['account.payment']
np = new_payment.create({
'payment_type': 'inbound',
'has_invoices': True,
'payment_method_id': 1,
'partner_type': 'customer',
'partner_id': some_client,
'amount': my_module.payment.amount,
'payment_date': my_module.payment.create_date,
'journal_id': my_module.payment.journal_id.id,
'communication': ni,
})
np.post()
至此,一切正常,但我不知道如何将新创建的 account.payment 分配给新创建的 account.move
有没有人经历过这种情况或知道如何link他们?
注意:我创建不同模型以将它们转换为 Odoo 模型的原因是因为在 Odoo 中使用正常流程之前存在一些逻辑和条件。
您可以使用上下文将发票关系传递给新付款:
new_payment = self.env['account.payment'].\
with_context(active_ids=ni.ids, active_model='account.move', active_id=ni.id)
np = new_payment.create({ ......
注意:支付模型的communication
字段是char
字段,因此您将account.move
对象分配给char
字段,这是错误的。例如,您可以传递 name
的发票。
'communication': ni.name,