import React, { useState, useEffect } from 'react'; import { X, Save } from 'lucide-react'; import { Product, Language } from '../types'; interface ProductFormProps { product?: Product; isOpen: boolean; onClose: () => void; onSave: (product: Product) => void; language: Language; } export const ProductForm: React.FC = ({ product, isOpen, onClose, onSave, language }) => { const [formData, setFormData] = useState>({ nameAr: '', nameEn: '', quantity: 0, price: 0, categoryAr: '', categoryEn: '', description: '', secoCode: '', supplier: '', supplierAr: '', importDate: new Date().toISOString().split('T')[0], inventoryDates: {}, totalReceived: 0, totalSold: 0, currentStock: 0 }); const isArabic = language.code === 'ar'; useEffect(() => { if (product) { setFormData({ nameAr: product.nameAr, nameEn: product.nameEn, quantity: product.quantity, price: product.price, categoryAr: product.categoryAr, categoryEn: product.categoryEn, description: product.description || '', secoCode: product.secoCode || '', supplier: product.supplier || '', supplierAr: product.supplierAr || '', importDate: product.importDate || new Date().toISOString().split('T')[0], inventoryDates: product.inventoryDates || {}, totalReceived: product.totalReceived || 0, totalSold: product.totalSold || 0, currentStock: product.currentStock || 0 }); } else { setFormData({ nameAr: '', nameEn: '', quantity: 0, price: 0, categoryAr: '', categoryEn: '', description: '', secoCode: '', supplier: '', supplierAr: '', importDate: new Date().toISOString().split('T')[0], inventoryDates: {}, totalReceived: 0, totalSold: 0, currentStock: 0 }); } }, [product]); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); const newProduct: Product = { id: product?.id || `product-${Date.now()}`, ...formData, currentStock: formData.quantity, totalReceived: formData.totalReceived || formData.quantity }; onSave(newProduct); onClose(); }; if (!isOpen) return null; const labels = { ar: { title: product ? 'تعديل المنتج' : 'إضافة منتج جديد', supplierAr: 'اسم المورد بالعربية', supplier: 'اسم المورد بالإنجليزية', nameAr: 'اسم المنتج بالعربية', nameEn: 'اسم المنتج بالإنجليزية', quantity: 'الكمية', price: 'السعر', categoryAr: 'الفئة بالعربية', categoryEn: 'الفئة بالإنجليزية', description: 'الوصف', secoCode: 'كود SECO', importDate: 'تاريخ الاستيراد', totalReceived: 'إجمالي الوارد', totalSold: 'إجمالي المباع', save: 'حفظ', cancel: 'إلغاء' }, en: { title: product ? 'Edit Product' : 'Add New Product', supplierAr: 'Supplier Name (Arabic)', supplier: 'Supplier Name (English)', nameAr: 'Product Name (Arabic)', nameEn: 'Product Name (English)', quantity: 'Quantity', price: 'Price', categoryAr: 'Category (Arabic)', categoryEn: 'Category (English)', description: 'Description', secoCode: 'SECO Code', importDate: 'Import Date', totalReceived: 'Total Received', totalSold: 'Total Sold', save: 'Save', cancel: 'Cancel' } }; const t = labels[language.code]; return (

{t.title}

setFormData({ ...formData, supplierAr: e.target.value })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" dir="rtl" />
setFormData({ ...formData, supplier: e.target.value })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" />
setFormData({ ...formData, nameAr: e.target.value })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" required dir="rtl" />
setFormData({ ...formData, nameEn: e.target.value })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" required />
setFormData({ ...formData, quantity: Number(e.target.value) })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" required min="0" />
setFormData({ ...formData, totalReceived: Number(e.target.value) })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" min="0" />
setFormData({ ...formData, totalSold: Number(e.target.value) })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" min="0" />
setFormData({ ...formData, importDate: e.target.value })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" />
setFormData({ ...formData, price: Number(e.target.value) })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" min="0" />
setFormData({ ...formData, categoryAr: e.target.value })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" required dir="rtl" />
setFormData({ ...formData, categoryEn: e.target.value })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" required />
setFormData({ ...formData, secoCode: e.target.value })} className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" />