我正在尝试为之前通过 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]])
添加回答
举报
0/150
提交
取消