diff --git a/usuarios.html b/usuarios.html
index 8145b3a..710bb2a 100644
--- a/usuarios.html
+++ b/usuarios.html
@@ -322,8 +322,31 @@
if(!manualCP) { showToast("Escribe el CP manual en el cuadro", true); return; }
if(!manualCityName) { showToast("Falta el nombre de la población", true); return; }
- // Si ha puesto varios separados por coma o guion
- const cpsArray = manualCP.split(/[,-\s]+/).filter(c => c.trim() !== "");
+ // 🚀 NUEVO: Soporte real para rangos (ej: 11201-11205)
+ let cpsArray = [];
+ // Separamos por comas o espacios (quitamos el guion del split)
+ const partes = manualCP.split(/[, \n]+/).filter(c => c.trim() !== "");
+
+ partes.forEach(parte => {
+ if (parte.includes('-')) {
+ // Si hay un guion, calculamos todos los números que hay entre medias
+ const [start, end] = parte.split('-');
+ const numStart = parseInt(start, 10);
+ const numEnd = parseInt(end, 10);
+
+ if (!isNaN(numStart) && !isNaN(numEnd) && numStart <= numEnd) {
+ for (let i = numStart; i <= numEnd; i++) {
+ // Aseguramos que siempre tengan 5 cifras (ej: 08001)
+ cpsArray.push(String(i).padStart(5, '0'));
+ }
+ } else {
+ cpsArray.push(parte); // Fallback por si lo escriben mal
+ }
+ } else {
+ // Si es un número suelto, lo metemos tal cual
+ cpsArray.push(parte);
+ }
+ });
cpsArray.forEach(cp => {
if (!tempUserZones.some(z => z.city === manualCityName && z.cps === cp)) {
@@ -346,11 +369,6 @@
document.getElementById('cpInput').value = "";
}
- function removeTempCity(cityName) {
- tempUserZones = tempUserZones.filter(z => z.city !== cityName);
- renderTempZones();
- }
-
function renderTempZones() {
const area = document.getElementById('userZonesArea');
if(!area) return;