diff --git a/src/app/api/creation/sync-stock/route.ts b/src/app/api/creation/sync-stock/route.ts index 6dc30bb..cc38976 100644 --- a/src/app/api/creation/sync-stock/route.ts +++ b/src/app/api/creation/sync-stock/route.ts @@ -1,7 +1,7 @@ import { NextRequest, NextResponse } from 'next/server' import { getServerSession } from 'next-auth' import { authOptions } from '@/lib/auth' -import { fetchPendingProducts, findColIndex } from '@/lib/creationSheets' +import { findColIndex } from '@/lib/creationSheets' import { getConfig } from '@/lib/shopifySync' export async function POST(req: NextRequest) { @@ -86,8 +86,13 @@ export async function POST(req: NextRequest) { try { // Récupérer le variant pour obtenir inventory_item_id const pRes = await fetch(`${baseUrl}/products/${shopifyId}.json?fields=variants`, { headers }) + if (pRes.status === 404) { + // Produit supprimé de Shopify, on ignore silencieusement + continue + } if (!pRes.ok) { - send({ type: 'error', title, message: `Produit ${shopifyId} introuvable (${pRes.status})` }) + const msg = `Produit ${shopifyId} erreur (${pRes.status})` + send({ type: 'error', title, message: msg }) errors++ continue } @@ -121,6 +126,7 @@ export async function POST(req: NextRequest) { send({ type: 'done', updated, errors }) } catch (err) { const message = err instanceof Error ? err.message : 'Erreur inconnue' + console.error('[sync-stock] fatal:', message) send({ type: 'done', updated: 0, errors: 1, fatalError: message }) } finally { controller.close() diff --git a/src/lib/creationSheets.ts b/src/lib/creationSheets.ts index b90fd3e..7af50dd 100644 --- a/src/lib/creationSheets.ts +++ b/src/lib/creationSheets.ts @@ -114,11 +114,14 @@ export async function writeShopifyIdToSheet(tab: string, rowNumber: number, shop headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer', assertion: jwt }), }) - if (!tokenRes.ok) return + if (!tokenRes.ok) { + console.error(`[sheets] token error ${tokenRes.status} for ${tab}!A${rowNumber}`) + return + } const { access_token } = await tokenRes.json() as { access_token: string } const range = encodeURIComponent(`${tab}!A${rowNumber}`) - await fetch( + const writeRes = await fetch( `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/${range}?valueInputOption=RAW`, { method: 'PUT', @@ -126,6 +129,10 @@ export async function writeShopifyIdToSheet(tab: string, rowNumber: number, shop body: JSON.stringify({ range: `${tab}!A${rowNumber}`, majorDimension: 'ROWS', values: [[shopifyId]] }), }, ) + if (!writeRes.ok) { + const txt = await writeRes.text() + console.error(`[sheets] write error ${writeRes.status} for ${tab}!A${rowNumber}: ${txt}`) + } } export async function fetchPendingProducts(