咨询:Odoo10会计仪表盘自定义日记账图表显示及实现方式
在Odoo 10会计仪表盘添加自定义日记账图表的方案
嘿,我来帮你搞定这个需求!咱们分两种情况来看,先试试不用写代码的配置方法,不行再走开发路线:
一、先尝试配置实现(无需代码)
Odoo 10会计仪表盘里的银行账户图表,本质是基于流动性账户的自动展示逻辑,你可以先按这个思路试试:
- 打开「会计」模块,进入「配置 > 会计科目」
- 找到你自定义日记账对应的会计账户,点击编辑
- 在账户详情里勾选「流动性」选项,保存后刷新会计仪表盘
- 看看看板区域会不会自动出现这个账户的收支图表
如果你的自定义日记账是和银行类账户类似的流动性账户,这种方法大概率能直接生效,不用写一行代码。
二、配置不行?试试开发实现(继承视图+模型)
如果配置后还是没显示,那说明需要自定义开发来扩展仪表盘了,核心思路是继承会计仪表盘的视图,添加专属的图表组件:
1. 继承会计仪表盘视图
创建一个自定义模块(如果还没有的话),在模块的views目录下添加XML文件,继承默认的会计仪表盘视图:
<odoo> <record id="custom_account_dashboard" model="ir.ui.view"> <field name="name">account.dashboard.custom.extension</field> <field name="inherit_id" ref="account.account_dashboard_view"/> <field name="arch" type="xml"> <!-- 在现有看板区域插入新的图表卡片 --> <xpath expr="//div[contains(@class, 'o_account_dashboard_kanban')]" position="inside"> <div class="o_dashboard_card"> <div class="o_card_header"> <h3>你的自定义日记账名称</h3> </div> <div class="o_card_content"> <!-- 这里用Odoo自带的graph组件,配置你的日记账过滤条件 --> <graph type="bar" height="220" model="account.move.line" domain="[('journal_id','=',你的日记账ID)]" measure="debit,credit" groupby="date:month" /> </div> </div> </xpath> </field> </record> </odoo>
2. 模块依赖配置
在模块的__manifest__.py里添加对account模块的依赖,确保加载顺序正确:
{ 'name': 'Custom Account Dashboard', 'version': '1.0', 'depends': ['account'], 'data': [ 'views/account_dashboard.xml', ], 'installable': True, }
3. 进阶:添加自定义统计字段
如果需要展示更个性化的数据(比如当前余额),可以继承account.dashboard模型,添加计算字段:
from odoo import models, fields, api class AccountDashboard(models.Model): _inherit = 'account.dashboard' custom_journal_balance = fields.Float(compute='_compute_custom_journal_balance') def _compute_custom_journal_balance(self): for rec in self: # 计算自定义日记账的当前余额 balance = self.env['account.move.line'].search([ ('journal_id', '=', 你的日记账ID), ('state', '=', 'posted') ]).mapped('balance') rec.custom_journal_balance = sum(balance)
然后在视图里把这个字段加到卡片里就行。
总结
优先试配置方法,勾选流动性账户就能快速实现类似银行账户的图表;如果需求更特殊(比如非流动性账户的自定义日记账),就用开发继承的方式扩展仪表盘,灵活性更高。
内容的提问来源于stack exchange,提问作者Carlos Troyano




