diff --git a/src/App.tsx b/src/App.tsx index 112dd16..66d7af2 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -135,7 +135,27 @@ export default function App() { console.log('Fetching synced data from Supabase...'); const syncedData = await getAllSyncedRows(); - const resolvedCols = resolveColumnIndices(headers); + // Extend headers with virtual columns if the Excel is shorter than the saved data. + // COLUMNS hardcoded indices (PRODUCT_TYPE=103, ITEM_TO_LOGISTIC=104, etc.) are used + // by older saved rows — ensure headers covers them so the merge and render work. + const extendedHeaders = [...headers]; + const VIRTUAL_COLS: Record = { + [COLUMNS.VERIFIED_DIMS]: 'Verified Dims', + [COLUMNS.VALIDATED_CHECK]: 'Validated', + [COLUMNS.VALIDATED_NOTE]: 'Note', + [COLUMNS.PRODUCT_TYPE]: 'TYPE', + [COLUMNS.ITEM_TO_LOGISTIC]: 'Item to Logistic', + [COLUMNS.ANNA_CHECK]: 'Anna Check', + [COLUMNS.ANNA_NOTE]: 'Anna Note', + }; + Object.entries(VIRTUAL_COLS).forEach(([idxStr, name]) => { + const idx = Number(idxStr); + if (extendedHeaders[idx] === undefined) { + extendedHeaders[idx] = name; + } + }); + + const resolvedCols = resolveColumnIndices(extendedHeaders); const editableColumns = new Set([ resolvedCols.CLASSIFICATION, resolvedCols.LONG_DE, resolvedCols.LONG_EN, @@ -187,7 +207,7 @@ const articleNoIdx = resolvedCols.ARTICLE_NO; return finalRow.map((val: any, idx: number) => { if (val === undefined || val === null || val === '') return val; - const header = (headers[idx] || '').toLowerCase(); + const header = (extendedHeaders[idx] || '').toLowerCase(); if ((header.includes('id') || header.includes('no') || header.includes('code') || header.includes('art.') || header.includes('barcode') || header.includes('article')) && @@ -213,12 +233,12 @@ const articleNoIdx = resolvedCols.ARTICLE_NO; }); }); - const asinIdx = (headers as string[]).findIndex((h: string) => + const asinIdx = (extendedHeaders as string[]).findIndex((h: string) => String(h).toLowerCase().trim() === 'asin' ); - + setAppState({ - headers: headers, + headers: extendedHeaders, data: processedRows, fileName: 'Data-Matrix.xlsx (Cloud Sync)', fileDate: new Date(),