'use client'; import { useState } from 'react'; import { Header } from '@/components/layouts/header'; import { Card, CardContent, CardHeader, CardTitle, Button } from '@horux/shared-ui'; import { useAuthStore } from '@/stores/auth-store'; import { isGlobalAdminRfc } from '@horux/shared'; import { usePagosSinFactura, useEmitirFacturaPago } from '@/lib/hooks/use-pagos-sin-factura'; import { ShieldAlert, FileText, RefreshCw, CheckCircle, AlertCircle, Receipt } from 'lucide-react'; const PLAN_LABELS: Record = { trial: 'Trial', custom: 'Custom', mi_empresa: 'Mi Empresa', mi_empresa_plus: 'Mi Empresa Plus', business_control: 'Business Control', business_cloud: 'Enterprise', }; const METHOD_LABELS: Record = { master: 'Mastercard', visa: 'Visa', amex: 'Amex', debmaster: 'Débito Mastercard', debvisa: 'Débito Visa', account_money: 'MercadoPago', bank_transfer: 'Transferencia', }; function formatCurrency(amount: string | number): string { const num = typeof amount === 'string' ? parseFloat(amount) : amount; return new Intl.NumberFormat('es-MX', { style: 'currency', currency: 'MXN' }).format(num); } function formatDate(iso: string | null): string { if (!iso) return '—'; return new Date(iso).toLocaleString('es-MX', { dateStyle: 'short', timeStyle: 'short' }); } export default function FacturasPendientesPage() { const { user } = useAuthStore(); const isGlobalAdmin = isGlobalAdminRfc(user?.tenantRfc, user?.role, user?.platformRoles); const { data: payments, isLoading, error } = usePagosSinFactura(); const emitir = useEmitirFacturaPago(); const [emitiendoId, setEmitiendoId] = useState(null); if (!isGlobalAdmin) { return ( <>

Acceso restringido

Solo el administrador global puede consultar pagos sin factura.

); } async function handleEmitir(paymentId: string) { setEmitiendoId(paymentId); try { await emitir.mutateAsync(paymentId); } finally { setEmitiendoId(null); } } return ( <>
Pagos de suscripción sin factura {isLoading && (
Cargando...
)} {error && (
Error al cargar los pagos
)} {!isLoading && !error && payments && payments.length === 0 && (

No hay pagos pendientes de facturar

Todos los pagos aprobados ya tienen su factura emitida.

)} {!isLoading && !error && payments && payments.length > 0 && (
{payments.map((p) => ( ))}
Cliente Plan Monto Método Fecha de pago Acción
{p.tenant.nombre}
{p.tenant.rfc || '—'}
{PLAN_LABELS[p.subscription?.plan || 'custom'] || p.subscription?.plan || 'Custom'} {formatCurrency(p.amount)} {METHOD_LABELS[p.paymentMethod || ''] || p.paymentMethod || '—'} {formatDate(p.paidAt)}
)}
); }