import { useState } from 'react'; import { motion } from 'framer-motion'; import { Play, ShieldCheck, Lock, X } from 'lucide-react'; import api from '../services/api'; import { useNavigate } from 'react-router-dom' import { useToast } from '../context/use-toast'; interface Props { onSuccess: () => void; onCancel?: () => void; } export default function CashOpeningModal({ onSuccess, onCancel }: Props) { const { showToast } = useToast(); const [openingBalance, setOpeningBalance] = useState(0); const [loading, setLoading] = useState(false); const navigate = useNavigate(); const handleCancel = () => { if (onCancel) { onCancel(); } else { navigate('/dashboard'); } }; const handleOpen = async (e: React.FormEvent) => { e.preventDefault(); if (openingBalance < 0) return; setLoading(true); try { // Enviamos el fondo inicial al endpoint que creamos en C# await api.post('/cashsessions/open', openingBalance); showToast("Caja abierta correctamente. ¡Buen turno!", "success"); onSuccess(); } catch (error) { showToast("Error al abrir la sesión de caja", "error"); } finally { setLoading(false); } }; return (
{/* Header (Igual al anterior) */}
{/* Botón X de cerrar en el header */}
Inicio de Jornada

Apertura de Caja

Debe declarar el fondo de inicio (dinero para cambio) recibido de tesorería para habilitar los cobros.

$
setOpeningBalance(parseFloat(e.target.value) || 0)} />
); }