import React, { useState, useEffect } from "react"; import { FaCreditCard, FaSave, FaTimes } from "react-icons/fa"; import { FiCheck, CheckTypeEnum, CheckStatusEnum, FiCurrentAccount, } from "../../../types/fi"; 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: CheckTypeEnum.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: CheckTypeEnum.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 | CheckTypeEnum | 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 */}