'use client'; import * as React from 'react'; import { useMutation } from '@tanstack/react-query'; import { marcarRecebimentoPago, type FormaPagamento } from '@/lib/api/sale-payments'; import { ApiError } from '@/lib/api/client'; import { formatCurrency } from '@/lib/format'; import { toast } from '@/lib/toast'; import { Button } from '@/components/ui/button'; import { ResponsiveDialog } from '@/components/ui/responsive-dialog'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; const FORMAS: { value: FormaPagamento; label: string }[] = [ { value: 'pix', label: 'Pix' }, { value: 'boleto', label: 'Boleto' }, { value: 'cartao', label: 'Cartão' }, { value: 'dinheiro', label: 'Dinheiro' }, ]; interface MarcarPagoDialogProps { parcela: { id: string; valor: string } | null; onOpenChange: (open: boolean) => void; onSuccess: () => void; } /** Reaproveitado no detalhe da venda (aba Parcelas) e em `/app/recebimentos`. */ export function MarcarPagoDialog({ parcela, onOpenChange, onSuccess }: MarcarPagoDialogProps) { const [forma, setForma] = React.useState(''); React.useEffect(() => { setForma(''); }, [parcela?.id]); const mutation = useMutation({ mutationFn: () => marcarRecebimentoPago(parcela!.id, forma as FormaPagamento), onSuccess: () => { toast.success('Parcela marcada como paga.'); onOpenChange(false); onSuccess(); }, onError: (err) => { toast.error(err instanceof ApiError ? err.message : 'Não foi possível marcar a parcela como paga.'); }, }); return ( } >
); }