"use client"; import { useState } from "react"; import { Label } from "@/components/ui/label"; import { MonthPicker } from "@/components/ui/monthpicker"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { LANCAMENTO_PAYMENT_METHODS } from "@/lib/lancamentos/constants"; import { displayPeriod } from "@/lib/utils/period"; import { cn } from "@/lib/utils/ui"; import { ContaCartaoSelectContent, PaymentMethodSelectContent, } from "../../select-items"; import type { PaymentMethodSectionProps } from "./lancamento-dialog-types"; function periodToDate(period: string): Date { const [year, month] = period.split("-").map(Number); return new Date(year, month - 1, 1); } function dateToPeriod(date: Date): string { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, "0"); return `${year}-${month}`; } function InlinePeriodPicker({ period, onPeriodChange, }: { period: string; onPeriodChange: (value: string) => void; }) { const [open, setOpen] = useState(false); return (
Fatura de { onPeriodChange(dateToPeriod(date)); setOpen(false); }} />
); } export function PaymentMethodSection({ formState, onFieldChange, contaOptions, cartaoOptions, isUpdateMode, disablePaymentMethod, disableCartaoSelect, }: PaymentMethodSectionProps) { const isCartaoSelected = formState.paymentMethod === "Cartão de crédito"; const showContaSelect = [ "Pix", "Dinheiro", "Boleto", "Cartão de débito", "Pré-Pago | VR/VA", "Transferência bancária", ].includes(formState.paymentMethod); // Filtrar contas apenas do tipo "Pré-Pago | VR/VA" quando forma de pagamento for "Pré-Pago | VR/VA" const filteredContaOptions = formState.paymentMethod === "Pré-Pago | VR/VA" ? contaOptions.filter( (option) => option.accountType === "Pré-Pago | VR/VA", ) : contaOptions; return ( <> {!isUpdateMode ? (
{isCartaoSelected ? (
{formState.cartaoId ? ( onFieldChange("period", value)} /> ) : null}
) : null} {!isCartaoSelected && showContaSelect ? (
) : null}
) : null} {isUpdateMode ? (
{isCartaoSelected ? (
{formState.cartaoId ? ( onFieldChange("period", value)} /> ) : null}
) : null} {!isCartaoSelected && showContaSelect ? (
) : null}
) : null} ); }