← Volver a TableManagerController

📝 Gestión de Líneas de Mesa

Endpoints para la gestión CRUD completa de líneas de pedidos en mesas

Descripción General

Los endpoints de Gestión de Líneas de Mesa proporcionan las operaciones fundamentales para administrar los pedidos y líneas de productos en las mesas del sistema RestMaster. Estos endpoints manejan la adición, actualización y eliminación de líneas de pedidos con validación completa de artículos, precios e IVA.

🎯 Características de la Gestión de Líneas de Mesa

  • Validación de artículos: Verificación de existencia y disponibilidad
  • Cálculo automático: Precios, IVA y totales calculados automáticamente
  • Control de estados: Gestión de mesas en servicio y facturadas
  • Gestión de invitaciones: Control de productos de cortesía
  • Asignación de camareros: Control de quién tomó el pedido
  • Validación de tarifas: Verificación de precios por tarifa
  • Control de cantidades: Gestión de cantidades y eliminación lógica

Endpoints Disponibles

POST /api/TableManager/line

Agrega una nueva línea a una mesa existente. Este endpoint valida que la mesa esté en servicio y que el artículo exista. Crea una nueva línea de mesa (MesasLinea) con el artículo y cantidad especificados. Si la mesa ya está facturada, cambia su estado a 'Refacturada'.
Body (JSON):
{ "salon": 1, "mesa": 1, "articulo": "CAFE", "cantidad": 2, "camarero": 1, "invitacion": "N" }
Headers:
  • 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 agregada exitosamente
{ "cabecera": { "salon": 1.0, "mesa": 1.0, "relacion": 1.0, "camarero": 1.0, "pax": 4.0, "tarifa": 1.0, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T10:30:00", "dividida": "N", "propina": "S", "porcentajePropina": 10.0 }, "estado": { "salon": 1.0, "mesa": 1.0, "estado": "E", "camarero": 1.0, "nombreAsignado": "Juan Pérez" }, "lineas": [ { "salon": 1.0, "mesa": 1.0, "comanda": 1.0, "relacion": 1.0, "relacionSubarticulo": 1.0, "camarero": 1.0, "articulo": "CAFE", "orden": 1.0, "descripcion": "Café Americano", "cantidad": 2.0, "precio": 2.50, "precioIva": 3.025, "iva": 21.0, "total": 5.0, "totalIva": 6.05, "familia": "BEBIDAS", "gramos": "N", "invitacion": "N" } ] }
400 Bad Request
Error de validación o mesa no en servicio
{ "message": "La mesa 1 en el salón 1 no está en servicio" }
404 Not Found
Mesa o artículo no encontrado
{ "message": "El artículo CAFE no existe" }

PUT /api/TableManager/line

Actualiza una línea existente en una mesa (cantidad, artículo, precio, etc.). Este endpoint valida que la mesa esté en servicio y que la línea exista. Actualiza la línea de mesa especificada (MesasLinea) con nuevos valores. Si la mesa ya está facturada, cambia su estado a 'Refacturada'.
Body (JSON):
{ "salon": 1, "mesa": 1, "relacion": 1, "articulo": "CAFE", "cantidad": 3, "camarero": 1, "precio": 2.75, "invitacion": "N" }
Headers:
  • 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 actualizada exitosamente
{ "cabecera": { "salon": 1.0, "mesa": 1.0, "relacion": 1.0, "camarero": 1.0, "pax": 4.0, "tarifa": 1.0, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T10:30:00", "dividida": "N", "propina": "S", "porcentajePropina": 10.0 }, "estado": { "salon": 1.0, "mesa": 1.0, "estado": "E", "camarero": 1.0, "nombreAsignado": "Juan Pérez" }, "lineas": [ { "salon": 1.0, "mesa": 1.0, "comanda": 1.0, "relacion": 1.0, "relacionSubarticulo": 1.0, "camarero": 1.0, "articulo": "CAFE", "orden": 1.0, "descripcion": "Café Americano", "cantidad": 3.0, "precio": 2.75, "precioIva": 3.3275, "iva": 21.0, "total": 8.25, "totalIva": 9.9825, "familia": "BEBIDAS", "gramos": "N", "invitacion": "N" } ] }
400 Bad Request
Error de validación o mesa no en servicio
{ "message": "La mesa 1 en el salón 1 no está en servicio" }
404 Not Found
Mesa, línea o artículo no encontrado
{ "message": "No se encontró la línea con relación 1 en la mesa 1 del salón 1" }

DELETE /api/TableManager/line/{salon}/{mesa}/{relacion}

Elimina una línea específica de una mesa existente. Este endpoint valida que la mesa y la línea especificada existan. Devuelve confirmación de la eliminación.
Parámetros de ruta:
  • salon (double, requerido): ID del salón
  • mesa (double, requerido): ID de la mesa
  • relacion (double, requerido): ID de relación de la línea
Headers:
  • 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 eliminada exitosamente
{ "message": "Línea eliminada correctamente" }
404 Not Found
Mesa o línea no encontrada
{ "message": "No se encontró la línea con relación 1 en la mesa 1 del salón 1", "details": { "salon": 1.0, "mesa": 1.0, "relacion": 1.0 } }
400 Bad Request
Mesa no puede ser modificada por su estado actual
{ "message": "La mesa 1 en el salón 1 no puede ser modificada porque está facturada" }

Modelo de Datos - TableLineRequest

Propiedades del modelo TableLineRequest:
  • Salon (double): ID del salón de la mesa
  • Mesa (double): ID de la mesa
  • Articulo (string): Código del artículo a agregar
  • Cantidad (double): Cantidad del artículo
  • Camarero (double?): ID del camarero que toma el pedido
  • Invitacion (string): Indica si es invitación (S/N)

Modelo de Datos - TableLineUpdateRequest

Propiedades del modelo TableLineUpdateRequest:
  • Salon (double): ID del salón de la mesa
  • Mesa (double): ID de la mesa
  • Relacion (double): ID de relación de la línea a actualizar
  • Articulo (string): Código del artículo
  • Cantidad (double): Nueva cantidad del artículo
  • Camarero (double?): ID del camarero
  • Precio (double?): Precio personalizado (opcional)
  • Invitacion (string): Indica si es invitación (S/N)

Modelo de Datos - MesasLinea

Propiedades del modelo MesasLinea:
  • Salon (double): ID del salón
  • Mesa (double): ID de la mesa
  • 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 (string): Indica si es producto de balanza (S/N)
  • Invitacion (string): Indica si es invitación (S/N)
  • Agrupar (string): Indica si se agrupa en factura (S/N)

Servicio Utilizado

ITableManagerService - Servicio para la gestión de líneas de mesa
  • AddTableLine(): Agrega una nueva línea a una mesa
  • UpdateTableLine(): Actualiza una línea existente
  • DeleteTableLine(): Elimina una línea de mesa

Casos de Uso Comunes

🎯 Escenarios de Aplicación

  • Agregar pedido en POS: Añadir productos a la comanda de una mesa
  • Corregir errores: Modificar cantidades o artículos incorrectos
  • Cancelar productos: Eliminar líneas de pedidos cancelados
  • Gestión de invitaciones: Marcar productos como cortesía
  • Cambio de camarero: Reasignar pedidos a otro camarero
  • Ajuste de precios: Modificar precios por circunstancias especiales
  • Refacturación: Agregar productos a mesa ya facturada

⚠️ Consideraciones de Seguridad

  • Validar que el usuario tenga permisos para modificar líneas
  • Verificar que la mesa esté en estado válido para modificaciones
  • Controlar acceso a líneas de otros camareros
  • Validar existencia y disponibilidad de artículos
  • Implementar auditoría de modificaciones de líneas
  • Controlar permisos para ajustes de precios

📝 Consideraciones Técnicas

  • Cálculos automáticos: Precios, IVA y totales calculados automáticamente
  • Validación de artículos: Verificación de existencia y tarifas
  • Control de estados: Gestión de mesas en servicio vs facturadas
  • Eliminación lógica: Líneas con cantidad 0 se consideran eliminadas
  • Integración con IVA: Cálculo automático de impuestos
  • Gestión de invitaciones: Control de productos de cortesía
  • Transacciones: Operaciones atómicas para mantener consistencia