import React, { useState, useEffect } from 'react' import { FaCreditCard, FaSave, FaTimes } from 'react-icons/fa' import { FiCheck, TypeEnum, CheckStatusEnum, FiCurrentAccount } from '../../../types/fi' import { getCheckStatusText, getTypeText } from '@/utils/erp' import { mockCurrencies } from '@/mocks/mockCurrencies' interface CheckFormProps { check?: FiCheck currentAccounts: FiCurrentAccount[] onSave: (check: Omit) => void onCancel: () => void isOpen: boolean } const CheckForm: React.FC = ({ check, currentAccounts, onSave, onCancel, isOpen, }) => { const [formData, setFormData] = useState({ checkNumber: '', bankName: '', branchName: '', accountNumber: '', drawerName: '', payeeName: '', currentAccountId: '', issueDate: new Date().toISOString().split('T')[0], dueDate: new Date().toISOString().split('T')[0], amount: 0, currency: 'TRY', status: CheckStatusEnum.InHand, type: TypeEnum.Received, notes: '', }) const [errors, setErrors] = useState>({}) useEffect(() => { if (check) { setFormData({ checkNumber: check.checkNumber, bankName: check.bankName, branchName: check.branchName, accountNumber: check.accountNumber, drawerName: check.drawerName, payeeName: check.payeeName, currentAccountId: check.currentAccountId || '', issueDate: new Date(check.issueDate).toISOString().split('T')[0], dueDate: new Date(check.dueDate).toISOString().split('T')[0], amount: check.amount, currency: check.currency, status: check.status, type: check.type, notes: check.notes || '', }) } else { setFormData({ checkNumber: '', bankName: '', branchName: '', accountNumber: '', drawerName: '', payeeName: '', currentAccountId: '', issueDate: new Date().toISOString().split('T')[0], dueDate: new Date().toISOString().split('T')[0], amount: 0, currency: 'TRY', status: CheckStatusEnum.InHand, type: TypeEnum.Received, notes: '', }) } setErrors({}) }, [check, isOpen]) const validateForm = () => { const newErrors: Record = {} if (!formData.checkNumber.trim()) { newErrors.checkNumber = 'Çek numarası gereklidir' } if (!formData.bankName.trim()) { newErrors.bankName = 'Banka adı gereklidir' } if (!formData.drawerName.trim()) { newErrors.drawerName = 'Keşideci adı gereklidir' } if (!formData.payeeName.trim()) { newErrors.payeeName = 'Lehtar adı gereklidir' } if (formData.amount <= 0) { newErrors.amount = "Tutar 0'dan büyük olmalıdır" } if (new Date(formData.dueDate) < new Date(formData.issueDate)) { newErrors.dueDate = 'Vade tarihi düzenleme tarihinden sonra olmalıdır' } setErrors(newErrors) return Object.keys(newErrors).length === 0 } const handleSubmit = (e: React.FormEvent) => { e.preventDefault() if (validateForm()) { const checkData = { ...formData, issueDate: new Date(formData.issueDate), dueDate: new Date(formData.dueDate), currentAccount: formData.currentAccountId ? currentAccounts.find((acc) => acc.id === formData.currentAccountId) : undefined, } onSave(checkData) } } const handleInputChange = ( field: string, value: string | number | TypeEnum | CheckStatusEnum, ) => { setFormData((prev) => ({ ...prev, [field]: value })) if (errors[field]) { setErrors((prev) => ({ ...prev, [field]: '' })) } } if (!isOpen) return null return (

{check ? 'Çek Düzenle' : 'Yeni Çek'}

{/* Çek Bilgileri */}
handleInputChange('checkNumber', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ errors.checkNumber ? 'border-red-500' : 'border-gray-300' }`} placeholder="Çek numarasını giriniz" /> {errors.checkNumber && (

{errors.checkNumber}

)}
{/* Banka Bilgileri */}

Banka Bilgileri

handleInputChange('bankName', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ errors.bankName ? 'border-red-500' : 'border-gray-300' }`} placeholder="Banka adını giriniz" /> {errors.bankName &&

{errors.bankName}

}
handleInputChange('branchName', e.target.value)} className="w-full px-3 py-1.5 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Şube adını giriniz" />
handleInputChange('accountNumber', e.target.value)} className="w-full px-3 py-1.5 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Hesap numarasını giriniz" />
{/* Taraf Bilgileri */}

Taraf Bilgileri

handleInputChange('drawerName', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ errors.drawerName ? 'border-red-500' : 'border-gray-300' }`} placeholder="Keşideci adını giriniz" /> {errors.drawerName && (

{errors.drawerName}

)}
handleInputChange('payeeName', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ errors.payeeName ? 'border-red-500' : 'border-gray-300' }`} placeholder="Lehtar adını giriniz" /> {errors.payeeName && (

{errors.payeeName}

)}
{/* Tutar ve Tarih Bilgileri */}
handleInputChange('amount', parseFloat(e.target.value) || 0)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ errors.amount ? 'border-red-500' : 'border-gray-300' }`} placeholder="0.00" /> {errors.amount &&

{errors.amount}

}
handleInputChange('issueDate', e.target.value)} className="w-full px-3 py-1.5 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" />
handleInputChange('dueDate', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${ errors.dueDate ? 'border-red-500' : 'border-gray-300' }`} /> {errors.dueDate &&

{errors.dueDate}

}
{/* Notlar */}