fix(catalog) : M6 — code/name envoyés en chaîne vide (mapping 422 produit)

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).
This commit is contained in:
2026-06-26 17:05:26 +02:00
parent 2b1071bedb
commit 58d0c499d4
@@ -127,8 +127,12 @@ export function useProductForm() {
const editing = productId.value !== null
try {
const payload: Record<string, unknown> = {
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).