From b713be4d154b90ae1352d323930e30cd3d714f6d Mon Sep 17 00:00:00 2001 From: enlineawork Date: Wed, 9 Sep 2026 15:16:45 -0300 Subject: [PATCH] fix(f6.1): keep reports on frozen inspection context --- .../inspection-reports.service.ts | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/api-v3/src/inspection-reports/inspection-reports.service.ts b/api-v3/src/inspection-reports/inspection-reports.service.ts index f4531f6..bdcf797 100644 --- a/api-v3/src/inspection-reports/inspection-reports.service.ts +++ b/api-v3/src/inspection-reports/inspection-reports.service.ts @@ -408,30 +408,24 @@ export class InspectionReportsService { } private contextFilter(column: 'operator_company_id' | 'operational_area_id', parameter: string): string { - return `EXISTS ( - SELECT 1 - FROM inspection_act_assets context_filter_link - INNER JOIN assets context_filter_asset ON context_filter_asset.id = context_filter_link.asset_id - WHERE context_filter_link.act_id = act.id - AND context_filter_link.included = true - AND context_filter_asset.${column} = ${parameter}::uuid - )`; + // Reports are historical documents. Their Area/Company filters must use the + // parent Inspection snapshot, never the mutable/current Inventory context. + return `visit.${column} = ${parameter}::uuid`; } private contextSelect(): string { return ` SELECT - COALESCE(JSONB_AGG(DISTINCT JSONB_BUILD_OBJECT( - 'id',company.id,'code',company.code,'name',company.name - )) FILTER (WHERE company.id IS NOT NULL),'[]'::jsonb) AS companies, - COALESCE(JSONB_AGG(DISTINCT JSONB_BUILD_OBJECT( - 'id',area.id,'code',area.code,'name',area.name - )) FILTER (WHERE area.id IS NOT NULL),'[]'::jsonb) AS areas - FROM inspection_act_assets context_link - INNER JOIN assets context_asset ON context_asset.id=context_link.asset_id - LEFT JOIN assets company ON company.id=context_asset.operator_company_id - LEFT JOIN assets area ON area.id=context_asset.operational_area_id - WHERE context_link.act_id=act.id AND context_link.included=true + CASE WHEN company.id IS NULL THEN '[]'::jsonb ELSE JSONB_BUILD_ARRAY( + JSONB_BUILD_OBJECT('id',company.id,'code',company.code,'name',company.name) + ) END AS companies, + CASE WHEN area.id IS NULL THEN '[]'::jsonb ELSE JSONB_BUILD_ARRAY( + JSONB_BUILD_OBJECT('id',area.id,'code',area.code,'name',area.name) + ) END AS areas + FROM inspection_visits context_visit + LEFT JOIN assets company ON company.id=context_visit.operator_company_id + LEFT JOIN assets area ON area.id=context_visit.operational_area_id + WHERE context_visit.id=act.visit_id `; }