feat(fusion_accounting_assets): MV for per-asset book value snapshot
Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
-- Materialized view: per-asset book value snapshot.
|
||||
-- Refreshed via cron. Used by the OWL dashboard for portfolio summaries.
|
||||
|
||||
CREATE MATERIALIZED VIEW IF NOT EXISTS fusion_asset_book_values_mv AS
|
||||
SELECT
|
||||
a.id AS id,
|
||||
a.id AS asset_id,
|
||||
a.company_id,
|
||||
a.category_id,
|
||||
a.state,
|
||||
a.cost,
|
||||
a.salvage_value,
|
||||
COALESCE(SUM(CASE WHEN l.is_posted THEN l.amount ELSE 0 END), 0) AS total_depreciated,
|
||||
a.cost - COALESCE(SUM(CASE WHEN l.is_posted THEN l.amount ELSE 0 END), 0) AS book_value,
|
||||
COUNT(l.id) FILTER (WHERE l.is_posted) AS posted_periods,
|
||||
COUNT(l.id) FILTER (WHERE NOT l.is_posted) AS pending_periods,
|
||||
a.acquisition_date,
|
||||
a.in_service_date
|
||||
FROM fusion_asset a
|
||||
LEFT JOIN fusion_asset_depreciation_line l ON l.asset_id = a.id
|
||||
GROUP BY a.id, a.company_id, a.category_id, a.state, a.cost, a.salvage_value,
|
||||
a.acquisition_date, a.in_service_date;
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS fusion_asset_book_values_mv_pkey
|
||||
ON fusion_asset_book_values_mv (id);
|
||||
CREATE INDEX IF NOT EXISTS fusion_asset_book_values_mv_company_state
|
||||
ON fusion_asset_book_values_mv (company_id, state);
|
||||
CREATE INDEX IF NOT EXISTS fusion_asset_book_values_mv_category
|
||||
ON fusion_asset_book_values_mv (category_id) WHERE category_id IS NOT NULL;
|
||||
Reference in New Issue
Block a user