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

如何解决Odoo 19 JSON2 API注册发票全额支付的报错问题?

解决Odoo 19 JSON2 API注册发票全额支付报错问题

错误原因

你混淆了account.payment和account.payment.register的使用逻辑:

  • account.payment.register是支付注册向导模型,action_create_payments方法需要的是向导记录的ID,而非你之前创建的account.payment记录ID。
  • 另外,invoice_ids是Many2many字段,直接传[16]格式错误,Odoo要求Many2many字段使用[[6, 0, [ID列表]]]的格式。

两种正确实现方案

方案一:直接创建支付记录关联发票(无需走向导)

跳过account.payment.register,直接调用account.payment/create接口,修正字段格式即可:

{
    "vals_list": {
        "partner_id": 1165,
        "partner_type": "customer",
        "journal_id": 6,
        "amount": 7.20,
        "invoice_ids": [[6, 0, [16]]],
        "payment_type": "inbound"
    }
}
  • payment_type根据发票类型补充:客户发票用inbound,供应商发票用outbound
  • 此调用会直接创建关联发票的支付记录,完成全额支付流程。

方案二:正确使用支付注册向导流程

如果必须通过向导实现,需按以下步骤操作:

  1. 创建支付注册向导记录
    调用https://myhost/json/2/account.payment.register/create,传入正确的上下文和参数:
{
    "vals_list": {
        "partner_id": 1165,
        "journal_id": 6,
        "amount": 7.20,
        "payment_type": "inbound"
    },
    "context": {
        "active_model": "account.move",
        "active_ids": [16]
    }
}
  1. 调用向导的创建支付方法
    用上述调用返回的向导记录ID,调用https://myhost/json/2/account.payment.register/action_create_payments:
{
    "ids": [向导记录ID]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 20:32:38