fix: persist CPNP No. across refreshes by saving as 'edited' and restoring in merge

- saveRowToSupabase now accepts optional status param (default 'pending')
- CosmeticItemsView saves CPNP with status 'edited' so resetAllPendingRows
  does not affect it and it survives the startup merge
- Re-added CPNP_NO to editableColumns so the merge restores it from Supabase

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
Christian Vidal Wolf
2026-05-12 16:03:12 +02:00
co-authored by claude-flow
parent a0b793b797
commit 2961d3f86a
3 changed files with 4 additions and 3 deletions
+1
View File
@@ -206,6 +206,7 @@ export default function App() {
resolvedCols.VALIDATED_NOTE, resolvedCols.VALIDATED_NOTE,
resolvedCols.PRODUCT_TYPE, resolvedCols.PRODUCT_TYPE,
resolvedCols.ITEM_TO_LOGISTIC, resolvedCols.ITEM_TO_LOGISTIC,
resolvedCols.CPNP_NO,
]); ]);
headers.forEach((h: any, i: number) => { headers.forEach((h: any, i: number) => {
+1 -1
View File
@@ -135,7 +135,7 @@ export function CosmeticItemsView({ data, headers, onSaveRow, onCaptureState, ro
setEditingCpnp(null); setEditingCpnp(null);
onCaptureState(`Updated CPNP No. for ${articleNo}`); onCaptureState(`Updated CPNP No. for ${articleNo}`);
onSaveRow(rowIndex, newRow); onSaveRow(rowIndex, newRow);
const result = await saveRowToSupabase(articleNo, newRow); const result = await saveRowToSupabase(articleNo, newRow, 'edited');
setSavingCpnp(null); setSavingCpnp(null);
if (!result.success) { if (!result.success) {
alert(`Error saving CPNP No. for ${articleNo}: ${result.error}`); alert(`Error saving CPNP No. for ${articleNo}: ${result.error}`);
+2 -2
View File
@@ -72,7 +72,7 @@ export async function getAllSyncedRows(): Promise<Record<string, SyncedRow>> {
} }
} }
export async function saveRowToSupabase(articleNo: string, rowData: ExcelRow): Promise<{ success: boolean; error?: string }> { export async function saveRowToSupabase(articleNo: string, rowData: ExcelRow, status: 'pending' | 'edited' | 'synced' = 'pending'): Promise<{ success: boolean; error?: string }> {
try { try {
const response = await safeFetch( const response = await safeFetch(
`${SUPABASE_URL}/rest/v1/products`, `${SUPABASE_URL}/rest/v1/products`,
@@ -85,7 +85,7 @@ export async function saveRowToSupabase(articleNo: string, rowData: ExcelRow): P
body: JSON.stringify({ body: JSON.stringify({
product_id: articleNo, product_id: articleNo,
data: rowData, data: rowData,
status: 'pending', status,
updated_at: new Date().toISOString() updated_at: new Date().toISOString()
}) })
} }