Odoo会计看板卡片中数据的获取 - xiaohao0576/odoo-doc GitHub Wiki
会计模块属于Odoo企业版功能,因此无法在Github中找到源码
Odoo会计面板继承了account.journal
model,主要是从数据库中收集数据,以看板的形式展示在会计仪表盘中
源码文件名: account_journal_dashboard.py
,字段定义如下
class account_journal(models.Model):
_inherit = "account.journal"
kanban_dashboard = fields.Text(compute='_kanban_dashboard')
kanban_dashboard_graph = fields.Text(compute='_kanban_dashboard_graph')
json_activity_data = fields.Text(compute='_get_json_activity_data')
show_on_dashboard = fields.Boolean(string='Show journal on dashboard', help="Whether this journal should be displayed on the dashboard or not", default=True)
color = fields.Integer("Color Index", default=0)
current_statement_balance = fields.Monetary(compute='_compute_current_statement_balance') # technical field used to avoid computing the value multiple times
has_statement_lines = fields.Boolean(compute='_compute_current_statement_balance') # technical field used to avoid computing the value multiple times
entries_count = fields.Integer(compute='_compute_entries_count')
has_sequence_holes = fields.Boolean(compute='_compute_has_sequence_holes')
last_statement_id = fields.Many2one(comodel_name='account.bank.statement', compute='_compute_last_bank_statement')
收集看板数据的函数
def _kanban_dashboard(self):
dashboard_data = self._get_journal_dashboard_data_batched()
for journal in self:
journal.kanban_dashboard = json.dumps(dashboard_data[journal.id])
此函数又调用了以下几个以_fill_
开头的函数
def _get_journal_dashboard_data_batched(self):
self.env['account.move'].flush_model()
self.env['account.move.line'].flush_model()
dashboard_data = {} # container that will be filled by functions below
for journal in self:
dashboard_data[journal.id] = {
'currency_id': journal.currency_id.id or journal.company_id.sudo().currency_id.id,
'show_company': len(self.env.companies) > 1 or journal.company_id.id != self.env.company.id,
}
self._fill_bank_cash_dashboard_data(dashboard_data)
self._fill_sale_purchase_dashboard_data(dashboard_data)
self._fill_general_dashboard_data(dashboard_data)
return dashboard_data
这些函数使用了大量的SQL查询语句,可以查看Odoo的会计企业源码