如何解决如何使用Web API在Odoo中注册发票付款
我正在尝试为我之前通过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,'account.payment','action_register_payment',[{"active_id":invoice_id}])
我也尝试在模块中发送必填字段。我没有收到任何错误,但发票仍未注册。
任何人都可以帮忙吗?谢谢
解决方法
action_register_payment方法将检查active_ids
是否在上下文中,如果不存在,它将返回一个空字符串。
要传递上下文,您需要在args列表之后传递一个dict,就像它们在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\'>
您可以使用payment register向导创建发票付款,您必须创建新的付款记录记录,然后调用create_payments方法。
示例:
payment_register_id = models.execute_kw(db,'account.payment.register','create',[{'journal_id': bank_journal_id,'payment_method_id': payment_method_id,'invoice_ids': [(4,invoice_id)]}])
models.execute_kw(db,'create_payments',[[payment_register_id]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。