← Volver a MesasLineaController

📋 Consultas de Líneas

Endpoints para consultar líneas de mesas y pedidos del restaurante

Descripción General

Los endpoints de Consultas de Líneas proporcionan las operaciones de lectura para obtener información de las líneas de mesas del restaurante. Estos endpoints permiten consultar líneas por diferentes criterios, desde obtener todas las líneas hasta buscar una específica por salón, mesa, comanda, relación y subartículo.

🎯 Características de las Consultas de Líneas

  • Múltiples criterios de búsqueda: Por salón, mesa, comanda, relación o todas
  • Identificación compuesta: Cada línea se identifica por 5 parámetros
  • Información completa: Datos de pedido, artículo, precios, IVA, etc.
  • Estados de línea: Información sobre anulaciones e invitaciones
  • Manejo de errores: Respuestas apropiadas para casos no encontrados
  • Logging estructurado: Registro de errores y eventos
  • Validación de datos: Verificación de parámetros de entrada
  • Respuestas tipadas: Uso de ServiceResult para manejo de resultados
  • Integración con artículos: Información completa del artículo
  • Cálculos de precios: Precios con y sin IVA incluidos

Endpoints Disponibles

GET /Working/MesasLinea/GetAll

Obtiene todas las líneas de mesas del restaurante. Este endpoint devuelve una lista completa de todas las líneas de pedidos registradas en la base de datos.
Parámetros de consulta:
  • initialCatalog (string, requerido): Nombre de la base de datos
  • userID (string, opcional): ID de usuario de la base de datos
  • password (string, opcional): Contraseña de la base de datos
200 OK
Líneas de mesas devueltas exitosamente
[ { "salon": 1, "mesa": 5, "comanda": 1, "relacion": 1, "relacionSubarticulo": 0, "camarero": 2, "articulo": "ART001", "orden": 1, "descripcion": "Hamburguesa Clásica", "cantidad": 2, "precio": 12.50, "precioIva": 15.13, "iva": 21.0, "total": 25.00, "totalIva": 30.26, "familia": "HAMBURGUESAS", "gramos": 200, "invitacion": "N", "cantidadComanda": 0, "impresoraComanda": "COCINA", "anulada": "N", "pedido": 0, "agrupar": "N", "subarticulo": "" }, { "salon": 2, "mesa": 3, "comanda": 1, "relacion": 1, "relacionSubarticulo": 0, "camarero": 1, "articulo": "ART002", "orden": 1, "descripcion": "Coca Cola", "cantidad": 1, "precio": 2.50, "precioIva": 3.03, "iva": 21.0, "total": 2.50, "totalIva": 3.03, "familia": "BEBIDAS", "gramos": 330, "invitacion": "N", "cantidadComanda": 0, "impresoraComanda": "BARRA", "anulada": "N", "pedido": 0, "agrupar": "N", "subarticulo": "" } ]
500 Internal Server Error
Error interno del servidor
{ "message": "Error interno al obtener las líneas de mesa" }

GET /Working/MesasLinea/GetBySalonMesa/{salon}/{mesa}

Obtiene todas las líneas de una mesa específica por salón y número de mesa. Este endpoint permite consultar todos los pedidos de una mesa en particular.
Parámetros de ruta:
  • salon (double, requerido): ID del salón o área del restaurante
  • mesa (double, requerido): ID de la mesa específica
Parámetros de consulta:
  • initialCatalog (string, requerido): Nombre de la base de datos
  • userID (string, opcional): ID de usuario de la base de datos
  • password (string, opcional): Contraseña de la base de datos
200 OK
Líneas de mesa encontradas
[ { "salon": 1, "mesa": 5, "comanda": 1, "relacion": 1, "relacionSubarticulo": 0, "camarero": 2, "articulo": "ART001", "orden": 1, "descripcion": "Hamburguesa Clásica", "cantidad": 2, "precio": 12.50, "precioIva": 15.13, "iva": 21.0, "total": 25.00, "totalIva": 30.26, "familia": "HAMBURGUESAS", "gramos": 200, "invitacion": "N", "cantidadComanda": 0, "impresoraComanda": "COCINA", "anulada": "N", "pedido": 0, "agrupar": "N", "subarticulo": "" } ]
404 Not Found
No se encontraron líneas para la mesa
{ "message": "No table lines found for table 5 in room 1", "details": { "salon": 1, "mesa": 5 } }
500 Internal Server Error
Error interno del servidor

GET /Working/MesasLinea/Get/{salon}/{mesa}/{comanda}/{relacion}/{relacionSubarticulo}

Obtiene una línea específica por salón, mesa, comanda, relación y subartículo. Este endpoint permite consultar una línea específica de pedido.
Parámetros de ruta:
  • salon (double, requerido): ID del salón o área del restaurante
  • mesa (double, requerido): ID de la mesa específica
  • comanda (double, requerido): ID de la comanda
  • relacion (double, requerido): ID de relación de la línea
  • relacionSubarticulo (double, requerido): ID de relación del subartículo
Parámetros de consulta:
  • initialCatalog (string, requerido): Nombre de la base de datos
  • userID (string, opcional): ID de usuario de la base de datos
  • password (string, opcional): Contraseña de la base de datos
200 OK
Línea específica encontrada
{ "salon": 1, "mesa": 5, "comanda": 1, "relacion": 1, "relacionSubarticulo": 0, "camarero": 2, "articulo": "ART001", "orden": 1, "descripcion": "Hamburguesa Clásica", "cantidad": 2, "precio": 12.50, "precioIva": 15.13, "iva": 21.0, "total": 25.00, "totalIva": 30.26, "familia": "HAMBURGUESAS", "gramos": 200, "invitacion": "N", "cantidadComanda": 0, "impresoraComanda": "COCINA", "anulada": "N", "pedido": 0, "agrupar": "N", "subarticulo": "" }
404 Not Found
No se encontró la línea específica
{ "message": "Table line not found with order 1 for table 5 in room 1 (relation: 1, sub-article relation: 0)", "details": { "salon": 1, "mesa": 5, "comanda": 1, "relacion": 1, "relacionSubarticulo": 0 } }
500 Internal Server Error
Error interno del servidor

Modelo de Datos - MesasLinea

Propiedades del modelo MesasLinea:
  • Salon (double): ID del salón o área del restaurante
  • Mesa (double): ID de la mesa específica
  • Comanda (double): ID de la comanda
  • Relacion (double): ID de relación de la línea
  • RelacionSubarticulo (double): ID de relación del subartículo
  • Camarero (double): ID del camarero que tomó el pedido
  • Articulo (string): Código del artículo
  • Orden (double): Orden de la línea en la comanda
  • Descripcion (string): Descripción del artículo
  • Cantidad (double): Cantidad del artículo
  • Precio (double): Precio unitario sin IVA
  • PrecioIva (double): Precio unitario con IVA
  • Iva (double): Porcentaje de IVA aplicado
  • Total (double): Total sin IVA (cantidad * precio)
  • TotalIva (double): Total con IVA (cantidad * precioIva)
  • Familia (string): Familia del artículo
  • Gramos (double): Peso en gramos del artículo
  • Invitacion (string): Indica si es invitación (S/N)
  • CantidadComanda (double): Cantidad en comanda
  • ImpresoraComanda (string): Impresora para comanda
  • Anulada (string): Indica si está anulada (S/N)
  • Pedido (double): Número de pedido
  • Agrupar (string): Indica si se agrupa (S/N)
  • Subarticulo (string): Código del subartículo

📝 Estados de Línea

  • Activa: Línea de pedido normal
  • Anulada: Línea cancelada (anulada = "S")
  • Invitación: Línea sin costo (invitacion = "S")
  • Agrupada: Línea agrupada con otras (agrupar = "S")
  • Subartículo: Línea de subartículo (relacionSubarticulo > 0)

Servicio Utilizado

IMesasLineaService - Servicio principal para la gestión de líneas de mesas
  • GetAll(): Obtiene todas las líneas de mesas
  • GetBySalonMesa(): Obtiene las líneas por salón y mesa
  • GetById(): Obtiene una línea específica por todos sus identificadores

🔍 Casos de Uso Comunes

📋 Escenarios de Aplicación

  • Consulta de pedidos por mesa: Ver todos los pedidos de una mesa
  • Consulta de línea específica: Ver detalles de un pedido específico
  • Vista general de pedidos: Ver todos los pedidos del restaurante
  • Control de camareros: Ver qué camarero tomó cada pedido
  • Gestión de invitaciones: Identificar pedidos sin costo
  • Control de anulaciones: Ver líneas canceladas
  • Cálculo de totales: Sumar totales de pedidos
  • Auditoría de pedidos: Revisar pedidos para reportes
  • Integración con POS: Obtener información para sistemas de punto de venta
  • Control de impresoras: Ver qué impresora usar para cada pedido
  • Gestión de familias: Agrupar pedidos por familia de productos
  • Control de subartículos: Gestionar pedidos con subartículos

🔒 Consideraciones de Seguridad

⚠️ Protección de Datos de Negocio

  • Auditoría de consultas: Registrar quién consulta qué pedidos
  • Validación de permisos: Solo usuarios autorizados pueden consultar
  • Filtrado de datos sensibles: No exponer información de precios sin autorización
  • Control de acceso: Restringir acceso según roles de usuario
  • Logs de consultas: Mantener registro de consultas realizadas
  • Validación de parámetros: Verificar que los IDs sean válidos
  • Rate limiting: Limitar frecuencia de consultas
  • Sanitización de datos: Limpiar parámetros de entrada
  • Protección de precios: Controlar acceso a información de precios
  • Validación de integridad: Verificar que las líneas pertenezcan a cabeceras válidas