e.stopPropagation()}
+ style={{ background: "#fff", borderRadius: 16, width: "min(1100px, 96vw)",
+ boxShadow: "0 20px 60px rgba(0,0,0,.3)", overflow: "hidden" }}>
+
+
🔍 Buscar Alumno — Retiros
+
+
+
+
+
setQ(e.target.value)}
+ placeholder="Escribe nombre de alumno, programa, vendedor o matrícula…"
+ style={{ width: "100%", padding: "11px 14px", border: "1px solid #cbd5e1",
+ borderRadius: 10, fontSize: 14, boxSizing: "border-box", outline: "none" }} />
+
+
+ {loading ? (
+
Cargando alumnos…
+ ) : (
+
+
+ | ALUMNO | VENDEDOR |
+ F. MATRÍCULA | PROGRAMA |
+ INV. NETA |
+ ESTADO |
+
+
+ {filtrados.length === 0 && (
+ |
+ Sin resultados.
+ |
+ )}
+ {filtrados.map((f, i) => {
+ const mat = String(f[15]);
+ const est = estados[mat] || "EN CURSO";
+ const porRetirar = est === "POR RETIRAR";
+ return (
+
+ | {f[1]} |
+ {f[0]} |
+ {f[2]} |
+ {f[8]} |
+ {f[7]} |
+
+
+ |
+
+ );
+ })}
+
+
+ )}
+
+ {!loading && (
+
+ Al marcar POR RETIRAR, el alumno aparece en la tabla de Retiros con sus datos calculados. {q ? `${filtrados.length} resultado(s).` : "Escribe para buscar."}
+
+ )}
+
+ {/* Pie: mensaje + botón Guardar cambios */}
+
+ {msg && (
+
+ {msg.txt}
+
+ )}
+ {!msg && cambios.length > 0 && (
+
+ {cambios.length} cambio(s) sin guardar
+
+ )}
+ {!msg && cambios.length === 0 && }
+
+
+
+
+