You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo如何正确查询发票关联的所有支付记录(account.payment)

Odoo获取发票关联全量支付记录实现方案

问题描述

在Odoo二次开发过程中,需要遍历绑定在发票(account.move)上的支付记录(account.payment),提取支付记录的display_name、payment_reference、amount字段。现有构造的搜索域无法精准匹配全部关联支付,其中POS支付、Paytrail支付、Stripe支付等渠道的支付记录在系统前端支付组件中清晰可见,但无法被自定义代码遍历到。

已尝试的错误实现

方案1:通过支付显示名匹配

def _export_invoice_with_payments(self):
    unique_id = self.name
    seller = self.company_id
    buyer = self.partner_id
    #...
    invoice_payments = self.env['account.payment'].search(
    [
    ('display_name', '=', self.name),
    ], limit = 50)

    for obj in invoice_payments:
       payment_display_name = obj.display_name
       payment_record_ref = obj.ref

该方案逻辑错误:支付记录的display_name和发票编号没有强制绑定关系,完全不符合Odoo底层数据关联规则,匹配结果没有参考价值。

方案2:通过支付交易关联发票

invoice_account_moves = self.env['account.payment'].search(
[
    ('payment_transaction_id.invoice_ids', '=', self.id)
])

该方案覆盖场景不全:仅能匹配到走在线支付交易网关生成的支付记录,POS支付、手动登记的内部支付不会生成关联的payment.transaction记录,必然出现漏匹配。

问题复现步骤

  1. 在POS端完成销售,选择对应客户,设置支付方式为“Bank”并创建发票;
  2. 关闭POS会话,校验会计分录并完成过账;
  3. 导航到对应POS销售记录查看发票(操作路径:POS端三点菜单 -> 订单 -> 查看会话并选择对应会话 -> 选择对应购物篮查看订单 -> 选择发票进入详情页),此时可看到发票上已明确记录对应支付,发票状态为已校验、已支付。

支付信息组件显示POS会话已为该发票记录对应支付

正确实现方式

Odoo原生发票与支付的关联并非通过直接外键绑定,而是通过会计分录行(account.move.line)的对账关系实现,前端支付组件读取的也是对账匹配后的支付数据,自行构造搜索域很容易遗漏特殊场景的支付记录。
最稳定可靠的方式是直接调用Odoo原生封装的公共方法,该方法已经覆盖了所有支付渠道(POS、在线支付网关、手动登记支付、内部往来支付等)的关联逻辑,和前端支付组件的数据源完全一致:

def _export_invoice_with_payments(self):
    self.ensure_one()
    unique_id = self.name
    seller = self.company_id
    buyer = self.partner_id
    # 调用原生方法获取当前发票所有已对账的关联支付,覆盖全渠道场景
    invoice_payments = self._get_reconciled_payments()
    
    for pay in invoice_payments:
        payment_display_name = pay.display_name
        payment_reference = pay.payment_reference
        payment_amount = pay.amount
        # 后续自定义业务逻辑

注意:_get_reconciled_payments()是account.move模型的原生方法,在Odoo13及之后的所有官方版本中均可用,版本升级兼容性远高于自定义搜索域。

如果因特殊业务场景必须自行构造搜索域(不推荐),需要同时覆盖借贷双向的对账关联、POS支付的分录直连场景,逻辑复杂度高,后续版本迭代很容易出现兼容问题。


内容的提问来源于stack exchange,提问作者Ossi Mantylahti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 16:33:16