import type { FC } from 'react'; import { Printer } from 'lucide-react'; import { Button, Modal } from './ui'; import type { CashClosing } from '../services/odoo'; import { useClinicaPrint } from '../lib/ticketConfig'; // Corte de caja imprimible. Sigue el patrón de impresión existente // (RecetaPrint / EstadoCuentaPrint / TicketPrint): contenido en un // div.print-ticket + window.print(); el CSS de @media print en index.css // oculta el resto de la página. 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; const clinic = useClinicaPrint(); const fila = (label: string, valor: number) => (
{clinic.nombre}
{clinic.direccion &&{clinic.direccion}
} {clinic.telefono &&{clinic.telefono}
}CORTE DE CAJA {corte.name}
Fecha: {corte.date} · Cerró: {corte.user || '—'}
| Método | Esperado | Contado | Diferencia |
|---|---|---|---|
| Diferencia total del corte | 0 ? 'text-emerald-700' : '')}> {corte.difference > 0 ? '+' : ''}{money(corte.difference)} |
Notas:
{corte.notes}
Impreso el {new Date().toLocaleString('es-MX')}