python - 如何使用 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, uid, password, 'account.payment', 'action_register_payment', [{"active_id":invoice_id}])
我也尝试在模块中发送必填字段。我没有收到任何错误,但发票仍未注册。
任何人都可以帮忙吗?谢谢
解决方案
action_register_payment方法将检查是否在active_ids
上下文中,如果不是,它将返回一个空字符串。
要传递上下文,您需要在 args 列表之后传递一个 dict,就像他们将fields
参数传递给官方 XML-RPC 文档中的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]])
推荐阅读
- python - 考虑到每个项目可以有多个主题,如何将数据集中每个项目的主题转换为特征向量
- wordpress - 如何使用 Wordpress ENQUEUE 函数链接样式表
- python - Keras 函数式 API:将可变长度列表传递到嵌入层
- javascript - 创建一个自定义表单以使用 Stripe 接受信用卡
- mongodb - updateOne 不会捕获错误。如何捕捉错误?
- python - 未找到带有参数 '('',)' 的 'new_entry' 的反向操作。尝试了 1 种模式:['new_entry/(?P
[0-9]+)/$'] - powershell - 如何移动文件名未在一组文本文件中使用的文件?
- python - 如何从文件中获取所有正数的总和?
- perl - 删除多行文本块
- javascript - 由 create-react-app 创建的 React 页面不适用于 IE。babel 不是很好用吗?