From cddfee5d0915093bd528260dbbcf78296208dd95 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Wed, 9 Jul 2025 18:11:09 +0000 Subject: [PATCH] Require complete identity information and EAN13 code for each sale Makes identity document information and EAN13 code mandatory in the `NewSaleForm.tsx`, updates validation in `validation.ts`, and adds `numeroIdentite` to `Sale` and `FormData` types. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 91318273-c764-4fd4-be04-bdc12c38af32 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/e098e07a-77c2-4cd4-a935-0bcff4db12bf.jpg --- client/src/components/NewSaleForm.tsx | 40 +++++++++++++++------- client/src/components/SaleDetailsModal.tsx | 1 + client/src/lib/validation.ts | 6 +++- client/src/types/sale.ts | 8 +++-- 4 files changed, 39 insertions(+), 16 deletions(-) diff --git a/client/src/components/NewSaleForm.tsx b/client/src/components/NewSaleForm.tsx index 0995957..cbea827 100644 --- a/client/src/components/NewSaleForm.tsx +++ b/client/src/components/NewSaleForm.tsx @@ -37,6 +37,7 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) { dateNaissance: '', lieuNaissance: '', typeIdentite: '', + numeroIdentite: '', autoriteDelivrance: '', dateDelivrance: '', } @@ -96,11 +97,11 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) { return; } - // Validate EAN13 if provided - if (data.gencode && !validateEAN13(data.gencode)) { + // Validate EAN13 (now required) + if (!validateEAN13(data.gencode)) { toast({ title: "Code EAN13 invalide", - description: "Le code produit doit être un code EAN13 valide à 13 chiffres", + description: "Le gencode doit être un code EAN13 valide à 13 chiffres", variant: "destructive", }); return; @@ -112,12 +113,13 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) { typeArticle: data.typeArticle, categorie: data.categorie as 'F2' | 'F3', quantite: parseInt(data.quantite), - gencode: data.gencode || undefined, + gencode: data.gencode, nom: data.nom, prenom: data.prenom, - dateNaissance: data.dateNaissance || undefined, + dateNaissance: data.dateNaissance, lieuNaissance: data.lieuNaissance || undefined, - typeIdentite: data.typeIdentite || undefined, + typeIdentite: data.typeIdentite, + numeroIdentite: data.numeroIdentite, autoriteDelivrance: data.autoriteDelivrance || undefined, dateDelivrance: data.dateDelivrance || undefined, photoRecto: photos.recto, @@ -139,6 +141,7 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) { dateNaissance: '', lieuNaissance: '', typeIdentite: '', + numeroIdentite: '', autoriteDelivrance: '', dateDelivrance: '', }); @@ -186,9 +189,9 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) { name="vendeur" render={({ field }) => ( - Nom du vendeur * + Vendeur * - + @@ -286,9 +289,9 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) { name="gencode" render={({ field }) => ( - Code produit (EAN13) + Gencode (EAN13) * - + @@ -348,7 +351,7 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) { name="dateNaissance" render={({ field }) => ( - Date de naissance + Date de naissance * @@ -384,7 +387,7 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) { name="typeIdentite" render={({ field }) => ( - Type de pièce d'identité + Type de pièce d'identité * + + + + )} + /> Pièce d'Identité
Type: {sale.typeIdentite || 'Non spécifié'}
+
Numéro: {sale.numeroIdentite || 'Non spécifié'}
Autorité de délivrance: {sale.autoriteDelivrance || 'Non spécifiée'}
Date de délivrance:{' '} diff --git a/client/src/lib/validation.ts b/client/src/lib/validation.ts index ca15416..0b9d0ba 100644 --- a/client/src/lib/validation.ts +++ b/client/src/lib/validation.ts @@ -19,8 +19,12 @@ export function validateRequiredFields(formData: any): string[] { { key: 'typeArticle', label: 'Type d\'article' }, { key: 'categorie', label: 'Catégorie' }, { key: 'quantite', label: 'Quantité' }, + { key: 'gencode', label: 'Gencode' }, { key: 'nom', label: 'Nom' }, - { key: 'prenom', label: 'Prénom' } + { key: 'prenom', label: 'Prénom' }, + { key: 'dateNaissance', label: 'Date de naissance' }, + { key: 'typeIdentite', label: 'Type de pièce d\'identité' }, + { key: 'numeroIdentite', label: 'Numéro de pièce d\'identité' } ]; return requiredFields diff --git a/client/src/types/sale.ts b/client/src/types/sale.ts index 058a153..53a085b 100644 --- a/client/src/types/sale.ts +++ b/client/src/types/sale.ts @@ -10,16 +10,17 @@ export interface Sale { typeArticle: string; categorie: 'F2' | 'F3'; quantite: number; - gencode?: string; + gencode: string; // Client nom: string; prenom: string; - dateNaissance?: string; + dateNaissance: string; lieuNaissance?: string; // Identité - typeIdentite?: string; + typeIdentite: string; + numeroIdentite: string; autoriteDelivrance?: string; dateDelivrance?: string; @@ -40,6 +41,7 @@ export interface FormData { dateNaissance: string; lieuNaissance: string; typeIdentite: string; + numeroIdentite: string; autoriteDelivrance: string; dateDelivrance: string; photoRecto?: string;