fix(f6.1): keep reports on frozen inspection context

This commit is contained in:
2026-09-09 15:16:45 -03:00
parent 20ecbb2872
commit b713be4d15
@@ -408,30 +408,24 @@ export class InspectionReportsService {
} }
private contextFilter(column: 'operator_company_id' | 'operational_area_id', parameter: string): string { private contextFilter(column: 'operator_company_id' | 'operational_area_id', parameter: string): string {
return `EXISTS ( // Reports are historical documents. Their Area/Company filters must use the
SELECT 1 // parent Inspection snapshot, never the mutable/current Inventory context.
FROM inspection_act_assets context_filter_link return `visit.${column} = ${parameter}::uuid`;
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
)`;
} }
private contextSelect(): string { private contextSelect(): string {
return ` return `
SELECT SELECT
COALESCE(JSONB_AGG(DISTINCT JSONB_BUILD_OBJECT( CASE WHEN company.id IS NULL THEN '[]'::jsonb ELSE JSONB_BUILD_ARRAY(
'id',company.id,'code',company.code,'name',company.name JSONB_BUILD_OBJECT('id',company.id,'code',company.code,'name',company.name)
)) FILTER (WHERE company.id IS NOT NULL),'[]'::jsonb) AS companies, ) END AS companies,
COALESCE(JSONB_AGG(DISTINCT JSONB_BUILD_OBJECT( CASE WHEN area.id IS NULL THEN '[]'::jsonb ELSE JSONB_BUILD_ARRAY(
'id',area.id,'code',area.code,'name',area.name JSONB_BUILD_OBJECT('id',area.id,'code',area.code,'name',area.name)
)) FILTER (WHERE area.id IS NOT NULL),'[]'::jsonb) AS areas ) END AS areas
FROM inspection_act_assets context_link FROM inspection_visits context_visit
INNER JOIN assets context_asset ON context_asset.id=context_link.asset_id LEFT JOIN assets company ON company.id=context_visit.operator_company_id
LEFT JOIN assets company ON company.id=context_asset.operator_company_id LEFT JOIN assets area ON area.id=context_visit.operational_area_id
LEFT JOIN assets area ON area.id=context_asset.operational_area_id WHERE context_visit.id=act.visit_id
WHERE context_link.act_id=act.id AND context_link.included=true
`; `;
} }