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
相关产品推荐
相关产品推荐

