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

Odoo 15 Partner Ledger Report视图定制及格式转换技术咨询

Odoo 15 伙伴分类账报表定制指南

一、报表定位说明

伙伴分类账(Partner Ledger)属于Odoo会计模块的动态管理报表,它通过Python代码实时计算数据,再结合QWeb模板渲染,因此不会出现在「设置->技术->报表」列表中。核心文件位置:

  • Python逻辑:account/reports/partner_ledger.py,对应类AccountPartnerLedgerReport,负责数据查询、余额计算、分组等动态逻辑
  • QWeb模板:account/views/report_templates.xml,对应模板IDreport_account_partner_ledger

二、定制报表视图

1. 自定义QWeb模板(调整显示样式/布局)

创建自定义模块,通过继承原模板修改内容,示例代码:

<template id="custom_partner_ledger_template" inherit_id="account.report_account_partner_ledger">
    <!-- 替换报表标题 -->
    <xpath expr="//h1[contains(text(), 'Partner Ledger')]" position="replace">
        <h1>自定义伙伴分类账</h1>
    </xpath>

    <!-- 添加自定义列 -->
    <xpath expr="//thead/tr" position="inside">
        <th class="text-right">自定义列</th>
    </xpath>

    <!-- 在表格行中填充自定义列数据(需配合Python逻辑传值) -->
    <xpath expr="//tbody/tr/td[last()]" position="after">
        <td class="text-right">
            <t t-esc="line.custom_field"/>
        </td>
    </xpath>
</template>

2. 修改Python逻辑(调整数据来源/计算规则)

继承原报表类,重写数据处理方法,示例代码:

from odoo import models

class CustomAccountPartnerLedgerReport(models.AbstractModel):
    _inherit = 'account.partner.ledger.report'

    def _get_report_values(self, docids, data=None):
        # 调用父类方法获取原有数据
        res = super()._get_report_values(docids, data=data)
        
        # 添加自定义数据供模板使用
        for partner in res['partners']:
            for line in partner['lines']:
                line['custom_field'] = line['move_id'].custom_field or 0
        
        return res

三、将报表改为HTML格式

1. 修改原有报表动作(替换默认格式)

继承伙伴分类账的报表动作,修改report_type为HTML,示例代码:

<record id="custom_action_partner_ledger" inherit_id="account.action_report_partner_ledger">
    <field name="report_type">qweb-html</field>
</record>

2. 保留双格式(同时支持PDF/HTML)

复制原有报表动作,创建新的HTML版本并添加到菜单:

<!-- 复制报表动作,设置为HTML格式 -->
<record id="action_partner_ledger_html" model="ir.actions.report">
    <field name="name">Partner Ledger (HTML)</field>
    <field name="model">res.partner</field>
    <field name="report_type">qweb-html</field>
    <field name="report_name">account.report_account_partner_ledger</field>
    <field name="binding_model_id" ref="account.model_res_partner"/>
</record>

<!-- 添加HTML版本到菜单 -->
<menuitem id="menu_partner_ledger_html" name="伙伴分类账(HTML)" 
          parent="account.menu_finance_reports_partner" 
          action="action_partner_ledger_html"/>

注意事项

  • 自定义模块需依赖account模块,在__manifest__.py中添加'depends': ['account']
  • 修改后需升级模块并清除Odoo缓存
  • 若需调整报表筛选条件,可继承account.wizard.partner.ledger视图进行修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:40:23