78 lines
2.8 KiB
Python
78 lines
2.8 KiB
Python
"""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,
|
|
}
|