From 58d0c499d40f47bbc25bca80ee984e3e08bd39dc Mon Sep 17 00:00:00 2001 From: tristan Date: Fri, 26 Jun 2026 17:05:26 +0200 Subject: [PATCH] =?UTF-8?q?fix(catalog)=20:=20M6=20=E2=80=94=20code/name?= =?UTF-8?q?=20envoy=C3=A9s=20en=20cha=C3=AEne=20vide=20(mapping=20422=20pr?= =?UTF-8?q?oduit)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le formulaire produit envoyait code/name à null quand vides (form.code || null). Or les setters back setCode(string)/setName(string) sont non-nullables : null déclenchait une erreur de type (dénormalisation, code générique mappé « Date invalide » côté front) qui court-circuitait toutes les autres violations — d'où seuls code/name affichés, en « Date invalide ». On envoie '' (form.code ?? '') : la contrainte NotBlank renvoie un message FR propre par champ, et la 422 porte les 6 violations d'un coup (code, name, states, category, sites, storageTypes), chacune mappée inline (vérifié API). --- frontend/modules/catalog/composables/useProductForm.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/modules/catalog/composables/useProductForm.ts b/frontend/modules/catalog/composables/useProductForm.ts index 0d6237b..1d1a57a 100644 --- a/frontend/modules/catalog/composables/useProductForm.ts +++ b/frontend/modules/catalog/composables/useProductForm.ts @@ -127,8 +127,12 @@ export function useProductForm() { const editing = productId.value !== null try { const payload: Record = { - code: form.code || null, - name: form.name || null, + // Chaine vide (jamais null) : les setters back setCode/setName attendent + // un `string` non-nullable -> envoyer null leverait une erreur de type + // (denormalisation) qui court-circuiterait toutes les autres violations. + // Avec '', la contrainte NotBlank renvoie un message propre par champ. + code: form.code ?? '', + name: form.name ?? '', states: form.states, // RG-6.03 : booleens forces a false hors « Vendu » (le back les // re-force, on garde le payload coherent).