diff --git a/frontend/src/pages/Cobranza.jsx b/frontend/src/pages/Cobranza.jsx index 3f25618..5b21f9c 100644 --- a/frontend/src/pages/Cobranza.jsx +++ b/frontend/src/pages/Cobranza.jsx @@ -127,7 +127,7 @@ export default function Cobranza() { // Cargar matrículas POR RETIRAR (para el "Saldo por Retirar" de las tarjetas) const [porRetirar, setPorRetirar] = useState(new Set()); useEffect(() => { - api.alumnosPorRetirar() + api.alumnosPorRetirar(ano, mes) .then((r) => setPorRetirar(new Set((r.matriculas || []).map(String)))) .catch(() => {}); }, [ano, mes]); @@ -601,6 +601,7 @@ export default function Cobranza() { alumnos={alumnosFiltrados} agrupacion={agrupacion} sectorista={sectorista} + ano={ano} mes={mes} onClose={() => setBuscadorAbierto(false)} /> )} @@ -779,18 +780,18 @@ function TarjetasResumen({ r, retiro }) { ); } -function ModalBuscador({ alumnos, agrupacion, sectorista, onClose }) { +function ModalBuscador({ alumnos, agrupacion, sectorista, ano, mes, onClose }) { const [texto, setTexto] = useState(""); const [query, setQuery] = useState(""); const [porRetirar, setPorRetirar] = useState(new Set()); // matrículas POR RETIRAR const [infoAlumno, setInfoAlumno] = useState(null); // alumno del pop-up INFO const cargarPorRetirar = () => { - api.alumnosPorRetirar() + api.alumnosPorRetirar(ano, mes) .then((r)=>setPorRetirar(new Set((r.matriculas||[]).map(String)))) .catch(()=>{}); }; - useEffect(() => { cargarPorRetirar(); }, []); + useEffect(() => { cargarPorRetirar(); }, [ano, mes]); const resultados = useMemo(() => { const q = query.trim().toLowerCase(); @@ -926,7 +927,7 @@ function ModalBuscador({ alumnos, agrupacion, sectorista, onClose }) { )} {infoAlumno && ( - setInfoAlumno(null)} + setInfoAlumno(null)} onGuardado={cargarPorRetirar} /> )} @@ -950,11 +951,11 @@ function ModalEstadoCuenta({ grupo, ano, mes, sectorista, agrupacion, progFiltro // Cargar (y recargar) las matrículas marcadas POR RETIRAR para tachar sus filas const cargarPorRetirar = () => { - api.alumnosPorRetirar() + api.alumnosPorRetirar(ano, mes) .then((r) => setPorRetirar(new Set((r.matriculas || []).map(String)))) .catch(() => {}); }; - useEffect(() => { cargarPorRetirar(); }, []); + useEffect(() => { cargarPorRetirar(); }, [ano, mes]); const COLS = ["PROGRAMA","ALUMNO","N° CUOTA","F. VENC.","CTA ANT.","COB ANT.","% ANT","CTA MES","COB MES","% MES","CTA TOT","COB TOT","% TOT","SALDO","INFO"]; @@ -1194,7 +1195,7 @@ function ModalEstadoCuenta({ grupo, ano, mes, sectorista, agrupacion, progFiltro } {infoAlumno && ( - setInfoAlumno(null)} + setInfoAlumno(null)} onGuardado={cargarPorRetirar} /> )} @@ -1203,7 +1204,7 @@ function ModalEstadoCuenta({ grupo, ano, mes, sectorista, agrupacion, progFiltro // Pop-up de INFO por alumno: cambiar estado (EN CURSO / POR RETIRAR) y observaciones. // Carga y guarda en Supabase (tabla cobranza_alumno_estado). -function ModalInfoAlumno({ alumno, onClose, onGuardado }) { +function ModalInfoAlumno({ alumno, ano, mes, onClose, onGuardado }) { const [estado, setEstado] = useState("EN CURSO"); // EN CURSO | POR RETIRAR const [nuevaObs, setNuevaObs] = useState(""); const [observaciones, setObservaciones] = useState([]); @@ -1214,12 +1215,12 @@ function ModalInfoAlumno({ alumno, onClose, onGuardado }) { // Cargar estado/observaciones actuales del alumno al abrir useEffect(() => { let activo = true; - api.alumnoEstado(alumno.matricula) + api.alumnoEstado(alumno.matricula, ano, mes) .then((r)=>{ if(activo){ setEstado(r.estado||"EN CURSO"); setObservaciones(r.observaciones||[]); } }) .catch(()=>{}) .finally(()=>{ if(activo) setCargando(false); }); return ()=>{ activo=false; }; - }, [alumno.matricula]); + }, [alumno.matricula, ano, mes]); const agregarObs = () => { const t = nuevaObs.trim(); @@ -1233,7 +1234,7 @@ function ModalInfoAlumno({ alumno, onClose, onGuardado }) { const guardar = async () => { setGuardando(true); setGuardado(false); try { - await api.alumnoEstadoGuardar(alumno.matricula, estado, observaciones); + await api.alumnoEstadoGuardar(alumno.matricula, ano, mes, estado, observaciones); setGuardado(true); if (onGuardado) onGuardado(); // refresca el tachado en la tabla } catch {