gsinghpal
1491f455fe
feat(fusion_accounting_assets): migration wizard backfill from account.asset
...
Made-with: Cursor
2026-04-19 20:13:30 -04:00
gsinghpal
fec1c12246
feat(fusion_accounting_assets): MV for per-asset book value snapshot
...
Made-with: Cursor
2026-04-19 17:25:14 -04:00
gsinghpal
de6d8fda3e
feat(fusion_accounting_assets): 2 cron jobs (depreciation post + anomaly scan)
...
fusion_accounting CI / test (fusion_accounting_migration) (push) Has been cancelled
fusion_accounting CI / test (fusion_accounting_ai) (push) Has been cancelled
fusion_accounting CI / test (fusion_accounting_core) (push) Has been cancelled
Made-with: Cursor
2026-04-19 17:17:21 -04:00
gsinghpal
54922a0b32
feat(fusion_accounting_assets): fusion.asset.engine 7-method API
...
The orchestrator AbstractModel for asset depreciation lifecycle.
compute_depreciation_schedule, post_depreciation_entry, dispose_asset,
partial_sale, pause_asset, resume_asset, reverse_disposal.
All controllers, AI tools, wizards, and cron must route through these
methods; no direct ORM writes to fusion.asset.depreciation.line or
account.move from anywhere else.
Made-with: Cursor
2026-04-19 17:06:12 -04:00
gsinghpal
38a6e375e6
feat(fusion_accounting_assets): inherit account.move.line for asset linkage
...
- fusion_asset_id Many2one on account.move.line (ondelete='set null':
invoice line preserved if asset is removed)
- fusion_asset_count compute (smart-button friendly)
- action_open_fusion_asset() returns a window action to jump to the asset
- 3 new tests (66 total)
Made-with: Cursor
2026-04-19 16:59:44 -04:00
gsinghpal
8659f51935
feat(fusion_accounting_assets): asset anomaly persisted model
...
- 3 anomaly types: behind_schedule, ahead_of_schedule, low_utilization
- 3 severity levels: low, medium, high
- expected / actual / variance_pct (mirrors anomaly_detection service output)
- 4-state lifecycle: new -> acknowledged -> resolved (or dismissed)
- action_acknowledge / action_dismiss / action_resolve transitions
- ondelete='cascade' on asset_id (anomalies follow the asset)
- 4 new tests (63 total)
Made-with: Cursor
2026-04-19 16:58:56 -04:00
gsinghpal
5c89763191
feat(fusion_accounting_assets): asset disposal record model
...
- 4 disposal types: sale, scrap, donation, lost
- mail.thread tracking on type / date / sale amount / partner
- gain_loss_amount computed:
- sale: sale_amount - book_value_at_disposal
- scrap / donation / lost: -book_value_at_disposal (full loss)
- ondelete='restrict' on asset_id (cannot delete an asset with disposal)
- move_id placeholder for engine-created journal entry
- 4 new tests (59 total)
Made-with: Cursor
2026-04-19 16:58:12 -04:00
gsinghpal
70e4404d9b
feat(fusion_accounting_assets): main fusion.asset model with state machine
...
- fusion.asset: lifecycle (draft -> running -> paused -> disposed)
- mail.thread + mail.activity.mixin tracking
- 3 depreciation methods + 3 prorate conventions selections
- monetary cost / salvage with check constraints (models.Constraint)
- computed book_value, total_depreciated, last_posted_date
- action_set_running / pause / resume / set_draft transitions
- minimal stubs for fusion.asset.category and
fusion.asset.depreciation.line so the One2many / Many2one comodels
resolve at registry build time; expanded in Tasks 9 + 10
- 7 new tests (47 total)
Made-with: Cursor
2026-04-19 16:55:59 -04:00
gsinghpal
99b6990dd6
feat(fusion_accounting_assets): Phase 3 skeleton + plan
...
50-task plan to replace Enterprise account_asset module:
- CORE scope: 3 depreciation methods (straight-line, declining-balance, units-of-production)
- HYBRID engine: shared primitives + persisted asset/category/disposal/anomaly models
- AI augmentation: utilization anomaly detection + LLM-suggested useful life
- Full lifecycle: draft -> running -> paused -> disposed
- Coexists with Enterprise (group_fusion_show_when_enterprise_absent)
- Same V19 conventions + test pyramid + perf-budget discipline as Phases 1-2
Skeleton: empty manifest + dirs + icon. Tasks 3-50 add the substance.
Made-with: Cursor
2026-04-19 16:43:06 -04:00