"""Fusion-engine-routed AI tools for asset management.""" import logging _logger = logging.getLogger(__name__) def fusion_list_assets(env, params): if 'fusion.asset.engine' not in env.registry: return {'error': 'fusion_accounting_assets not installed'} from ..data_adapters import get_adapter adapter = get_adapter(env, 'assets') return adapter.list_assets( state=params.get('state'), limit=int(params.get('limit', 50)), company_id=int(params['company_id']) if params.get('company_id') else env.company.id, ) def fusion_get_asset_detail(env, params): if 'fusion.asset.engine' not in env.registry: return {'error': 'fusion_accounting_assets not installed'} Asset = env['fusion.asset'] asset = Asset.browse(int(params['asset_id'])) if not asset.exists(): return {'error': 'Asset not found'} return { 'asset': { 'id': asset.id, 'name': asset.name, 'state': asset.state, 'cost': asset.cost, 'book_value': asset.book_value, 'total_depreciated': asset.total_depreciated, 'method': asset.method, 'useful_life_years': asset.useful_life_years, }, 'depreciation_count': len(asset.depreciation_line_ids), } def fusion_compute_asset_schedule(env, params): if 'fusion.asset.engine' not in env.registry: return {'error': 'fusion_accounting_assets not installed'} asset = env['fusion.asset'].browse(int(params['asset_id'])) return env['fusion.asset.engine'].compute_depreciation_schedule( asset, recompute=bool(params.get('recompute', False)), ) def fusion_dispose_asset(env, params): if 'fusion.asset.engine' not in env.registry: return {'error': 'fusion_accounting_assets not installed'} from ..data_adapters import get_adapter adapter = get_adapter(env, 'assets') return adapter.dispose_asset( asset_id=int(params['asset_id']), sale_amount=float(params.get('sale_amount', 0)), disposal_type=params.get('disposal_type', 'sale'), ) def fusion_suggest_asset_useful_life(env, params): if 'fusion.asset.engine' not in env.registry: return {'error': 'fusion_accounting_assets not installed'} from ..data_adapters import get_adapter adapter = get_adapter(env, 'assets') return adapter.suggest_useful_life( description=params.get('description', ''), amount=float(params['amount']) if params.get('amount') else None, partner_name=params.get('partner_name'), ) TOOLS = { 'fusion_list_assets': fusion_list_assets, 'fusion_get_asset_detail': fusion_get_asset_detail, 'fusion_compute_asset_schedule': fusion_compute_asset_schedule, 'fusion_dispose_asset': fusion_dispose_asset, 'fusion_suggest_asset_useful_life': fusion_suggest_asset_useful_life, }