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');