为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Web API 在 Odoo 中注册发票付款

如何使用 Web API 在 Odoo 中注册发票付款

慕后森 2023-12-26 14:54:30
我正在尝试为之前通过 API 创建的发票注册付款。我按如下方式发布了发票models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url)) models.execute_kw(db, uid, password, 'account.move', 'post', [[invoice_id]])我想注册此付款并在发布后将其标记为已付款。我正在尝试使用与上面类似的工作流程models.execute_kw(db, uid, password, 'account.payment', 'action_register_payment', [{"active_id":invoice_id}])我也尝试过发送模块中的必填字段。我没有收到任何错误,但发票仍未注册。任何人都可以帮忙解决这个问题吗?谢谢
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

action_register_ payment方法将检查是否active_ids在上下文中,如果不在上下文中,它将返回一个空字符串。
要传递上下文,您需要在 args 列表之后传递一个字典,就像官方 XML-RPC 文档中将fields参数传递给read方法一样:

models.execute_kw(db, uid, password, 'account.payment', 'action_register_payment', [[]], {'context': {"active_ids": [invoice_id]}}

该方法以字典形式返回一个操作,这将导致:

TypeError: cannot marshal <class \'odoo.tools.misc.frozendict\'>

您可以使用付款登记向导创建发票付款,您必须创建新的付款登记记录,然后调用create_ payments方法。

例子:

payment_register_id = models.execute_kw(db, uid, password, 'account.payment.register', 'create', [{'journal_id': bank_journal_id, 'payment_method_id': payment_method_id, 'invoice_ids': [(4, invoice_id)]}])
models.execute_kw(db, uid, password, 'account.payment.register', 'create_payments', [[payment_register_id]])



查看完整回答
反对 回复 2023-12-26
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信