Descripción General
Los endpoints de Gestión de Líneas proporcionan las operaciones fundamentales para administrar las líneas de mesas del restaurante. Estos endpoints manejan la creación, actualización y eliminación de pedidos, incluyendo cálculos automáticos de precios, IVA, validación de artículos e integración con cabeceras de mesas.
🎯 Características de la Gestión de Líneas
- Creación completa: Crear líneas con todos los datos necesarios
- Creación simplificada: Crear líneas con cálculos automáticos
- Actualización controlada: Modificar líneas existentes
- Eliminación segura: Eliminar líneas con validación
- Identificación compuesta: Cada línea se identifica por 5 parámetros
- Cálculos automáticos: Precios, IVA y totales calculados automáticamente
- Validación de artículos: Verificar que el artículo existe
- Validación de cabeceras: Verificar que existe cabecera de mesa
- Gestión de invitaciones: Aplicar descuentos por invitación
- Manejo de errores: Respuestas apropiadas para casos de error
- Logging estructurado: Registro de errores y eventos
- Validación de datos: Verificación de integridad de la información
- Respuestas tipadas: Uso de ServiceResult para manejo de resultados
Endpoints Disponibles
POST
/Working/MesasLinea/Add
Crea una nueva línea de mesa con todos los datos proporcionados. Este endpoint permite crear un pedido completo con información detallada del artículo, precios, IVA, etc.
Body (JSON):
{
"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": ""
}
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
201 Created
Línea creada 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": ""
}
400 Bad Request
Error al crear la línea
{
"message": "The 'initialCatalog' parameter is required and cannot be empty."
}
400 Bad Request
Error de validación
{
"message": "Salon and Mesa must be positive values."
}
400 Bad Request
No existe cabecera
{
"message": "No header exists for the specified room and table."
}
500 Internal Server Error
Error interno del servidor
POST
/Working/MesasLinea/AddSimplified
Crea una nueva línea simplificada con cálculos automáticos. Este endpoint permite crear un pedido básico automáticamente calculando precios, IVA y totales basándose en el artículo.
Parámetros de consulta:
- salon (double, requerido): ID del salón
- mesa (double, requerido): ID de la mesa
- comanda (double, opcional): ID de la comanda
- relacion (double, opcional): ID de relación
- camarero (double, opcional): ID del camarero
- articulo (string, requerido): Código del artículo
- cantidad (double, requerido): Cantidad del artículo
- invitacion (string, opcional): Indica si es invitación (S/N)
- 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
201 Created
Línea simplificada creada exitosamente
{
"salon": 1,
"mesa": 5,
"comanda": 0,
"relacion": 1,
"relacionSubarticulo": 0,
"camarero": 0,
"articulo": "ART001",
"orden": 0,
"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": ""
}
400 Bad Request
Artículo no existe
{
"message": "The specified article does not exist."
}
500 Internal Server Error
Error interno del servidor
PUT
/Working/MesasLinea/Update/{salon}/{mesa}/{comanda}/{relacion}/{relacionSubarticulo}
Actualiza una línea existente por salón, mesa, comanda, relación y subartículo. Este endpoint permite modificar la información de un pedido ya creado.
Parámetros de ruta:
- salon (double, requerido): ID del salón
- mesa (double, requerido): ID de la mesa
- comanda (double, requerido): ID de la comanda
- relacion (double, requerido): ID de relación
- relacionSubarticulo (double, requerido): ID de relación del subartículo
Body (JSON):
{
"salon": 1,
"mesa": 5,
"comanda": 1,
"relacion": 1,
"relacionSubarticulo": 0,
"camarero": 2,
"articulo": "ART001",
"orden": 1,
"descripcion": "Hamburguesa Clásica",
"cantidad": 3,
"precio": 12.50,
"precioIva": 15.13,
"iva": 21.0,
"total": 37.50,
"totalIva": 45.39,
"familia": "HAMBURGUESAS",
"gramos": 200,
"invitacion": "N",
"cantidadComanda": 0,
"impresoraComanda": "COCINA",
"anulada": "N",
"pedido": 0,
"agrupar": "N",
"subarticulo": ""
}
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 actualizada exitosamente
{
"salon": 1,
"mesa": 5,
"comanda": 1,
"relacion": 1,
"relacionSubarticulo": 0,
"camarero": 2,
"articulo": "ART001",
"orden": 1,
"descripcion": "Hamburguesa Clásica",
"cantidad": 3,
"precio": 12.50,
"precioIva": 15.13,
"iva": 21.0,
"total": 37.50,
"totalIva": 45.39,
"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 para actualizar
{
"message": "Cannot update: 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
DELETE
/Working/MesasLinea/Delete/{salon}/{mesa}/{comanda}/{relacion}/{relacionSubarticulo}
Elimina una línea específica por salón, mesa, comanda, relación y subartículo. Este endpoint permite eliminar un pedido, útil para cancelar pedidos o corregir errores.
Parámetros de ruta:
- salon (double, requerido): ID del salón
- mesa (double, requerido): ID de la mesa
- comanda (double, requerido): ID de la comanda
- relacion (double, requerido): ID de relación
- 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 eliminada exitosamente
{
"message": "Table line deleted successfully.",
"mesasLinea": {
"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 para eliminar
{
"message": "Cannot delete: 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