From 4abe7f8cd101d49c172bff4dd17eba94f52c6d9e Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Tue, 12 Aug 2025 14:49:30 +0000 Subject: [PATCH] Fix client order validation errors for production Update Zod schemas and frontend form handling to correctly coerce string inputs to numbers for fields like supplierId and deposit, resolving server-side validation errors and improving data integrity. Replit-Commit-Author: Agent Replit-Commit-Session-Id: b163d4c0-de5e-4f4e-a9c0-aed4c7049718 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/b163d4c0-de5e-4f4e-a9c0-aed4c7049718/W2tfZav --- VALIDATION-ERROR-FIX.md | 131 ++++++------------ ...-4D0B-8963-F3959CF3A5F3}_1755010018200.png | Bin 0 -> 64023 bytes client/src/components/CustomerOrderForm.tsx | 27 ++-- cookies.txt | 2 +- shared/schema.ts | 10 +- 5 files changed, 62 insertions(+), 108 deletions(-) create mode 100644 attached_assets/{F3D194AF-8FB6-4D0B-8963-F3959CF3A5F3}_1755010018200.png diff --git a/VALIDATION-ERROR-FIX.md b/VALIDATION-ERROR-FIX.md index db12d27..b8f12f7 100644 --- a/VALIDATION-ERROR-FIX.md +++ b/VALIDATION-ERROR-FIX.md @@ -1,106 +1,61 @@ -# Fix Urgent - Erreurs de Validation Zod +# Fix Validation Errors - Commandes Client Production -## ❌ Problème Identifié -**Erreur 500 :** ZodError lors de PUT /api/deliveries/:id +## Problème Identifié -### Erreurs Specifiques -1. **blAmount** : Expected string, received number -2. **validatedAt** : Expected date, received string +**Erreurs de validation dans le formulaire de commande client :** +1. `"Expected number, received string"` pour le champ **Fournisseur** (`supplierId`) +2. `"Expected number, received string"` pour le champ **Acompte** (`deposit`) -## 🔍 Analyse du Problème +## Cause du Problème -### Schema Drizzle (shared/schema.ts) -```typescript -// Dans deliveries table: -blAmount: decimal("bl_amount", { precision: 10, scale: 2 }) // → Zod attend string -invoiceAmount: decimal("invoice_amount", { precision: 10, scale: 2 }) // → Zod attend string -validatedAt: timestamp("validated_at") // → Zod attend Date object -``` +Le formulaire frontend envoie des valeurs string, mais le schema Zod attend des numbers : -### Données Envoyées depuis Frontend ```javascript -// ❌ Problématique -{ - blAmount: 3397.86, // number → should be string - invoiceAmount: null, // OK - validatedAt: '2025-08-12T11:42:39.679Z' // string → should be Date -} +// AVANT (Problématique) +supplierId: z.number().int().positive().optional().default(1) +deposit: z.number().optional().default(0) + +// APRÈS (Corrigé) +supplierId: z.coerce.number().int().positive().optional().default(1) +deposit: z.coerce.number().optional().default(0) ``` -## ✅ Solutions Appliquées +## Solution Appliquée -### 1. **Transformation côté Serveur** (server/routes.ts) -```typescript -// Avant validation Zod, transformer les types -const transformedData = { ...req.body }; +**Fichier modifié :** `shared/schema.ts` -// Convertir montants number → string -if (transformedData.blAmount !== undefined && transformedData.blAmount !== null) { - transformedData.blAmount = transformedData.blAmount.toString(); -} -if (transformedData.invoiceAmount !== undefined && transformedData.invoiceAmount !== null) { - transformedData.invoiceAmount = transformedData.invoiceAmount.toString(); -} +✅ Ajouté `z.coerce.number()` pour forcer la conversion automatique string → number +✅ Appliqué aussi pour `quantity` et `groupId` par précaution +✅ Corrigé `customerEmail` pour accepter chaîne vide avec `.or(z.literal(""))` -// Convertir validatedAt string → Date -if (transformedData.validatedAt && typeof transformedData.validatedAt === 'string') { - transformedData.validatedAt = new Date(transformedData.validatedAt); -} +## Schema Corrigé -const data = insertDeliverySchema.partial().parse(transformedData); -``` - -### 2. **Correction côté Frontend** (ReconciliationModal.tsx) -```typescript -// Avant -validatedAt: new Date() // ❌ Date object → string lors JSON.stringify - -// Après -validatedAt: new Date().toISOString() // ✅ string → convertie en Date côté serveur -``` - -### 3. **Montants toujours en string** (ReconciliationModal.tsx) -```typescript -// Déjà corrigé précédemment -blAmount: formData.blAmount ? formData.blAmount.toString() : null, -invoiceAmount: formData.invoiceAmount ? formData.invoiceAmount.toString() : null, -``` - -## 🧪 Test de Validation - -### Payload Attendu Maintenant ```javascript -// ✅ Correct après transformation -{ - blNumber: 'LD2250800571', - blAmount: '3397.86', // string ✅ - invoiceReference: null, - invoiceAmount: null, - reconciled: true, - validatedAt: new Date('2025-08-12T11:42:39.679Z') // Date object ✅ -} +export const insertCustomerOrderFrontendSchema = z.object({ + customerName: z.string().min(1, "Customer name is required"), + contactNumber: z.string().min(1, "Contact number is required"), + productName: z.string().min(1, "Product name is required"), + productDescription: z.string().optional(), + quantity: z.coerce.number().int().positive().default(1), // ✅ CORRIGÉ + groupId: z.coerce.number().int().positive(), // ✅ CORRIGÉ + isPickup: z.boolean().default(false), + notes: z.string().optional(), + orderTaker: z.string().optional(), + gencode: z.string().optional().default(""), + supplierId: z.coerce.number().int().positive().optional().default(1), // ✅ CORRIGÉ + deposit: z.coerce.number().optional().default(0), // ✅ CORRIGÉ + isPromotionalPrice: z.boolean().default(false), + customerEmail: z.string().email().optional().or(z.literal("")), // ✅ CORRIGÉ + productReference: z.string().optional(), +}); ``` -### Tests à Effectuer -1. **Enregistrer données BL** : blAmount doit passer en string -2. **Valider rapprochement** : validatedAt doit passer en Date -3. **Enregistrer montant facture** : invoiceAmount doit passer en string -4. **Vérifier console** : Plus d'erreurs ZodError 500 +## Test -## 🔄 Flux de Données Complet +Après cette correction, les employés devraient pouvoir créer des commandes client sans erreur de validation en production. -``` -Frontend Form → JSON.stringify → HTTP Request → Server Transform → Zod Validation → Database - ↓ ↓ ↓ ↓ ↓ ↓ -{number} → "3397.86" → "3397.86" → "3397.86" → ✅ → DECIMAL -{Date} → "2025-..." → "2025-..." → Date(...) → ✅ → TIMESTAMP -``` +## Déploiement -## 📊 Status - -- ✅ Transformation automatique côté serveur -- ✅ Frontend envoie validatedAt en ISO string -- ✅ Montants forcés en string côté client -- 🔄 **À tester en production** - -**L'erreur 500 ZodError devrait être résolue !** \ No newline at end of file +1. ✅ Schema corrigé dans `shared/schema.ts` +2. 🔄 **Redémarrer le serveur production** +3. 🧪 **Tester création commande client avec employé** \ No newline at end of file diff --git a/attached_assets/{F3D194AF-8FB6-4D0B-8963-F3959CF3A5F3}_1755010018200.png b/attached_assets/{F3D194AF-8FB6-4D0B-8963-F3959CF3A5F3}_1755010018200.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a380c7b43455ea50b25ef102b6e0c492504e59 GIT binary patch literal 64023 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 qKj(!?G ( N° de téléphone @@ -236,7 +235,7 @@ export function CustomerOrderForm({ ( Désignation du produit diff --git a/cookies.txt b/cookies.txt index dff7434..9bd4875 100644 --- a/cookies.txt +++ b/cookies.txt @@ -2,4 +2,4 @@ # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. -#HttpOnly_localhost FALSE / FALSE 1755095028 connect.sid s%3AxwnR6osGUOsL-I6MHjHctBuJf4K1HUWh.jqsaHkMTtzflaI4dg%2BmJBmTrVplUTDTG45KCUiL%2FVfw +#HttpOnly_localhost FALSE / FALSE 1755096543 connect.sid s%3AdW4IaK_l9KAwScxqJTml_UK7Lh2MI3U-.9wChJ5YVxYxvwztaxrxvedzNdY2gvauFeMasHVP8jsk diff --git a/shared/schema.ts b/shared/schema.ts index 4389173..6848689 100644 --- a/shared/schema.ts +++ b/shared/schema.ts @@ -456,17 +456,17 @@ export const insertCustomerOrderFrontendSchema = z.object({ contactNumber: z.string().min(1, "Contact number is required"), // Maps to customerPhone productName: z.string().min(1, "Product name is required"), // Maps to productDesignation productDescription: z.string().optional(), // Optional description - quantity: z.number().int().positive().default(1), - groupId: z.number().int().positive(), + quantity: z.coerce.number().int().positive().default(1), + groupId: z.coerce.number().int().positive(), isPickup: z.boolean().default(false), notes: z.string().optional(), // Optional fields with defaults orderTaker: z.string().optional(), // Will be set to creator name if not provided gencode: z.string().optional().default(""), // Will be empty if not provided - supplierId: z.number().int().positive().optional().default(1), // Default supplier ID - deposit: z.number().optional().default(0), + supplierId: z.coerce.number().int().positive().optional().default(1), // Default supplier ID + deposit: z.coerce.number().optional().default(0), isPromotionalPrice: z.boolean().default(false), - customerEmail: z.string().email().optional(), + customerEmail: z.string().email().optional().or(z.literal("")), productReference: z.string().optional(), });