You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo v16 API Python实现:付款注册模型调用问题求助

Odoo v16 付款注册的正确API调用方式

你当前的问题在于误用了account.payment.register模型——它是一个临时付款向导模型,不是直接用来修改字段完成付款的。正确的流程是先创建向导记录并配置付款参数,再调用向导的专属方法生成实际的付款记录(对应account.payment模型)。

核心错误点修正

  1. 不要用write直接修改account.payment.register记录,它的作用是收集付款信息,最终需要触发动作生成真实付款。
  2. amount字段必须传数值类型(如400.0),不能转成字符串。
  3. payment_date需使用YYYY-MM-DD格式,Odoo默认不识别MM/DD/YYYY格式。

正确实现代码示例

假设你要给ID为invoice_id的客户发票注册收款:

# 1. 创建付款注册向导,关联目标发票并配置参数
register_id = models.execute_kw(
    db, uid, password,
    'account.payment.register',
    'create',
    [{
        'invoice_ids': [(6, 0, [invoice_id])],  # 绑定要付款的发票ID
        'journal_id': 1,
        'amount': 400.0,
        'payment_date': '2023-06-06',
        'payment_type': 'inbound',  # 收款填inbound,付款填outbound
        'partner_type': 'customer',  # 客户填customer,供应商填supplier
    }]
)

# 2. 执行向导的创建付款动作,生成实际的account.payment记录
payment_result = models.execute_kw(
    db, uid, password,
    'account.payment.register',
    'action_create_payments',
    [[register_id]]
)

关键说明

  • 如果需要批量处理多个发票,只需修改invoice_ids为[(6, 0, [发票ID1, 发票ID2])]即可。
  • 执行action_create_payments后,Odoo会自动生成对应的account.payment记录,并完成会计分录的匹配和过账(如果配置了自动过账)。
  • 若需验证付款是否生成,可调用account.payment模型的search方法查询相关记录。

内容的提问来源于stack exchange,提问作者BartTechne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:33:17