Descripción General
Los endpoints de Gestión de Apertura y Cierre proporcionan las operaciones fundamentales para administrar el ciclo de vida de las mesas en el sistema RestMaster. Estos endpoints manejan la apertura de nuevas mesas con validación completa de recursos y la cancelación de mesas existentes con limpieza de datos.
🎯 Características de la Gestión de Apertura y Cierre
- Validación completa: Verificación de camareros, clientes y repartidores
- Control de estados: Gestión automática de estados de mesa
- Configuración de propinas: Gestión de porcentajes de propina
- Limpieza de datos: Eliminación completa de datos asociados
- Integración con facturación: Control de documentos asociados
- Validación de disponibilidad: Verificación de que la mesa esté disponible
- Asignación automática: Asignación de relaciones y comandas
Endpoints Disponibles
POST
/api/TableManager/open
Abre una nueva mesa o activa una existente en el salón especificado. Este endpoint valida que la mesa esté disponible y que el camarero, cliente y repartidor (si se proporcionan) existan. Crea una nueva cabecera de mesa (MesasCabecera) y establece el estado de la mesa como 'En Servicio'.
Body (JSON):
{
"salon": 1,
"mesa": 1,
"camarero": 1,
"pax": 4,
"tarifa": 1,
"cliente": 123,
"repartidor": null,
"pedido": null,
"porcentajePropina": 10.0
}
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
Mesa abierta 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",
"tipoDocumento": null,
"serie": null,
"factura": null,
"cliente": 123.0,
"repartidor": null,
"pedido": null,
"propina": "S",
"porcentajePropina": 10.0
},
"estado": {
"salon": 1.0,
"mesa": 1.0,
"bloqueada": "N",
"estado": "E",
"repartidor": null,
"camarero": 1.0,
"nombreAsignado": "Juan Pérez",
"subestado": null
},
"lineas": []
}
400 Bad Request
Error de validación o mesa no disponible
{
"message": "La mesa 1 en el salón 1 no está disponible para abrir"
}
DELETE
/api/TableManager/{salon}/{mesa}
Cancela una mesa y elimina todos sus datos asociados. Este endpoint elimina todas las líneas de mesa (MesasLinea) asociadas a la mesa, elimina la cabecera de mesa (MesasCabecera) y establece el estado de la mesa como 'Disponible' en MesasEstado.
Parámetros de ruta:
- salon (double, requerido): ID del salón
- mesa (double, requerido): ID de la mesa
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
Mesa cancelada exitosamente
{
"message": "Mesa cancelada correctamente"
}
404 Not Found
Mesa no encontrada
{
"message": "No se encontró la mesa 1 en el salón 1 para cancelar",
"details": {
"salon": 1.0,
"mesa": 1.0
}
}
400 Bad Request
Mesa no puede ser cancelada por su estado actual
{
"message": "La mesa 1 en el salón 1 no puede ser cancelada porque está facturada"
}
Servicio Utilizado
ITableManagerService - Servicio para la gestión de mesas
- OpenTable(): Abre una nueva mesa o activa una existente
- CancelTable(): Cancela una mesa y elimina todos sus datos