Files
Odoo-Modules/fusion_digitize/models/res_config_settings.py
gsinghpal fc3c966484 changes
2026-03-13 12:38:28 -04:00

93 lines
3.7 KiB
Python

# -*- coding: utf-8 -*-
# Copyright 2026 Nexa Systems Inc.
# License OPL-1 (Odoo Proprietary License v1.0)
import logging
from odoo import models, fields
_logger = logging.getLogger(__name__)
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
# ------------------------------------------------------------------
# OpenAI configuration
# ------------------------------------------------------------------
x_fd_openai_api_key = fields.Char(
string='OpenAI API Key',
config_parameter='fusion_digitize.openai_api_key',
help='Dedicated API key for Fusion Digitize. Leave blank to use '
'the key from Fusion Accounts (if installed).',
)
x_fd_ai_model = fields.Selection(
selection=[
('gpt-4o-mini', 'GPT-4o Mini (Fast, Low Cost)'),
('gpt-4o', 'GPT-4o (Best Quality)'),
],
string='AI Model',
config_parameter='fusion_digitize.ai_model',
help='Model for text-based field mapping. GPT-4o is also used '
'for Vision fallback on scanned documents.',
)
# ------------------------------------------------------------------
# Extraction settings
# ------------------------------------------------------------------
x_fd_enable_tesseract = fields.Boolean(
string='Enable Tesseract OCR',
config_parameter='fusion_digitize.enable_tesseract',
help='Use local OCR for scanned PDFs before sending to AI Vision. '
'Disable if OCR quality is poor for your documents.',
)
# ------------------------------------------------------------------
# Document type toggles
# ------------------------------------------------------------------
x_fd_enable_vendor_bills = fields.Boolean(
string='Enable for Vendor Bills',
config_parameter='fusion_digitize.enable_vendor_bills',
help='Intercept digitization for incoming vendor bills.',
)
x_fd_enable_customer_invoices = fields.Boolean(
string='Enable for Customer Invoices',
config_parameter='fusion_digitize.enable_customer_invoices',
help='Intercept digitization for outgoing customer invoices.',
)
x_fd_enable_bank_statements = fields.Boolean(
string='Enable for Bank Statements',
config_parameter='fusion_digitize.enable_bank_statements',
help='Intercept digitization for bank statement imports.',
)
# ------------------------------------------------------------------
# Computed: fusion_accounts integration status
# ------------------------------------------------------------------
x_fd_fusion_accounts_installed = fields.Boolean(
string='Fusion Accounts Installed',
compute='_compute_fd_fusion_accounts_info',
)
x_fd_api_key_source = fields.Char(
string='API Key Source',
compute='_compute_fd_fusion_accounts_info',
)
def _compute_fd_fusion_accounts_info(self):
ICP = self.env['ir.config_parameter'].sudo()
fa_installed = bool(self.env['ir.module.module'].search([
('name', '=', 'fusion_accounts'),
('state', '=', 'installed'),
], limit=1))
custom_key = ICP.get_param('fusion_digitize.openai_api_key', '')
fa_key = ICP.get_param('fusion_accounts.openai_api_key', '')
for rec in self:
rec.x_fd_fusion_accounts_installed = fa_installed
if custom_key:
rec.x_fd_api_key_source = 'Using dedicated Fusion Digitize key'
elif fa_installed and fa_key:
rec.x_fd_api_key_source = 'Using API key from Fusion Accounts'
else:
rec.x_fd_api_key_source = 'No API key configured'