import { useState } from 'react' import type { AltaCliente, DatosFirma } from '../types' import { firmaSchema } from '../lib/schemas' import { formatoMoneda, formatoFechaCorta } from '../lib/formatters' import { calcularTotalIngresos } from '../lib/calculations' import { estadoExpediente } from '../lib/expediente' import SectionCard from '../components/SectionCard' import SignaturePad from '../components/SignaturePad' import ChecklistExpediente from '../components/ChecklistExpediente' import * as perfilCliente from '../lib/pdf/perfilCliente' import * as identificacionCliente from '../lib/pdf/identificacionCliente' import * as avisoPrivacidad from '../lib/pdf/avisoPrivacidad' import * as cartaAntilavado from '../lib/pdf/cartaAntilavado' import * as checklistExpediente from '../lib/pdf/checklistExpediente' interface Props { alta: AltaCliente onCambiarFirma: (firma: DatosFirma) => void onAnterior: () => void } const GENERADORES: { tipo: string; descargar: (alta: AltaCliente) => void }[] = [ { tipo: 'Perfil del cliente', descargar: perfilCliente.descargar }, { tipo: 'Identificación de cliente (PLD)', descargar: identificacionCliente.descargar }, { tipo: 'Aviso de privacidad', descargar: avisoPrivacidad.descargar }, { tipo: 'Carta anti-lavado', descargar: cartaAntilavado.descargar }, { tipo: 'Checklist de expediente', descargar: checklistExpediente.descargar }, ] /** Paso 8: firma del cliente, nombre del asesor, resumen y generación de PDFs */ export default function FirmasForm({ alta, onCambiarFirma, onAnterior }: Props) { const [error, setError] = useState('') const [avisoExpediente, setAvisoExpediente] = useState('') const { datosGenerales: g, viviendaCredito: v, economicos, firma } = alta const proyecto = v.proyecto === 'OTRO' ? v.proyectoOtro : v.proyecto const expediente = estadoExpediente(alta.documentos, firma.firmaDataUrl) const validar = (): boolean => { const r = firmaSchema.safeParse(firma) setError(r.success ? '' : (r.error.issues[0]?.message ?? 'Revisa la firma')) return r.success } // Advierte (sin bloquear) si el expediente está incompleto al generar PDFs const avisarExpediente = () => { setAvisoExpediente( expediente.completoTodo ? '' : `Expediente incompleto (${expediente.completos}/${expediente.total}): puedes generar los PDFs, pero faltan documentos o la firma.`, ) } const generar = (descargar: (a: AltaCliente) => void) => { avisarExpediente() if (validar()) descargar(alta) } const generarTodos = () => { avisarExpediente() if (!validar()) return for (const g2 of GENERADORES) g2.descargar(alta) } return (
{error}
}{avisoExpediente}
)}