import { Dialog, Transition } from "@headlessui/react"; import { XMarkIcon } from "@heroicons/react/24/outline"; import { DatePicker } from "@mui/x-date-pickers"; import { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns"; import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider"; import { StatusPagamento } from "@prisma/client"; import ptBR from "date-fns/locale/pt-BR"; import { Fragment, useState } from "react"; import { formatCurrency } from "../../../utils/format"; interface ParcelaHonorario { id: string; honorarioId: string; numeroParcela: number; valor: number; valorPago?: number | null; vencimento: Date; dataPagamento?: Date | null; status: StatusPagamento; comprovante?: string | null; observacoes?: string | null; } interface DialogParcelaProps { isOpen: boolean; onClose: () => void; onSave: (data: any) => Promise; parcela: ParcelaHonorario; tipo: "honorario" | "custa"; } export function DialogParcela({ isOpen, onClose, onSave, parcela, tipo, }: DialogParcelaProps) { const [formData, setFormData] = useState({ status: parcela?.status || "PENDENTE", dataPagamento: parcela?.dataPagamento ? new Date(parcela?.dataPagamento) : null, valorPago: parcela?.valorPago || "", comprovante: parcela?.comprovante || "", observacoes: parcela?.observacoes || "", }); const handleValorPagoChange = (valor: string) => { const valorPago = Number(valor); const valorParcela = Number(parcela.valor); let novoStatus = "PENDENTE"; if (valorPago >= valorParcela) { novoStatus = "PAGO"; } else if (valorPago > 0) { novoStatus = "PARCIALMENTE_PAGO"; } setFormData((prev) => ({ ...prev, valorPago: valor, status: novoStatus, dataPagamento: novoStatus === "PAGO" ? new Date() : prev.dataPagamento, })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); await onSave(formData); onClose(); }; return (

Atualizar Parcela {parcela?.numeroParcela}

handleValorPagoChange(e.target.value)} className="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500" />
{formData.status === "PAGO" && (
setFormData({ ...formData, dataPagamento: date }) } className="mt-1 block w-full" />
)}
setFormData({ ...formData, comprovante: e.target.value }) } className="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500" />