90 lines
3.4 KiB
JavaScript
90 lines
3.4 KiB
JavaScript
|
|
import React from 'react';
|
|
import FormModal, { FormSection, FormField, Input, Select, Textarea } from '@/components/FormModal';
|
|
import { z } from 'zod';
|
|
import { toast } from '@/components/ui/use-toast';
|
|
|
|
const ProductFamilyFormModal = ({ isOpen, onClose, initialData, onSubmit }) => {
|
|
const handleSubmit = (e) => {
|
|
e.preventDefault();
|
|
// Simulate form submission
|
|
setTimeout(() => {
|
|
if (onSubmit) {
|
|
onSubmit(initialData ? { ...initialData } : { id: Math.random() });
|
|
}
|
|
onClose();
|
|
toast({
|
|
title: initialData ? "Famille modifiée" : "Famille créée",
|
|
description: "Les informations ont été enregistrées avec succès.",
|
|
variant: "success"
|
|
});
|
|
}, 500);
|
|
};
|
|
|
|
return (
|
|
<FormModal
|
|
isOpen={isOpen}
|
|
onClose={onClose}
|
|
title={initialData ? `Modifier ${initialData.name}` : "Nouvelle famille d'articles"}
|
|
onSubmit={handleSubmit}
|
|
size="lg"
|
|
>
|
|
<FormSection title="Informations générales" description="Identification de la famille">
|
|
<FormField label="Code famille" required>
|
|
<Input defaultValue={initialData?.code} placeholder="EX: FAM-001" />
|
|
</FormField>
|
|
<FormField label="Intitulé" required>
|
|
<Input defaultValue={initialData?.name} placeholder="Ex: Ordinateurs" />
|
|
</FormField>
|
|
<FormField label="Catégorie">
|
|
<Select defaultValue={initialData?.category || 'produit'}>
|
|
<option value="produit">Produit Stocké</option>
|
|
<option value="service">Service</option>
|
|
<option value="consommable">Consommable</option>
|
|
</Select>
|
|
</FormField>
|
|
<FormField label="Couleur (Tag)">
|
|
<Select defaultValue={initialData?.color || 'bg-blue-100 text-blue-800'}>
|
|
<option value="bg-blue-100 text-blue-800">Bleu</option>
|
|
<option value="bg-green-100 text-green-800">Vert</option>
|
|
<option value="bg-purple-100 text-purple-800">Violet</option>
|
|
<option value="bg-orange-100 text-orange-800">Orange</option>
|
|
<option value="bg-gray-100 text-gray-800">Gris</option>
|
|
<option value="bg-red-100 text-red-800">Rouge</option>
|
|
</Select>
|
|
</FormField>
|
|
<FormField label="Description" fullWidth>
|
|
<Textarea rows={3} defaultValue={initialData?.description} placeholder="Description interne..." />
|
|
</FormField>
|
|
</FormSection>
|
|
|
|
<FormSection title="Règles par défaut" description="Appliquées aux nouveaux articles">
|
|
<FormField label="Taux TVA par défaut">
|
|
<Select defaultValue="20">
|
|
<option value="20">20%</option>
|
|
<option value="10">10%</option>
|
|
<option value="5.5">5.5%</option>
|
|
<option value="0">0%</option>
|
|
</Select>
|
|
</FormField>
|
|
<FormField label="Compte comptable vente">
|
|
<Input placeholder="707..." />
|
|
</FormField>
|
|
<FormField label="Compte comptable achat">
|
|
<Input placeholder="607..." />
|
|
</FormField>
|
|
<FormField label="Unité par défaut">
|
|
<Select defaultValue="pcs">
|
|
<option value="pcs">Pièce</option>
|
|
<option value="h">Heure</option>
|
|
<option value="kg">Kg</option>
|
|
<option value="l">Litre</option>
|
|
<option value="m">Mètre</option>
|
|
</Select>
|
|
</FormField>
|
|
</FormSection>
|
|
</FormModal>
|
|
);
|
|
};
|
|
|
|
export default ProductFamilyFormModal;
|