Odoo15如何在Profit and Loss Statement(利润表)金额列后新增列
Odoo 15 利润表新增列操作方案
Odoo15的利润表属于会计模块的动态财务报表,新增列分无代码配置和代码开发两种实现路径,根据需求复杂度选择即可:
方法一:Studio无代码配置(适合简单列场景)
适合新增固定对比列、简单公式计算列,不需要写代码:
- 先激活开发者模式:点右上角个人头像选「关于Odoo」,在弹窗右上角点激活开发者模式
- 进入会计模块,打开「报表-利润表」,等报表完全加载后点右上角的Studio编辑按钮(小扳手图标)
- 进入编辑状态后,点击现有金额列的表头,右侧属性面板会出现列配置项,点击「添加列」
- 配置新列参数:
- 填列标题,比如「上年同期金额」「预算占比」
- 选数据来源:如果是取系统已有财务指标,直接绑定对应字段;如果是计算列,在表达式栏写计算公式,比如计算营收占比就写
line.balance / total_revenue * 100 - 拖动新列到现有金额列的正后方,调整列宽、对齐方式、数字显示格式(金额保留2位小数、百分比加%符号等)
- 保存配置后退出Studio,刷新页面即可看到新增列,记得给需要查看该列的用户组开放对应访问权限。
方法二:自定义模块开发(适合复杂逻辑、多环境同步场景)
如果新列有复杂计算规则,或者需要把改动同步到测试、生产多个环境,不要直接用Studio修改,建议开发小型自定义模块实现:
- 继承利润表核心模型
利润表对应的模型是account.financial.html.report,在自定义模块中重写列获取方法,在原金额列后追加新列定义,参考代码:from odoo import models class CustomProfitLossReport(models.Model): _inherit = 'account.financial.html.report' def _get_columns(self, options): # 取原生报表的列配置 origin_columns = super()._get_columns(options) # 定义新列属性 custom_col = { 'name': '你需要的列名称', 'figure_type': 'monetary', # 金额类选monetary,比率类选percent 'sortable': True, 'expression': '_compute_custom_col_value', } # 将新列插入到原金额列(默认索引为0)后方,即索引1的位置 origin_columns.insert(1, custom_col) return origin_columns def _compute_custom_col_value(self, options, line): # 在这里写自定义计算逻辑,返回当前行对应列的数值 # 可实现取预算数、同期数、自定义分摊值等复杂逻辑 return calc_result - 适配前端渲染
如果新列需要特殊的显示规则,继承利润表的QWeb模板,添加新列对应的渲染节点,同时配置合计行的计算规则,避免总计数出错。 - 模块开发完成后安装到系统,更新会计模块报表缓存,打开利润表即可看到新增列,后续升级模块就能同步改动到所有环境。
注意事项:多公司账套下配置完新列后,要切换不同公司验证列显示和数值计算是否正常;代码开发的改动一定要先在测试环境校验明细行、合计行的数据准确性,再更新到生产环境,避免财务数据错误。
内容的提问来源于stack exchange,提问作者Sasha Brown
相关产品推荐
相关产品推荐

