如何解决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- 此调用会直接创建关联发票的支付记录,完成全额支付流程。
方案二:正确使用支付注册向导流程
如果必须通过向导实现,需按以下步骤操作:
- 创建支付注册向导记录
调用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] } }
- 调用向导的创建支付方法
用上述调用返回的向导记录ID,调用https://myhost/json/2/account.payment.register/action_create_payments:
{ "ids": [向导记录ID] }
内容的提问来源于stack exchange,提问作者Tobia
相关产品推荐
相关产品推荐

