如何在 Odoo 12 中使用 Python XML-RPC 注册付款

Posted

技术标签:

【中文标题】如何在 Odoo 12 中使用 Python XML-RPC 注册付款【英文标题】:How to register payment using Python XML-RPC in Odoo 12 【发布时间】:2019-05-03 22:13:22 【问题描述】:

首先我创建了函数:

def invoiceRegisterPayment(self,register_payment_row):        
    confirm_result = self.ODOO_OBJECT.execute_kw(
        self.DATA, 
        self.UID, 
        self.PASS, 
        'account.payment', 
        'action_validate_invoice_payment', 
        register_payment_row)        
    return confirm_result

然后我传递了以下参数:

register_payment_row = [
    [payment_id],
    
        "active_id":invoice_id,
        "active_ids":[invoice_id],
        "active_model": "account.invoice",
        "default_invoice_ids":[[4,invoice_id,None]],
        "journal_type":"sale",
        "lang":"en_US",
        "search_disable_custom_filters": True,
        "type": "out_invoice",
        "tz": False,
        "uid": 2
     ]

但它显示以下错误:“仅应调用此方法来处理单张发票的付款。”

这是 register_payment_row 的打印:

[[67], 'active_id': 119, 'active_ids': [119], 'active_model': 'account.invoice', 'default_invoice_ids': [4, 119, None], 'journal_type': 'sale', 'lang': 'en_US', 'search_disable_custom_filters': True, 'type': 'out_invoice', 'tz': False, 'uid': 2]

【问题讨论】:

尝试通过从中提取[payment_id],register_payment_row 作为字典传递,而不是将[payment_id], 添加到self.ODOO_OBJECT.execute_kw() 之前register_payment_row 之前 仍然给我同样的错误 def invoiceRegisterPayment(self,payment_id,register_payment_row): confirm_result = self.ODOO_OBJECT.execute_kw(self.DATA, self.UID, self.PASS, 'account.payment', 'action_validate_invoice_payment', [payment_id,register_payment_row]) 返回确认结果 我遇到了同样的问题,我也跟着建议的数据结构如何在 action_validate_invoice_payment 方法中传递。 【参考方案1】:

请尝试以下数据结构并通过创建方法account.payment模型。

  invoice_ids: [ [ 4, "Invoice Id", 'None' ] ],
  default_invoice_ids: [ [ 4, "Invoice Id", 'None' ] ],
  amount: 'Amount',
  payment_date: '2019-05-21 02:55:52',
  payment_type: 'inbound',
  has_invoices: true,
  currency_id: 1,
  journal_id: 6,
  payment_method_id: 1,
  partner_id: 226,
  partner_type: 'customer',
  communication: 'INV/2019/0141/44',
  name: 'INV/2019/0141/44' 

【讨论】:

以上是关于如何在 Odoo 12 中使用 Python XML-RPC 注册付款的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中使用多级字典创建 Odoo 记录

Odoo12开发环境部署在Windows系统

odoo10.0在odoo12.0环境的基础上搭建环境

odoo 在哪里解析 xml 文件以将它们存储在数据库中?

Odoo 12开发之开发环境准备

macOS Sierra(10.12.6), odoo(11.0), Python(3.5.4)配置