如何使用 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}])

我也尝试过发送模块中的必填字段。我没有收到任何错误,但发票仍未注册。

任何人都可以帮忙解决这个问题吗?谢谢


慕后森
浏览 97回答 1
1回答

有只小跳蛙

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]])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python