diff --git a/menu.html b/menu.html
index 6a86161..0a7fe45 100644
--- a/menu.html
+++ b/menu.html
@@ -237,22 +237,32 @@
const dataScraped = await resScraped.json();
if (dataScraped.ok) {
let bolsaCount = 0;
+ let sinGremioCount = 0;
dataScraped.services.forEach(s => {
if(s.assigned_to || s.provider === 'SYSTEM_BLOCK') return;
const raw = s.raw_data || {};
const dbStatus = raw.status_operativo;
if(s.status === 'archived' || (dbStatus && ['anulado', 'terminado', 'finalizado'].includes(dbStatus.toLowerCase()))) return;
- const sGuild = String(s.guild_id || raw.guild_id);
+ // 🆕 Mismo criterio que solicitar.html: si el aviso no tiene gremio asignado
+ // de verdad, es visible para cualquier operario (antes esto no se contaba aquÃ,
+ // por eso el número de la burbuja no cuadraba con lo que salÃa en la lista).
+ const rawGuildId = s.guild_id ?? raw.guild_id;
+ const hasGuild = rawGuildId !== undefined && rawGuildId !== null && String(rawGuildId).trim() !== "" && String(rawGuildId) !== "0";
+ const sGuild = String(rawGuildId);
const sCp = String(raw['Código Postal'] || raw['CP'] || "").trim();
- const matchGuild = userGuilds.includes(Number(sGuild)) || userGuilds.includes(String(sGuild));
+ const matchGuild = hasGuild && (userGuilds.includes(Number(sGuild)) || userGuilds.includes(String(sGuild)));
const matchZone = userZones.some(z => sCp.startsWith(z));
- if((userGuilds.length === 0 || matchGuild) && (userZones.length === 0 || matchZone)) {
+ const guildOk = !hasGuild || userGuilds.length === 0 || matchGuild;
+ if(guildOk && (userZones.length === 0 || matchZone)) {
bolsaCount++;
+ if (!hasGuild) sinGremioCount++;
}
});
if (bolsaCount > 0) {
const b2 = document.getElementById('badgeBolsa');
- b2.innerText = `${bolsaCount} libre${bolsaCount > 1 ? 's' : ''}`;
+ let texto = `${bolsaCount} servicio${bolsaCount > 1 ? 's' : ''}`;
+ if (sinGremioCount > 0) texto += ` y ${sinGremioCount} sin gremio`;
+ b2.innerText = texto;
b2.classList.remove('hidden');
}
}