← Volver a MesasCabeceraController

➕ Gestión de Cabeceras

Endpoints para la gestión CRUD completa de cabeceras de mesas del restaurante

Descripción General

Los endpoints de Gestión de Cabeceras proporcionan las operaciones fundamentales para administrar las cabeceras de mesas del restaurante. Estos endpoints manejan la creación, actualización y eliminación de comandas, incluyendo gestión de estados de mesa, división de mesas y asignación de clientes.

🎯 Características de la Gestión de Cabeceras

  • Creación completa: Crear cabeceras con todos los datos necesarios
  • Creación simplificada: Crear cabeceras con valores por defecto
  • Actualización controlada: Modificar cabeceras existentes
  • Eliminación segura: Eliminar cabeceras con validación
  • Identificación compuesta: Cada cabecera se identifica por salón, mesa y relación
  • Estados de mesa: Control de ocupación y divisió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 /WorkingData/MesasCabecera/Add

Crea una nueva cabecera de mesa con todos los datos proporcionados. Este endpoint permite crear una comanda completa con información detallada del cliente, repartidor, comisiones, etc.
Body (JSON):
{ "salon": 1, "mesa": 5, "relacion": 1, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T14:30:00", "dividida": "N", "tipoDocumento": "F", "serie": "", "factura": 0, "comisionista": 2, "valorComision": 5.00, "cliente": 123, "repartidor": 0, "horaReparto": "2024-01-15T14:30:00", "pedido": 0, "propina": "S", "porcentajePropina": 10.0 }
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
Cabecera creada exitosamente
{ "salon": 1, "mesa": 5, "relacion": 1, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T14:30:00", "dividida": "N", "tipoDocumento": "F", "serie": "", "factura": 0, "comisionista": 2, "valorComision": 5.00, "cliente": 123, "repartidor": 0, "horaReparto": "2024-01-15T14:30:00", "pedido": 0, "propina": "S", "porcentajePropina": 10.0 }
400 Bad Request
Error al crear la cabecera
{ "message": "The MesasCabecera object cannot be null." }
500 Internal Server Error
Error interno del servidor
{ "message": "Internal server error", "error": "Error details..." }

POST /WorkingData/MesasCabecera/AddSimplified

Crea una nueva cabecera simplificada con valores por defecto. Este endpoint permite crear una comanda básica automáticamente asignando valores por defecto para campos no proporcionados.
Body (JSON):
{ "salon": 1, "mesa": 5 }
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
Cabecera simplificada creada exitosamente
{ "salon": 1, "mesa": 5, "relacion": 1, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T14:30:00", "dividida": "N", "tipoDocumento": "F", "serie": "", "factura": 0, "comisionista": 0, "valorComision": 0, "cliente": 0, "repartidor": 0, "horaReparto": "2024-01-15T14:30:00", "pedido": 0, "propina": "N", "porcentajePropina": 0 }
400 Bad Request
Error al crear la cabecera simplificada
{ "message": "The MesasCabecera object cannot be null." }
500 Internal Server Error
Error interno del servidor

PUT /WorkingData/MesasCabecera/Update/{salon}/{mesa}/{relacion}

Actualiza una cabecera existente por salón, mesa y relación. Este endpoint permite modificar la información de una comanda ya creada.
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
Body (JSON):
{ "salon": 1, "mesa": 5, "relacion": 1, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T14:30:00", "dividida": "S", "tipoDocumento": "F", "serie": "", "factura": 0, "comisionista": 2, "valorComision": 5.00, "cliente": 123, "repartidor": 0, "horaReparto": "2024-01-15T14:30:00", "pedido": 0, "propina": "S", "porcentajePropina": 10.0 }
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
Cabecera actualizada exitosamente
{ "salon": 1, "mesa": 5, "relacion": 1, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T14:30:00", "dividida": "S", "tipoDocumento": "F", "serie": "", "factura": 0, "comisionista": 2, "valorComision": 5.00, "cliente": 123, "repartidor": 0, "horaReparto": "2024-01-15T14:30:00", "pedido": 0, "propina": "S", "porcentajePropina": 10.0 }
400 Bad Request
Error al actualizar la cabecera
500 Internal Server Error
Error interno del servidor

DELETE /WorkingData/MesasCabecera/Delete/{salon}/{mesa}/{relacion}

Elimina una cabecera específica por salón, mesa y relación. Este endpoint permite eliminar una comanda, útil para cancelar comandas o corregir errores.
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
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
Cabecera eliminada exitosamente
{ "message": "Table header deleted successfully.", "data": { "salon": 1, "mesa": 5, "relacion": 1, "fecha": "2024-01-15T00:00:00", "hora": "2024-01-15T14:30:00", "dividida": "N", "tipoDocumento": "F", "serie": "", "factura": 0, "comisionista": 0, "valorComision": 0, "cliente": 0, "repartidor": 0, "horaReparto": "2024-01-15T14:30:00", "pedido": 0, "propina": "N", "porcentajePropina": 0 } }
400 Bad Request
Error al eliminar la cabecera
500 Internal Server Error
Error interno del servidor

Valores por Defecto - Creación Simplificada

📝 Campos Automáticos en AddSimplified

  • Relacion: Máximo relación + 1 (autogenerado)
  • Fecha: DateTime.Today (fecha actual)
  • Hora: DateTime.Now (hora actual)
  • Dividida: "N" (No dividida)
  • TipoDocumento: "F" (Factura)
  • Serie: "" (Vacío)
  • Factura: 0
  • Comisionista: 0
  • ValorComision: 0
  • Cliente: 0 (si es null)
  • Repartidor: 0 (si es null)
  • HoraReparto: DateTime.Now
  • Pedido: 0 (si es null)
  • Propina: "N" (No propina)
  • PorcentajePropina: 0

Servicio Utilizado

IMesasCabeceraService - Servicio principal para la gestión de cabeceras de mesas
  • Add(): Crea una nueva cabecera completa
  • GetMaxRelacion(): Obtiene el máximo relación para una mesa
  • Update(): Actualiza una cabecera existente
  • Delete(): Elimina una cabecera específica

🔍 Casos de Uso Comunes

📋 Escenarios de Aplicación

  • Apertura de comanda: Crear nueva cabecera al sentar clientes
  • División de mesa: Crear múltiples comandas en una mesa
  • Modificación de comanda: Actualizar datos de la cabecera
  • Cancelación de comanda: Eliminar cabecera incorrecta
  • Asignación de cliente: Asignar cliente a comanda
  • Configuración de comisiones: Establecer comisiones por comanda
  • Gestión de propinas: Configurar propinas por comanda
  • Cambio de estado: Marcar mesa como dividida o no
  • Corrección de errores: Modificar datos incorrectos
  • Integración con POS: Crear comandas desde sistemas externos

🔒 Consideraciones de Seguridad

⚠️ Protección de Datos de Negocio

  • Auditoría completa: Todas las operaciones deben ser auditadas
  • Validación de permisos: Solo usuarios autorizados pueden gestionar cabeceras
  • Validación de estado: Verificar que la mesa esté disponible para operaciones
  • Integridad de datos: Verificar que los datos sean consistentes
  • Prevención de conflictos: Evitar operaciones simultáneas en la misma mesa
  • Validación de relaciones: Verificar que la relación sea válida
  • Control de acceso: Restringir acceso según roles de usuario
  • Logs de transacciones: Mantener registro completo de todas las operaciones
  • Validación de entrada: Verificar que los datos de entrada sean válidos
  • Backup de datos: Mantener respaldo antes de operaciones críticas