⏱️ 7 minutos de lecturaÚltima actualización: Enero 2025

Asignar Mesas a Meseros

Sistema flexible de asignación de mesas con soporte para números individuales, rangos y listas.

💡 Antes de comenzar: El sistema permite asignar mesas de forma flexible usando números individuales (ej: "5"), rangos (ej: "1-10") o listas (ej: "1,2,3,4,5"). El sistema detecta automáticamente conflictos de rangos y permite compartir mesas individuales.

Formatos de Asignación

📍 Individual

Una mesa específica

"5"

📊 Rango

Mesas consecutivas

"1-10"

📝 Lista

Mesas separadas por comas

"1,2,3,4,5"

Asignar Mesas a un Mesero

Método 1: Desde Gestión de Empleados

  1. Ve a /[slug]/admin/employees
  2. Encuentra al mesero y haz clic en "Editar"
  3. Busca la sección "Mesas Asignadas"
  4. Ingresa las mesas en el formato que prefieras:
    • "1-5" - Mesas de la 1 a la 5
    • "10,12,15" - Mesas 10, 12 y 15
    • "VIP-1" - Mesa VIP-1
    • O combina varios: ["1-10", "VIP-1", "15,16"]
  5. El sistema verifica conflictos automáticamente
  6. Si hay conflictos de rangos → Error (debes corregir)
  7. Si hay mesas compartidas → Warning informativo (se permite)
  8. Haz clic en "Guardar"

Ejemplos de Asignación

Ejemplo 1: Restaurante con 30 Mesas

  • Mesero A (Juan): ["1-10"]
    • Atiende mesas: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
  • Mesero B (María): ["11-20"]
    • Atiende mesas: 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
  • Mesero C (Pedro): ["21-30"]
    • Atiende mesas: 21 a 30

✅ Sin conflictos: Rangos no se solapan

Ejemplo 2: Con Mesas Especiales

  • Mesero Senior: ["1-5", "VIP-1", "VIP-2", "Terraza-1"]
    • Mesas: 1, 2, 3, 4, 5, VIP-1, VIP-2, Terraza-1
  • Mesero Junior: ["6-15"]
    • Mesas: 6 a 15

Detección de Conflictos

Conflictos REALES (Bloqueados por el Sistema)

Rangos que se solapan entre meseros:

❌ Ejemplo de Conflicto:

  • Mesero A tiene: "1-10"
  • Intentas asignar a Mesero B: "8-15"
  • Conflicto en mesas: 8, 9, 10
  • Error: "Rangos solapados con Mesero A"

Debes corregir para continuar. Por ejemplo, asignar "11-15" en su lugar.

Mesas COMPARTIDAS (Permitidas con Warning)

Mesas individuales asignadas a múltiples meseros:

⚠️ Ejemplo de Compartición:

  • Mesero A tiene: "5"
  • Asignas a Mesero B: "5"
  • Warning: "Mesa 5 compartida con Mesero A"
  • Permitido: Se guarda, pero te informa

Útil cuando dos meseros trabajan juntos o en turnos diferentes en la misma mesa.

Verificación Automática de Conflictos

El sistema verifica conflictos antes de guardar:

  1. Expande todos los rangos a números individuales
  2. Busca otros meseros con mesas asignadas
  3. Para cada mesero:
    • Detecta rangos solapados (ERROR)
    • Detecta mesas individuales compartidas (WARNING)
  4. Si hay errores → Bloquea guardado
  5. Si solo hay warnings → Permite con confirmación

Algoritmo de Expansión

El sistema expande las asignaciones para validación:

Ejemplo de Expansión

Entrada: ["1", "3-5", "VIP-1,VIP-2", "10"]

Procesamiento:

  • "1" → ["1"]
  • "3-5" → ["3", "4", "5"]
  • "VIP-1,VIP-2" → ["VIP-1", "VIP-2"]
  • "10" → ["10"]

Salida ordenada: ["1", "3", "4", "5", "10", "VIP-1", "VIP-2"]

Números primero (orden numérico), luego strings (orden alfabético)

Modificar Mesas Asignadas

  1. Edita el mesero
  2. Modifica el campo de mesas asignadas
  3. Puedes:
    • Agregar nuevas mesas
    • Quitar mesas existentes
    • Cambiar de individual a rango
    • Cambiar de rango a lista individual
  4. El sistema verifica nuevamente conflictos
  5. Guarda los cambios

⚠️ Impacto en tiempo real: Si un mesero tiene turno activo y le quitas una mesa, no podrá tomar nuevos pedidos en esa mesa, pero los pedidos existentes se mantienen.

Validación al Tomar Pedidos

Cuando el mesero intenta crear un pedido:

  1. Mesero selecciona mesas: "3,4,5"
  2. Sistema expande: ["3", "4", "5"]
  3. Verifica cada mesa con waiter.hasMesaAssigned(tableNumber)
  4. Si TODAS las mesas están asignadas → Permite crear orden
  5. Si ALGUNA mesa NO está asignada → Error 403 Forbidden

💡 Método hasMesaAssigned(): Este método soporta verificación contra números individuales, rangos y listas. Si el mesero tiene "1-10", puede tomar pedidos de cualquier mesa del 1 al 10.

Casos de Uso Comunes

1. Restaurante con Zonas

Zona Interior: Mesas 1-15

Zona Terraza: Mesas 16-25

Asignación:

  • Mesero A: ["1-15"] (Interior)
  • Mesero B: ["16-25"] (Terraza)

2. Mesas VIP con Mesero Dedicado

Mesero Senior: ["VIP-1", "VIP-2", "VIP-3"]

Otros meseros: Mesas numeradas normales

3. Turnos Compartidos

Turno Mañana (Mesero A): ["1-10"]

Turno Tarde (Mesero B): ["1-10"]

Aunque están asignadas las mismas mesas, cada mesero trabaja en horario diferente.

Sin Asignación de Mesas

Si un mesero NO tiene mesas asignadas:

  • Campo assignedTables = [] (vacío)
  • Puede tomar pedidos de CUALQUIER mesa
  • Útil para meseros de apoyo o flotantes
  • No tiene restricciones al seleccionar mesas

Buenas Prácticas

✅ Usa rangos para eficiencia: Es más fácil escribir "1-20" que "1,2,3,4,5..." hasta 20.

✅ Agrupa mesas cercanas: Asigna mesas cercanas físicamente al mismo mesero para eficiencia en el servicio.

✅ Evita solapamientos de rangos: Planifica bien los rangos para evitar conflictos (1-10, 11-20, 21-30).

✅ Documenta mesas especiales: Si usas nombres como "VIP-1", mantén una lista documentada de qué representa cada nombre.

Solución de Problemas

Error: "Rangos solapados con otro mesero"

Hay un conflicto de rangos. Revisa qué mesas tiene asignado el otro mesero y ajusta tu rango. Ejemplo: Si otro mesero tiene "1-10" y tú intentas "8-15", cambia a "11-15".

El mesero no puede tomar pedidos de una mesa

Error "Forbidden": La mesa no está asignada a ese mesero. Verifica en el perfil del mesero qué mesas tiene asignadas. Si debe tener acceso, edita y agrega la mesa.

¿Puedo asignar la misma mesa a dos meseros?

Sí, si son mesas individuales (no rangos). El sistema permite compartir mesas individuales pero te avisa con un warning. Es útil para turnos diferentes o meseros que se apoyan mutuamente.

¿Cómo quito todas las mesas de un mesero?

Edita el mesero y deja el campo de mesas vacío (borra todo). Esto le dará acceso a TODAS las mesas sin restricción. Si quieres que no tenga acceso a ninguna, desactiva al mesero en lugar de quitarle las mesas.

¿Te fue útil este artículo?

Centro de ayuda: guías y tutoriales | Nandu