feat(fusion_accounting_bank_rec): transient model for widget round-trip data
Made-with: Cursor
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
'name': 'Fusion Accounting — Bank Reconciliation',
|
'name': 'Fusion Accounting — Bank Reconciliation',
|
||||||
'version': '19.0.1.0.2',
|
'version': '19.0.1.0.3',
|
||||||
'category': 'Accounting/Accounting',
|
'category': 'Accounting/Accounting',
|
||||||
'sequence': 28,
|
'sequence': 28,
|
||||||
'summary': 'Native V19 bank reconciliation widget with AI confidence scoring + behavioural learning.',
|
'summary': 'Native V19 bank reconciliation widget with AI confidence scoring + behavioural learning.',
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
from . import fusion_reconcile_pattern
|
from . import fusion_reconcile_pattern
|
||||||
from . import fusion_reconcile_precedent
|
from . import fusion_reconcile_precedent
|
||||||
from . import fusion_reconcile_suggestion
|
from . import fusion_reconcile_suggestion
|
||||||
|
from . import fusion_bank_rec_widget
|
||||||
|
|||||||
33
fusion_accounting_bank_rec/models/fusion_bank_rec_widget.py
Normal file
33
fusion_accounting_bank_rec/models/fusion_bank_rec_widget.py
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
"""Per-request widget state. Holds the kanban-load response shape so the
|
||||||
|
controller can return one well-typed object.
|
||||||
|
|
||||||
|
This is a TransientModel (no DB persistence beyond the request). The OWL
|
||||||
|
widget reads pre-computed fusion.reconcile.suggestion rows directly via
|
||||||
|
the controller; this model is just a typed envelope for the kanban-open
|
||||||
|
action."""
|
||||||
|
|
||||||
|
from odoo import api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class FusionBankRecWidget(models.TransientModel):
|
||||||
|
_name = "fusion.bank.rec.widget"
|
||||||
|
_description = "Bank reconciliation widget state (transient)"
|
||||||
|
|
||||||
|
journal_id = fields.Many2one('account.journal',
|
||||||
|
domain="[('type', '=', 'bank')]")
|
||||||
|
statement_line_ids = fields.Many2many('account.bank.statement.line')
|
||||||
|
summary_count = fields.Integer(
|
||||||
|
help="Number of unreconciled lines visible in this widget")
|
||||||
|
summary_unreconciled_balance = fields.Monetary(currency_field='currency_id')
|
||||||
|
currency_id = fields.Many2one('res.currency',
|
||||||
|
related='journal_id.currency_id',
|
||||||
|
store=False, readonly=True)
|
||||||
|
|
||||||
|
def action_open_kanban(self):
|
||||||
|
"""Return a window action opening the OWL kanban for this journal."""
|
||||||
|
self.ensure_one()
|
||||||
|
return {
|
||||||
|
'type': 'ir.actions.client',
|
||||||
|
'tag': 'fusion_bank_rec_kanban',
|
||||||
|
'params': {'journal_id': self.journal_id.id},
|
||||||
|
}
|
||||||
@@ -5,3 +5,4 @@ access_fusion_reconcile_precedent_user,precedent user,model_fusion_reconcile_pre
|
|||||||
access_fusion_reconcile_precedent_admin,precedent admin,model_fusion_reconcile_precedent,fusion_accounting_core.group_fusion_accounting_admin,1,1,1,1
|
access_fusion_reconcile_precedent_admin,precedent admin,model_fusion_reconcile_precedent,fusion_accounting_core.group_fusion_accounting_admin,1,1,1,1
|
||||||
access_fusion_reconcile_suggestion_user,suggestion user,model_fusion_reconcile_suggestion,fusion_accounting_core.group_fusion_accounting_user,1,0,0,0
|
access_fusion_reconcile_suggestion_user,suggestion user,model_fusion_reconcile_suggestion,fusion_accounting_core.group_fusion_accounting_user,1,0,0,0
|
||||||
access_fusion_reconcile_suggestion_admin,suggestion admin,model_fusion_reconcile_suggestion,fusion_accounting_core.group_fusion_accounting_admin,1,1,1,1
|
access_fusion_reconcile_suggestion_admin,suggestion admin,model_fusion_reconcile_suggestion,fusion_accounting_core.group_fusion_accounting_admin,1,1,1,1
|
||||||
|
access_fusion_bank_rec_widget_user,bank rec widget user,model_fusion_bank_rec_widget,fusion_accounting_core.group_fusion_accounting_user,1,1,1,1
|
||||||
|
|||||||
|
Reference in New Issue
Block a user