Initial commit

This commit is contained in:
gsinghpal
2026-02-22 01:22:18 -05:00
commit 5200d5baf0
2394 changed files with 386834 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
# -*- coding: utf-8 -*-
# Copyright 2026 Nexa Systems Inc.
# License OPL-1 (Odoo Proprietary License v1.0)
from odoo import api, fields, models, _
import logging
_logger = logging.getLogger(__name__)
STATUS_DOMAINS = {
'all': [],
'sent': [('state', '=', 'sent')],
'failed': [('state', '=', 'failed')],
'draft': [('state', '=', 'draft')],
'received': [('state', '=', 'received')],
}
class FusionFaxDashboard(models.TransientModel):
_name = 'fusion.fax.dashboard'
_description = 'Fusion Fax Dashboard'
_rec_name = 'name'
name = fields.Char(default='Fax Dashboard', readonly=True)
# KPI stat fields
total_count = fields.Integer(compute='_compute_stats')
sent_count = fields.Integer(compute='_compute_stats')
received_count = fields.Integer(compute='_compute_stats')
failed_count = fields.Integer(compute='_compute_stats')
draft_count = fields.Integer(compute='_compute_stats')
# Recent faxes as a proper relational field for embedded list
recent_fax_ids = fields.Many2many(
'fusion.fax',
compute='_compute_recent_faxes',
)
def _compute_stats(self):
Fax = self.env['fusion.fax'].sudo()
for rec in self:
rec.total_count = Fax.search_count([])
rec.sent_count = Fax.search_count(STATUS_DOMAINS['sent'])
rec.received_count = Fax.search_count(STATUS_DOMAINS['received'])
rec.failed_count = Fax.search_count(STATUS_DOMAINS['failed'])
rec.draft_count = Fax.search_count(STATUS_DOMAINS['draft'])
def _compute_recent_faxes(self):
Fax = self.env['fusion.fax'].sudo()
for rec in self:
rec.recent_fax_ids = Fax.search([], order='create_date desc', limit=20)
# ------------------------------------------------------------------
# Actions
# ------------------------------------------------------------------
def action_open_all(self):
return self._open_fax_list('All Faxes', STATUS_DOMAINS['all'])
def action_open_sent(self):
return self._open_fax_list('Sent Faxes', STATUS_DOMAINS['sent'])
def action_open_received(self):
return self._open_fax_list('Received Faxes', STATUS_DOMAINS['received'])
def action_open_failed(self):
return self._open_fax_list('Failed Faxes', STATUS_DOMAINS['failed'])
def action_open_draft(self):
return self._open_fax_list('Draft Faxes', STATUS_DOMAINS['draft'])
def _open_fax_list(self, name, domain):
return {
'type': 'ir.actions.act_window',
'name': name,
'res_model': 'fusion.fax',
'view_mode': 'list,form',
'domain': domain,
}
def action_send_fax(self):
return {
'type': 'ir.actions.act_window',
'name': 'Send Fax',
'res_model': 'fusion_faxes.send.fax.wizard',
'view_mode': 'form',
'target': 'new',
}