Odoo v16 API Python实现:付款注册模型调用问题求助
Odoo v16 付款注册的正确API调用方式
你当前的问题在于误用了account.payment.register模型——它是一个临时付款向导模型,不是直接用来修改字段完成付款的。正确的流程是先创建向导记录并配置付款参数,再调用向导的专属方法生成实际的付款记录(对应account.payment模型)。
核心错误点修正
- 不要用
write直接修改account.payment.register记录,它的作用是收集付款信息,最终需要触发动作生成真实付款。 amount字段必须传数值类型(如400.0),不能转成字符串。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
相关产品推荐
相关产品推荐

