'use client'; import { useState } from 'react'; import { DashboardShell } from '@/components/layouts/dashboard-shell'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { useEstadoResultados, useFlujoEfectivo, useComparativo, useConcentradoRfc } from '@/lib/hooks/use-reportes'; import { BarChart } from '@/components/charts/bar-chart'; import { formatCurrency } from '@/lib/utils'; import { FileText, TrendingUp, TrendingDown, Users } from 'lucide-react'; export default function ReportesPage() { const [año] = useState(new Date().getFullYear()); const fechaInicio = `${año}-01-01`; const fechaFin = `${año}-12-31`; const { data: estadoResultados, isLoading: loadingER } = useEstadoResultados(fechaInicio, fechaFin); const { data: flujoEfectivo, isLoading: loadingFE } = useFlujoEfectivo(fechaInicio, fechaFin); const { data: comparativo, isLoading: loadingComp } = useComparativo(año); const { data: clientes } = useConcentradoRfc('cliente', fechaInicio, fechaFin); const { data: proveedores } = useConcentradoRfc('proveedor', fechaInicio, fechaFin); return ( Estado de Resultados Flujo de Efectivo Comparativo Concentrado RFC {loadingER ? (
Cargando...
) : estadoResultados ? ( <>
Total Ingresos
{formatCurrency(estadoResultados.totalIngresos)}
Total Egresos
{formatCurrency(estadoResultados.totalEgresos)}
Utilidad Bruta
= 0 ? 'text-success' : 'text-destructive'}`}> {formatCurrency(estadoResultados.utilidadBruta)}
Utilidad Neta
= 0 ? 'text-success' : 'text-destructive'}`}> {formatCurrency(estadoResultados.utilidadNeta)}
Top 10 Ingresos por Cliente
{estadoResultados.ingresos.map((item, i) => (
{item.concepto} {formatCurrency(item.monto)}
))}
Top 10 Egresos por Proveedor
{estadoResultados.egresos.map((item, i) => (
{item.concepto} {formatCurrency(item.monto)}
))}
) : null}
{loadingFE ? (
Cargando...
) : flujoEfectivo ? ( <>
Total Entradas
{formatCurrency(flujoEfectivo.totalEntradas)}
Total Salidas
{formatCurrency(flujoEfectivo.totalSalidas)}
Flujo Neto
= 0 ? 'text-success' : 'text-destructive'}`}> {formatCurrency(flujoEfectivo.flujoNeto)}
Flujo de Efectivo Mensual ({ mes: e.concepto, ingresos: e.monto, egresos: flujoEfectivo.salidas[i]?.monto || 0, }))} /> ) : null}
{loadingComp ? (
Cargando...
) : comparativo ? ( <>
Var. Ingresos vs Ano Anterior
= 0 ? 'text-success' : 'text-destructive'}`}> {comparativo.variacionIngresos >= 0 ? '+' : ''}{comparativo.variacionIngresos.toFixed(1)}%
Var. Egresos vs Ano Anterior
{comparativo.variacionEgresos >= 0 ? '+' : ''}{comparativo.variacionEgresos.toFixed(1)}%
Ano Actual
{año}
Comparativo Mensual {año} ({ mes, ingresos: comparativo.ingresos[i], egresos: comparativo.egresos[i], }))} /> ) : null}
Clientes
{clientes?.slice(0, 10).map((c, i) => (
{c.nombre}
{c.rfc} - {c.cantidadCfdis} CFDIs
{formatCurrency(c.totalFacturado)}
))}
Proveedores
{proveedores?.slice(0, 10).map((p, i) => (
{p.nombre}
{p.rfc} - {p.cantidadCfdis} CFDIs
{formatCurrency(p.totalFacturado)}
))}
); }