如何在 Odoo v15 CE 中注册来自 python 的发票付款
How to register payment for invoice from python in Odoo v15 CE
我正在尝试对 Odoo v15 CE 中的销售订单执行单个操作,为销售订单创建发票并立即过账并为其登记付款。我这样做的方式是通过如下所示的向导方法:
def create_invoices(self):
sale_orders = self.env['sale.order'].browse(self._context.get('active_ids', []))
for order in sale_orders:
order._create_invoices()
for inv in order.invoice_ids:
# make invoice:
inv.action_post()
# register payment
# ????
目前,它正在创建发票并过帐。我想在最后一行添加类似 inv.register_payment()
的内容以注册付款。
我找到了 account.move
模型的 action_register_payment
方法,也研究了使用 account.payment.register
向导,但都没有用。我还发现了 问题,它试图做类似的事情,但是通过 XML-RPC 调用(据我所知)。
谁能解释一下如何做到这一点?谢谢!
您必须使用 action_post
post 发票,然后通过像
中那样创建付款来注册付款
https://github.com/odoo/odoo/blob/15.0/addons/account/wizard/account_payment_register.py#L496
account.payment.register
是一个向导,这就是为什么你需要为它创建值,否则你可以 action_register_payment
这是一个 window 动作,它将触发向导然后它是用户注册付款(这是 Odoo 的标准行为)
您可以创建一个 account.payment.register
记录并在上下文中传递模型和发票 ID,然后调用 action_create_payments
以使用默认值创建付款。
示例:
payment_register.with_context(
{'active_model': 'account.move',
'active_ids': inv.ids}
).create({}).action_create_payments()
我正在尝试对 Odoo v15 CE 中的销售订单执行单个操作,为销售订单创建发票并立即过账并为其登记付款。我这样做的方式是通过如下所示的向导方法:
def create_invoices(self):
sale_orders = self.env['sale.order'].browse(self._context.get('active_ids', []))
for order in sale_orders:
order._create_invoices()
for inv in order.invoice_ids:
# make invoice:
inv.action_post()
# register payment
# ????
目前,它正在创建发票并过帐。我想在最后一行添加类似 inv.register_payment()
的内容以注册付款。
我找到了 account.move
模型的 action_register_payment
方法,也研究了使用 account.payment.register
向导,但都没有用。我还发现了
谁能解释一下如何做到这一点?谢谢!
您必须使用 action_post
post 发票,然后通过像
https://github.com/odoo/odoo/blob/15.0/addons/account/wizard/account_payment_register.py#L496
account.payment.register
是一个向导,这就是为什么你需要为它创建值,否则你可以 action_register_payment
这是一个 window 动作,它将触发向导然后它是用户注册付款(这是 Odoo 的标准行为)
您可以创建一个 account.payment.register
记录并在上下文中传递模型和发票 ID,然后调用 action_create_payments
以使用默认值创建付款。
示例:
payment_register.with_context(
{'active_model': 'account.move',
'active_ids': inv.ids}
).create({}).action_create_payments()