mirror of
https://github.com/R0m1k3/Regisflow.git
synced 2026-10-22 14:48:19 +02:00
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
This commit is contained in:
1 parent
4fac1078a1
commit
cddfee5d09
4 files changed
+39
-16
No files matched your search
@@ -37,6 +37,7 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) {
|
|||||||
dateNaissance: '',
|
dateNaissance: '',
|
||||||
lieuNaissance: '',
|
lieuNaissance: '',
|
||||||
typeIdentite: '',
|
typeIdentite: '',
|
||||||
|
numeroIdentite: '',
|
||||||
autoriteDelivrance: '',
|
autoriteDelivrance: '',
|
||||||
dateDelivrance: '',
|
dateDelivrance: '',
|
||||||
}
|
}
|
||||||
@@ -96,11 +97,11 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate EAN13 if provided
|
// Validate EAN13 (now required)
|
||||||
if (data.gencode && !validateEAN13(data.gencode)) {
|
if (!validateEAN13(data.gencode)) {
|
||||||
toast({
|
toast({
|
||||||
title: "Code EAN13 invalide",
|
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",
|
variant: "destructive",
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
@@ -112,12 +113,13 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) {
|
|||||||
typeArticle: data.typeArticle,
|
typeArticle: data.typeArticle,
|
||||||
categorie: data.categorie as 'F2' | 'F3',
|
categorie: data.categorie as 'F2' | 'F3',
|
||||||
quantite: parseInt(data.quantite),
|
quantite: parseInt(data.quantite),
|
||||||
gencode: data.gencode || undefined,
|
gencode: data.gencode,
|
||||||
nom: data.nom,
|
nom: data.nom,
|
||||||
prenom: data.prenom,
|
prenom: data.prenom,
|
||||||
dateNaissance: data.dateNaissance || undefined,
|
dateNaissance: data.dateNaissance,
|
||||||
lieuNaissance: data.lieuNaissance || undefined,
|
lieuNaissance: data.lieuNaissance || undefined,
|
||||||
typeIdentite: data.typeIdentite || undefined,
|
typeIdentite: data.typeIdentite,
|
||||||
|
numeroIdentite: data.numeroIdentite,
|
||||||
autoriteDelivrance: data.autoriteDelivrance || undefined,
|
autoriteDelivrance: data.autoriteDelivrance || undefined,
|
||||||
dateDelivrance: data.dateDelivrance || undefined,
|
dateDelivrance: data.dateDelivrance || undefined,
|
||||||
photoRecto: photos.recto,
|
photoRecto: photos.recto,
|
||||||
@@ -139,6 +141,7 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) {
|
|||||||
dateNaissance: '',
|
dateNaissance: '',
|
||||||
lieuNaissance: '',
|
lieuNaissance: '',
|
||||||
typeIdentite: '',
|
typeIdentite: '',
|
||||||
|
numeroIdentite: '',
|
||||||
autoriteDelivrance: '',
|
autoriteDelivrance: '',
|
||||||
dateDelivrance: '',
|
dateDelivrance: '',
|
||||||
});
|
});
|
||||||
@@ -186,9 +189,9 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) {
|
|||||||
name="vendeur"
|
name="vendeur"
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<FormItem>
|
<FormItem>
|
||||||
<FormLabel>Nom du vendeur <span className="text-destructive">*</span></FormLabel>
|
<FormLabel>Vendeur <span className="text-destructive">*</span></FormLabel>
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<Input placeholder="Nom et prénom du vendeur" {...field} />
|
<Input placeholder="Vendeur" {...field} />
|
||||||
</FormControl>
|
</FormControl>
|
||||||
<FormMessage />
|
<FormMessage />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
@@ -286,9 +289,9 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) {
|
|||||||
name="gencode"
|
name="gencode"
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<FormItem>
|
<FormItem>
|
||||||
<FormLabel>Code produit (EAN13)</FormLabel>
|
<FormLabel>Gencode (EAN13) <span className="text-destructive">*</span></FormLabel>
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<Input placeholder="Ex: 1234567890123" {...field} />
|
<Input placeholder="Code EAN13 à 13 chiffres" {...field} />
|
||||||
</FormControl>
|
</FormControl>
|
||||||
<FormMessage />
|
<FormMessage />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
@@ -348,7 +351,7 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) {
|
|||||||
name="dateNaissance"
|
name="dateNaissance"
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<FormItem>
|
<FormItem>
|
||||||
<FormLabel>Date de naissance</FormLabel>
|
<FormLabel>Date de naissance <span className="text-destructive">*</span></FormLabel>
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<Input type="date" {...field} />
|
<Input type="date" {...field} />
|
||||||
</FormControl>
|
</FormControl>
|
||||||
@@ -384,7 +387,7 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) {
|
|||||||
name="typeIdentite"
|
name="typeIdentite"
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<FormItem>
|
<FormItem>
|
||||||
<FormLabel>Type de pièce d'identité</FormLabel>
|
<FormLabel>Type de pièce d'identité <span className="text-destructive">*</span></FormLabel>
|
||||||
<Select value={field.value} onValueChange={field.onChange}>
|
<Select value={field.value} onValueChange={field.onChange}>
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<SelectTrigger>
|
<SelectTrigger>
|
||||||
@@ -403,6 +406,19 @@ export default function NewSaleForm({ onSaveSale }: NewSaleFormProps) {
|
|||||||
</FormItem>
|
</FormItem>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
<FormField
|
||||||
|
control={form.control}
|
||||||
|
name="numeroIdentite"
|
||||||
|
render={({ field }) => (
|
||||||
|
<FormItem>
|
||||||
|
<FormLabel>Numéro de pièce d'identité <span className="text-destructive">*</span></FormLabel>
|
||||||
|
<FormControl>
|
||||||
|
<Input placeholder="Numéro de la pièce d'identité" {...field} />
|
||||||
|
</FormControl>
|
||||||
|
<FormMessage />
|
||||||
|
</FormItem>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
<FormField
|
<FormField
|
||||||
control={form.control}
|
control={form.control}
|
||||||
name="autoriteDelivrance"
|
name="autoriteDelivrance"
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ export default function SaleDetailsModal({ isOpen, sale, onClose }: SaleDetailsM
|
|||||||
<h4 className="font-medium text-gray-900 mb-2">Pièce d'Identité</h4>
|
<h4 className="font-medium text-gray-900 mb-2">Pièce d'Identité</h4>
|
||||||
<div className="grid grid-cols-2 gap-4 text-sm">
|
<div className="grid grid-cols-2 gap-4 text-sm">
|
||||||
<div><span className="font-medium">Type:</span> {sale.typeIdentite || 'Non spécifié'}</div>
|
<div><span className="font-medium">Type:</span> {sale.typeIdentite || 'Non spécifié'}</div>
|
||||||
|
<div><span className="font-medium">Numéro:</span> {sale.numeroIdentite || 'Non spécifié'}</div>
|
||||||
<div><span className="font-medium">Autorité de délivrance:</span> {sale.autoriteDelivrance || 'Non spécifiée'}</div>
|
<div><span className="font-medium">Autorité de délivrance:</span> {sale.autoriteDelivrance || 'Non spécifiée'}</div>
|
||||||
<div>
|
<div>
|
||||||
<span className="font-medium">Date de délivrance:</span>{' '}
|
<span className="font-medium">Date de délivrance:</span>{' '}
|
||||||
|
|||||||
@@ -19,8 +19,12 @@ export function validateRequiredFields(formData: any): string[] {
|
|||||||
{ key: 'typeArticle', label: 'Type d\'article' },
|
{ key: 'typeArticle', label: 'Type d\'article' },
|
||||||
{ key: 'categorie', label: 'Catégorie' },
|
{ key: 'categorie', label: 'Catégorie' },
|
||||||
{ key: 'quantite', label: 'Quantité' },
|
{ key: 'quantite', label: 'Quantité' },
|
||||||
|
{ key: 'gencode', label: 'Gencode' },
|
||||||
{ key: 'nom', label: 'Nom' },
|
{ 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
|
return requiredFields
|
||||||
|
|||||||
@@ -10,16 +10,17 @@ export interface Sale {
|
|||||||
typeArticle: string;
|
typeArticle: string;
|
||||||
categorie: 'F2' | 'F3';
|
categorie: 'F2' | 'F3';
|
||||||
quantite: number;
|
quantite: number;
|
||||||
gencode?: string;
|
gencode: string;
|
||||||
|
|
||||||
// Client
|
// Client
|
||||||
nom: string;
|
nom: string;
|
||||||
prenom: string;
|
prenom: string;
|
||||||
dateNaissance?: string;
|
dateNaissance: string;
|
||||||
lieuNaissance?: string;
|
lieuNaissance?: string;
|
||||||
|
|
||||||
// Identité
|
// Identité
|
||||||
typeIdentite?: string;
|
typeIdentite: string;
|
||||||
|
numeroIdentite: string;
|
||||||
autoriteDelivrance?: string;
|
autoriteDelivrance?: string;
|
||||||
dateDelivrance?: string;
|
dateDelivrance?: string;
|
||||||
|
|
||||||
@@ -40,6 +41,7 @@ export interface FormData {
|
|||||||
dateNaissance: string;
|
dateNaissance: string;
|
||||||
lieuNaissance: string;
|
lieuNaissance: string;
|
||||||
typeIdentite: string;
|
typeIdentite: string;
|
||||||
|
numeroIdentite: string;
|
||||||
autoriteDelivrance: string;
|
autoriteDelivrance: string;
|
||||||
dateDelivrance: string;
|
dateDelivrance: string;
|
||||||
photoRecto?: string;
|
photoRecto?: string;
|
||||||
|
|||||||
Reference in new issue
Block a user