From 7e2eed93df7d41967cf545bb6c63e55dd52eb514 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Thu, 2 Apr 2026 14:01:31 +0200 Subject: [PATCH] feat: add CustomerOrderForm component with automated product lookup and validation --- client/src/components/CustomerOrderForm.tsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/client/src/components/CustomerOrderForm.tsx b/client/src/components/CustomerOrderForm.tsx index 097d898..87f58bb 100644 --- a/client/src/components/CustomerOrderForm.tsx +++ b/client/src/components/CustomerOrderForm.tsx @@ -162,7 +162,8 @@ export function CustomerOrderForm({ // Flag pour éviter que le remplissage auto de productReference ne redéclenche une recherche const autoFilledRef = useRef(false); // En mode édition, ignorer les watchers au premier rendu (valeurs déjà remplies) - const initialEditSkipRef = useRef(!!order); + const initialGencodeSkipRef = useRef(!!order); + const initialRefSkipRef = useRef(!!order); const lookupDebounceRef = useRef | null>(null); const gencodeValue = form.watch("gencode"); const referenceValue = form.watch("productReference"); @@ -212,7 +213,7 @@ export function CustomerOrderForm({ }; useEffect(() => { - if (initialEditSkipRef.current) { initialEditSkipRef.current = false; return; } + if (initialGencodeSkipRef.current) { initialGencodeSkipRef.current = false; return; } if (!gencodeValue || gencodeValue.length < 8) { setArticleNotFound(false); return; } if (lookupDebounceRef.current) clearTimeout(lookupDebounceRef.current); lookupDebounceRef.current = setTimeout(() => { @@ -224,6 +225,7 @@ export function CustomerOrderForm({ useEffect(() => { // Si la valeur a été remplie automatiquement, on ignore ce cycle if (autoFilledRef.current) { autoFilledRef.current = false; return; } + if (initialRefSkipRef.current) { initialRefSkipRef.current = false; return; } if (!referenceValue || referenceValue.length < 3) { setArticleNotFound(false); return; } if (lookupDebounceRef.current) clearTimeout(lookupDebounceRef.current); lookupDebounceRef.current = setTimeout(() => { @@ -434,8 +436,8 @@ export function CustomerOrderForm({ {/* Case "Client appelé" cachée pour nouvelles commandes */} - {/* Produit non référencé */} - {articleNotFound && ( + {/* Produit non référencé — uniquement en création */} + {articleNotFound && !order && (
Produit non référencé — ce produit n'existe pas dans la base. La commande ne peut pas être créée.
@@ -453,7 +455,7 @@ export function CustomerOrderForm({