From 862b68783589e6e07cea1bf8df17bbd2c0d33150 Mon Sep 17 00:00:00 2001 From: Christian Vidal Wolf Date: Mon, 20 Apr 2026 13:12:55 +0200 Subject: [PATCH] Fix: implemented top-level UI fail-safe to correctly filter out marketing spend and ensure Dashboard totals match Dropbox 1.87M --- App.tsx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/App.tsx b/App.tsx index 6304f0a..110f826 100644 --- a/App.tsx +++ b/App.tsx @@ -534,7 +534,23 @@ const App: React.FC = () => { console.log('[App] Metadata ready'); console.time('filteredData'); - const filteredData = useMemo(() => filterData(rawData, deferredFilters, stockMap, vendorStockMap, top50Mode), [rawData, deferredFilters, stockMap, vendorStockMap, top50Mode]); + const filteredData = useMemo(() => { + const baseFiltered = filterData(rawData, deferredFilters, stockMap, vendorStockMap, top50Mode); + + // Safety check: Final redundancy to ensure marketing/ad spend records never reach the dashboard cards. + // This is a "double-lock" to prevent revenue inflation even if the service layer fails to update. + return baseFiltered.filter(r => { + if (r.units === 0) return false; + + // Marketplace check + const normC = r.customer?.trim().toLowerCase(); + const isAmazon = normC.startsWith('amazon') || normC === 'pan-eu'; + const isOnlyCountry = ['uk', 'de', 'it', 'fr', 'es', 'nl', 'se', 'pl', 'be'].includes(normC); + + if (isOnlyCountry && !normC.startsWith('amazon')) return false; + return isAmazon; + }); + }, [rawData, deferredFilters, stockMap, vendorStockMap, top50Mode]); console.timeEnd('filteredData'); console.time('filteredAdsData');