diff --git a/frontend/src/components/CortePrint.tsx b/frontend/src/components/CortePrint.tsx index d7c2c4e..85ae951 100644 --- a/frontend/src/components/CortePrint.tsx +++ b/frontend/src/components/CortePrint.tsx @@ -14,8 +14,9 @@ const money = (v: number) => '$' + (v ?? 0).toLocaleString('es-MX', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); export const CortePrint: FC<{ corte: CashClosing | null; onClose: () => void }> = ({ corte, onClose }) => { - if (!corte) return null; + // El hook va antes de cualquier return condicional (reglas de React). const clinic = useClinicaPrint(); + if (!corte) return null; const fila = (label: string, valor: number) => ( diff --git a/frontend/src/components/EstadoCuentaPrint.tsx b/frontend/src/components/EstadoCuentaPrint.tsx index 977ab4a..7349309 100644 --- a/frontend/src/components/EstadoCuentaPrint.tsx +++ b/frontend/src/components/EstadoCuentaPrint.tsx @@ -76,9 +76,10 @@ export const EstadoCuentaPrint: FC = ({ isOpen, onClose, return () => { alive = false; }; }, [isOpen, paciente]); + // El hook va antes de cualquier return condicional (reglas de React). + const clinic = useClinicaPrint(); if (!paciente) return null; - const clinic = useClinicaPrint(); const fechaEmision = new Date().toLocaleDateString('es-MX', { day: '2-digit', month: 'long', year: 'numeric' }); const totalVentas = ventas.reduce((a, v) => a + v.total, 0); const totalPagado = ventas.reduce((a, v) => a + v.amount_paid, 0); diff --git a/frontend/src/components/ReciboPrint.tsx b/frontend/src/components/ReciboPrint.tsx index 5ab93e5..80e72ef 100644 --- a/frontend/src/components/ReciboPrint.tsx +++ b/frontend/src/components/ReciboPrint.tsx @@ -19,8 +19,10 @@ const money = (v: number) => export const ReciboPrint: FC<{ receipt: ReceiptData | null; onClose: () => void }> = ({ receipt, onClose }) => { - if (!receipt) return null; + // El hook va antes de cualquier return condicional (reglas de React: + // mismo nĂºmero de hooks en todos los renders del componente). const clinic = useClinicaPrint(); + if (!receipt) return null; // Recibo de recarga de saldo a favor (anticipo): mismo formato, sin el // desglose de adeudo y mostrando el saldo a favor resultante. const esDeposito = receipt.tipo === 'deposito'; diff --git a/frontend/src/components/inventario/ConteoPrint.tsx b/frontend/src/components/inventario/ConteoPrint.tsx index 37659e0..1b15382 100644 --- a/frontend/src/components/inventario/ConteoPrint.tsx +++ b/frontend/src/components/inventario/ConteoPrint.tsx @@ -12,8 +12,9 @@ const money = (v: number) => export const ConteoPrint: FC<{ conteo: InventoryConteo | null; onClose: () => void }> = ({ conteo, onClose }) => { - if (!conteo) return null; + // El hook va antes de cualquier return condicional (reglas de React). const clinic = useClinicaPrint(); + if (!conteo) return null; const lineas = conteo.lines || []; return (