diff --git a/src/pages/Reports.jsx b/src/pages/Reports.jsx index 4622dc6..dc09619 100644 --- a/src/pages/Reports.jsx +++ b/src/pages/Reports.jsx @@ -198,6 +198,7 @@ export default function Reports() { const [organizaciones, setOrganizaciones] = useState([]); const [importadores, setImportadores] = useState([]); + const [rfcOptions, setRfcOptions] = useState([]); useEffect(() => { const fetchOrganizaciones = async () => { @@ -241,6 +242,27 @@ export default function Reports() { pedimento: '' }); + // Cargar RFCs cuando cambia la organización seleccionada en filtros globales + useEffect(() => { + const fetchRfcs = async () => { + if (!globalFilters.organizacion) { + setRfcOptions([]); + return; + } + try { + const url = `${import.meta.env.VITE_EFC_API_URL}/reports/exportmodel/datastage/?organizacion=${globalFilters.organizacion}`; + const res = await fetchWithAuth(url); + if (!res.ok) throw new Error('Error al obtener RFCs'); + const data = await res.json(); + setRfcOptions(data.rfcs || []); + } catch (err) { + console.error('Error fetching RFCs:', err); + setRfcOptions([]); + } + }; + fetchRfcs(); + }, [globalFilters.organizacion]); + const renderGlobalFilters = () => (
@@ -269,16 +291,17 @@ export default function Reports() { value={globalFilters.organizacion || ''} onChange={(e) => setGlobalFilters(prev => ({ ...prev, - organizacion: e.target.value + organizacion: e.target.value, + rfc: '' }))} - className="block w-full rounded-lg border-gray-300 pl-3 pr-10 py-2.5 text-gray-900 placeholder-gray-500 + className="block w-full rounded-lg border-gray-300 pl-3 pr-10 py-2.5 text-gray-900 placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 sm:text-sm transition-all duration-200 bg-white appearance-none" > - + {organizaciones.results && organizaciones.results.map(org => ( ))} @@ -318,13 +341,11 @@ export default function Reports() { }))} className="w-full px-3 py-2 border border-green-300 rounded-md shadow-sm focus:ring-2 focus:ring-green-500 focus:border-green-500 transition-all duration-200 bg-white text-slate-900 text-sm font-mono uppercase" style={{ textTransform: 'uppercase' }} + disabled={!globalFilters.organizacion} > - - {importadores.filter(imp => { - if (!globalFilters.organizacion) return true; - return imp.organizacion === globalFilters.organizacion; - }).map(imp => ( - + + {rfcOptions.map(rfc => ( + ))}
@@ -807,7 +828,12 @@ export default function Reports() { .map(([modelo]) => modelo); if (modelosConCampos.length === 0) { - alert('Por favor selecciona al menos un campo en algún modelo'); + showMessage('Por favor selecciona al menos un campo en algún modelo', 'error'); + return; + } + + if (!globalFilters.organizacion) { + showMessage('Debes seleccionar una organización antes de generar el reporte', 'error'); return; }