import { useState } from 'react'; import { motion } from 'framer-motion'; import { X, Save, User, MapPin, Mail, Phone, CreditCard, FileText } from 'lucide-react'; import CuitInput from '../Shared/CuitInput'; import { clientService, type CreateClientRequest } from '../../services/clientService'; import { useToast } from '../../context/use-toast'; import clsx from 'clsx'; interface Props { onClose: () => void; onSuccess: (client: { id: number; name: string; dniOrCuit: string }) => void; initialCuit?: string; // Por si el cajero buscó un CUIT y no existía, precargarlo } export default function ClientCreateModal({ onClose, onSuccess, initialCuit = '' }: Props) { const { showToast } = useToast(); const [loading, setLoading] = useState(false); // Estado del formulario const [formData, setFormData] = useState({ name: '', dniOrCuit: initialCuit, email: '', phone: '', address: '', taxType: 'Consumidor Final' }); const [isCuitValid, setIsCuitValid] = useState(!!initialCuit); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!isCuitValid) return showToast("El CUIT ingresado no es válido", "error"); setLoading(true); try { const newClient = await clientService.create(formData); showToast("Cliente creado exitosamente", "success"); onSuccess(newClient); onClose(); } catch (error: any) { console.error(error); const msg = error.response?.data || "Error al crear cliente"; showToast(msg, "error"); } finally { setLoading(false); } }; return (
{/* Header */}

Alta Rápida de Cliente

Registro Express para Facturación

{/* CUIT - Componente Reutilizable */}
{ setFormData({ ...formData, dniOrCuit: val }); setIsCuitValid(valid); }} />
{/* Condición Fiscal */}
{/* Razón Social */}
setFormData({ ...formData, name: e.target.value })} />
{/* Dirección */}
setFormData({ ...formData, address: e.target.value })} />
{/* Email */}
setFormData({ ...formData, email: e.target.value })} />
{/* Teléfono */}
setFormData({ ...formData, phone: e.target.value })} />
{/* Footer Actions */}
); }