From 9200c554e18ba762715d1360166198a734324f7c Mon Sep 17 00:00:00 2001 From: "christian.vidal" Date: Thu, 29 Jan 2026 20:56:19 +0100 Subject: [PATCH] Fix Forecast Seasonality: Process weights using global data even when filtered --- App.tsx | 2 +- services/dataProcessor.ts | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/App.tsx b/App.tsx index 0ef46ac..09e8590 100644 --- a/App.tsx +++ b/App.tsx @@ -246,7 +246,7 @@ const App: React.FC = () => { } }); - const viewData = calculateForecastViewData(sales, fcRecords, meta, activeFilters, velocityMap); + const viewData = calculateForecastViewData(sales, fcRecords, meta, activeFilters, velocityMap, globalSales.length > 0 ? globalSales : undefined); setForecastData(viewData); console.log('[App] Forecast calculation complete:', viewData.length, 'records'); } catch (error) { diff --git a/services/dataProcessor.ts b/services/dataProcessor.ts index e8124f8..fecf7a9 100644 --- a/services/dataProcessor.ts +++ b/services/dataProcessor.ts @@ -1638,10 +1638,13 @@ export const calculateForecastViewData = ( forecastData: ForecastRecord[], asinMetadata: Map, filters?: FilterState, - velocityMap?: Map + velocityMap?: Map, + referenceData?: SalesRecord[] // NEW: Full dataset for global seasonality context ): ProductForecastData[] => { - const data2025 = rawData.filter(r => r.year === 2025); - const data2026 = rawData.filter(r => r.year === 2026); + // Use referenceData if provided (for global weights), otherwise fallback to rawData + const seasonalitySource = referenceData || rawData; + const data2025 = seasonalitySource.filter(r => r.year === 2025); + const data2026 = seasonalitySource.filter(r => r.year === 2026); // Calculate Seasonality weights for 2025 const getWeightsInfo = (records: SalesRecord[]): { weights: number[]; monthsCount: number } | null => {