如何在 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()