diff --git a/src/features/grid/api/get-product-rows.ts b/src/features/grid/api/get-product-rows.ts index 725257f..1ae30c2 100644 --- a/src/features/grid/api/get-product-rows.ts +++ b/src/features/grid/api/get-product-rows.ts @@ -313,7 +313,15 @@ async function buildProductRows(input: GetProductRowsInput): Promise 0) { const changes = snaps[0].changes as Record; + let enAttente = 0; + let obsoletes = 0; for (const [codein, change] of Object.entries(changes)) { const product = productMap.get(codein); - if (product && change.after) { - // codeGammeInit reste figé — seulement codeGamme est overridé + if (!product || !change.after) continue; + + const gammeLive = product.codeGammeInit; // état serveur courant + const before = change.before ?? null; + const stillPending = before === (gammeLive ?? null) && change.after !== gammeLive; + + if (stillPending) { + // Modification pas encore appliquée sur le serveur → on la remonte product.codeGamme = change.after as GammeCode; + enAttente++; + } else { + // Déjà appliquée côté serveur (ou serveur divergent) → on garde le LIVE + product.codeGamme = gammeLive; + obsoletes++; } } - console.log(`[getProductRows] Gammes restaurées depuis snapshot`); + console.log(`[getProductRows] Snapshot: ${enAttente} modif(s) en attente réappliquée(s), ${obsoletes} déjà appliquée(s)/obsolète(s) ignorée(s)`); } } catch (snapErr) { console.error("[getProductRows] Snapshot restore error:", snapErr);