fix: ignorer les désactivations lors d'un sync filtré par famille
Quand un onglet est sélectionné, les produits Shopify absents du tab peuvent appartenir à d'autres familles — ne pas les marquer 'deactivate'. Les désactivations ne s'appliquent qu'en mode catalogue complet (sans filtre). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -11,7 +11,7 @@ export async function GET(req: NextRequest) {
|
|||||||
fetchAllShopifyProducts(),
|
fetchAllShopifyProducts(),
|
||||||
])
|
])
|
||||||
|
|
||||||
const diff = computeDiff(sheetProducts, shopifyProducts)
|
const diff = computeDiff(sheetProducts, shopifyProducts, tab)
|
||||||
return NextResponse.json(diff)
|
return NextResponse.json(diff)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
const message = err instanceof Error ? err.message : 'Erreur inconnue'
|
const message = err instanceof Error ? err.message : 'Erreur inconnue'
|
||||||
|
|||||||
+9
-3
@@ -18,10 +18,13 @@ function getChangedFields(
|
|||||||
/**
|
/**
|
||||||
* Calcule le diff entre les produits Sheets et Shopify.
|
* Calcule le diff entre les produits Sheets et Shopify.
|
||||||
* Matching par handle (ref normalisée).
|
* Matching par handle (ref normalisée).
|
||||||
|
* Si tabFilter est fourni, les désactivations sont ignorées : on ne peut pas savoir
|
||||||
|
* si un produit Shopify absent du tab appartient à une autre famille ou a été supprimé.
|
||||||
*/
|
*/
|
||||||
export function computeDiff(
|
export function computeDiff(
|
||||||
sheetProducts: SyncProduct[],
|
sheetProducts: SyncProduct[],
|
||||||
shopifyProducts: ShopifyProductFull[],
|
shopifyProducts: ShopifyProductFull[],
|
||||||
|
tabFilter?: string,
|
||||||
): DiffResult {
|
): DiffResult {
|
||||||
const shopifyMap = new Map(shopifyProducts.map((p) => [p.handle, p]))
|
const shopifyMap = new Map(shopifyProducts.map((p) => [p.handle, p]))
|
||||||
const sheetHandles = new Set(sheetProducts.map((p) => p.handle))
|
const sheetHandles = new Set(sheetProducts.map((p) => p.handle))
|
||||||
@@ -48,9 +51,12 @@ export function computeDiff(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const shopify of shopifyProducts) {
|
// Désactivations uniquement en mode catalogue complet (sans filtre par famille)
|
||||||
if (shopify.status === 'active' && !sheetHandles.has(shopify.handle)) {
|
if (!tabFilter) {
|
||||||
changes.push({ type: 'deactivate', ref: shopify.ref, shopifyProduct: shopify })
|
for (const shopify of shopifyProducts) {
|
||||||
|
if (shopify.status === 'active' && !sheetHandles.has(shopify.handle)) {
|
||||||
|
changes.push({ type: 'deactivate', ref: shopify.ref, shopifyProduct: shopify })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user