diff --git a/proveedores.html b/proveedores.html
index f81250a..b396c7a 100644
--- a/proveedores.html
+++ b/proveedores.html
@@ -316,6 +316,41 @@
return 1;
}
+ // Función inteligente para filtrar los estados según si hay operario o no
+ function filterStatusOptions() {
+ const statusSelect = document.getElementById('impStatus');
+ const operatorSelect = document.getElementById('impOperator');
+
+ const hasOperator = operatorSelect.value !== "";
+ const currentSelected = statusSelect.value; // Guardamos lo que estaba seleccionado
+
+ statusSelect.innerHTML = '';
+
+ systemStatuses.forEach(st => {
+ const nameLow = st.name.toLowerCase();
+
+ // Detectamos qué estados EXIGEN tener un trabajador físico
+ const requiresWorker =
+ (nameLow.includes('asignado') && !nameLow.includes('pendiente') && !nameLow.includes('desasignado')) ||
+ nameLow.includes('esperando') ||
+ nameLow.includes('citado') ||
+ nameLow.includes('camino') ||
+ nameLow.includes('trabajando');
+
+ // Si el estado exige trabajador y NO hay ninguno seleccionado, lo saltamos
+ if (requiresWorker && !hasOperator) return;
+
+ statusSelect.innerHTML += ``;
+ });
+
+ // Intentamos restaurar el valor que había (si sigue siendo válido tras el filtro)
+ if (Array.from(statusSelect.options).some(opt => opt.value === currentSelected)) {
+ statusSelect.value = currentSelected;
+ } else {
+ statusSelect.value = "";
+ }
+ }
+
async function loadStatuses() {
try {
const res = await fetch(`${API_URL}/statuses`, { headers: { "Authorization": `Bearer ${localStorage.getItem("token")}` } });