82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
import logging
|
|
from odoo import models, fields, api
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class FusionAccountingMatchHistory(models.Model):
|
|
_name = 'fusion.accounting.match.history'
|
|
_description = 'Fusion Accounting Match History'
|
|
_order = 'proposed_at desc'
|
|
|
|
session_id = fields.Many2one(
|
|
'fusion.accounting.session', string='Session',
|
|
index=True, ondelete='cascade',
|
|
)
|
|
tool_name = fields.Char(string='Tool Name', required=True, index=True)
|
|
tool_params = fields.Text(string='Tool Parameters (JSON)')
|
|
tool_result = fields.Text(string='Tool Result (JSON)')
|
|
ai_reasoning = fields.Text(string='AI Reasoning')
|
|
ai_confidence = fields.Float(string='AI Confidence', digits=(3, 2))
|
|
rule_id = fields.Many2one(
|
|
'fusion.accounting.rule', string='Applied Rule',
|
|
ondelete='set null',
|
|
)
|
|
proposed_at = fields.Datetime(
|
|
string='Proposed At',
|
|
default=fields.Datetime.now,
|
|
required=True,
|
|
)
|
|
decision = fields.Selection(
|
|
selection=[
|
|
('approved', 'Approved'),
|
|
('rejected', 'Rejected'),
|
|
('pending', 'Pending'),
|
|
('auto', 'Auto-Executed'),
|
|
],
|
|
string='Decision',
|
|
default='pending',
|
|
index=True,
|
|
)
|
|
decided_at = fields.Datetime(string='Decided At')
|
|
decided_by = fields.Many2one('res.users', string='Decided By')
|
|
rejection_reason = fields.Text(string='Rejection Reason')
|
|
correct_action = fields.Text(string='Correct Action (JSON)')
|
|
bank_statement_line_id = fields.Many2one(
|
|
'account.bank.statement.line', string='Bank Statement Line',
|
|
ondelete='set null',
|
|
)
|
|
move_line_ids = fields.Many2many(
|
|
'account.move.line', string='Journal Items',
|
|
)
|
|
amount = fields.Monetary(string='Amount', currency_field='currency_id')
|
|
currency_id = fields.Many2one(
|
|
'res.currency', string='Currency',
|
|
default=lambda self: self.env.company.currency_id,
|
|
)
|
|
partner_id = fields.Many2one('res.partner', string='Partner')
|
|
company_id = fields.Many2one(
|
|
'res.company', string='Company',
|
|
default=lambda self: self.env.company,
|
|
)
|
|
|
|
def action_approve(self):
|
|
self.write({
|
|
'decision': 'approved',
|
|
'decided_at': fields.Datetime.now(),
|
|
'decided_by': self.env.user.id,
|
|
})
|
|
for rec in self:
|
|
if rec.rule_id:
|
|
rec.rule_id._record_decision(approved=True)
|
|
|
|
def action_reject(self):
|
|
self.write({
|
|
'decision': 'rejected',
|
|
'decided_at': fields.Datetime.now(),
|
|
'decided_by': self.env.user.id,
|
|
})
|
|
for rec in self:
|
|
if rec.rule_id:
|
|
rec.rule_id._record_decision(approved=False)
|