You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

咨询: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

火山引擎 最新活动