Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/AbyssDevs/CUSCATLECO/llms.txt

Use this file to discover all available pages before exploring further.

La base de datos cuscatleco está construida sobre MySQL y organiza toda la lógica del sistema de punto de venta en ocho áreas funcionales. Cada área agrupa las tablas que comparten responsabilidad sobre un dominio específico del negocio, desde la gestión de accesos hasta la trazabilidad de auditoría. Este documento describe la estructura real del esquema tal como aparece en schema.sql, junto con los datos semilla que se cargan en la instalación inicial.

Instalación

Para crear la base de datos e importar el esquema completo desde cero, ejecuta los siguientes comandos en tu cliente MySQL:
CREATE DATABASE cuscatleco;
USE cuscatleco;
SOURCE schema.sql;
Esto crea todas las tablas, índices, claves foráneas y carga los datos iniciales (roles, permisos, usuario administrador, categorías de menú y mesas) en un solo paso.
El hash de contraseña del usuario administrador inicial corresponde a la cadena 123 cifrada con bcrypt (costo 10). Cambia esta contraseña inmediatamente después de la primera instalación en cualquier entorno de producción.

Áreas funcionales

Este grupo controla qué puede hacer cada usuario dentro del sistema. Los permisos son granulares por módulo y se asignan a roles, no directamente a usuarios.Tabla roles
ColumnaTipoDescripción
id_rolINT PKIdentificador único del rol
rol_nombreVARCHAR(50) UNIQUENombre del rol (ej. Administrador)
rol_descripcionVARCHAR(200)Descripción del alcance del rol
rol_activoBOOLEANIndica si el rol está habilitado
rol_creado_enDATETIMEFecha de creación
Tabla permisos
ColumnaTipoDescripción
id_permisoINT PKIdentificador único del permiso
permiso_nombreVARCHAR(100) UNIQUEClave del permiso (ej. ver_auditoria)
permiso_moduloVARCHAR(50)Módulo al que pertenece el permiso
permiso_descripcionVARCHAR(200)Descripción legible del permiso
Tabla rol_permisoTabla pivote de muchos-a-muchos. La clave primaria compuesta (id_rol, id_permiso) garantiza que no se dupliquen asignaciones. Ambas claves foráneas tienen ON DELETE CASCADE.Datos semilla — roles del sistema:
id_rolrol_nombreDescripción
1AdministradorAcceso total al sistema
2MeseroGestión de pedidos por mesa
3CajeroControl de pagos y facturación
4CocinaVisualización y gestión de pedidos en cocina
5ClienteAcceso al portal de clientes
Datos semilla — permisos del sistema:
permiso_nombrepermiso_modulo
ver_dashboardGeneral
gestionar_usuariosUsuarios
gestionar_rolesUsuarios
ver_menuMenu
gestionar_menuMenu
crear_pedidoPedidos
ver_pedidosPedidos
actualizar_estado_pedidoPedidos
generar_facturaFacturacion
ver_reportesReportes
gestionar_reservacionesReservaciones
gestionar_clientesClientes
gestionar_mesasMesas
actualizar_estado_mesaMesas
listar_mesasMesas
ver_adminAdministrador
ver_meseroMesero
ver_cajeroCajero
ver_cocinaCocina
ver_auditoriaRegistros
Gestiona las cuentas de acceso al sistema y el perfil de fidelización de los clientes del restaurante.Tabla usuarios
ColumnaTipoDescripción
id_usuarioINT PKIdentificador único del usuario
usuario_nombreVARCHAR(100)Nombre completo
usuario_emailVARCHAR(100) UNIQUECorreo electrónico (usado para login)
usuario_passwordVARCHAR(255)Hash bcrypt de la contraseña
usuario_telefonoVARCHAR(15)Teléfono de contacto
usuario_activoBOOLEANEstado de la cuenta
usuario_creado_enDATETIMEFecha de creación
usuario_actualizado_enDATETIMEÚltima actualización (auto)
Tabla usuario_rolTabla pivote que asigna uno o más roles a cada usuario. La columna usuario_rol_fecha_asignacion registra cuándo se otorgó el rol.Tabla rangos_cliente
ColumnaTipoDescripción
id_rangoINT PKIdentificador del rango
rango_cliente_nombreENUMBronce, Plata u Oro
rango_cliente_descuentoDECIMAL(5,2)Porcentaje de descuento aplicable
rango_cliente_min_pedidosINTPedidos mínimos para alcanzar el rango
rango_cliente_min_consumoDECIMAL(10,2)Consumo acumulado mínimo en dólares
Tabla clientes
ColumnaTipoDescripción
id_clienteINT PKIdentificador del cliente
id_usuarioINT FKCuenta de usuario asociada
id_rangoINT FKRango de fidelización actual (default: 1, Bronce)
cliente_consumo_acumuladoDECIMAL(10,2)Total consumido en dólares
cliente_total_pedidosINTNúmero total de pedidos realizados
Datos semilla — rangos:
RangoDescuentoMin. pedidosMin. consumo
Bronce5%1$0.00
Plata10%5$100.00
Oro15%15$300.00
Datos semilla — usuarios iniciales:El esquema crea dos usuarios de sistema. El administrador principal con email admin@saborcuscatleco.com con rol Administrador asignado, y un usuario genérico Consumidor Final (anonimo@saborcuscatleco.com) registrado como cliente de rango Bronce, utilizado para pedidos sin cliente identificado.
Modela la distribución física del salón y el sistema de reservaciones de los clientes.Tabla mesas
ColumnaTipoDescripción
id_mesaINT PKIdentificador único de la mesa
mesa_numeroINT UNIQUENúmero visible de la mesa
mesa_capacidadINTNúmero de comensales que admite
mesa_ubicacionVARCHAR(45)Zona física (ej. Terraza, Barra)
mesa_estadoENUMDisponible, Ocupada, Reservada, Limpieza, Mantenimiento
mesa_actualizada_porINT FKUsuario que realizó el último cambio de estado
mesa_actualizada_enDATETIMETimestamp de la última actualización (auto)
Tabla reservaciones
ColumnaTipoDescripción
id_reservacionINT PKIdentificador de la reservación
id_clienteINT FKCliente que reservó
id_mesaINT FKMesa asignada (puede ser NULL hasta confirmar)
reservacion_fechaDATETIMEFecha y hora de la reservación
reservacion_num_personasINTCantidad de personas
reservacion_preferenciasTEXTNotas o preferencias del cliente
reservacion_estadoENUMPendiente, Confirmada, Cancelada
Datos semilla — mesas iniciales:
# MesaCapacidadUbicación
1–24 personasZona Interior
3–46 personasTerraza
5–62 personasBarra
7–88 personasSalón VIP
Registra el ciclo de vida completo de cada pedido, desde su creación hasta su entrega o cancelación.Tabla pedidos
ColumnaTipoDescripción
id_pedidoINT PKIdentificador del pedido
id_mesaINT FKMesa asociada (NULL para pedidos para llevar)
id_meseroINT FKUsuario mesero que tomó el pedido
id_clienteINT FKCliente asociado (NULL si es anónimo)
pedido_estadoENUMPendiente, EnPreparacion, Listo, Entregado, Cerrado, Cancelado
pedido_tipoENUMSalon o Llevar
pedido_totalDECIMAL(10,2)Total calculado del pedido
pedido_fecha_horaDATETIMETimestamp de creación
pedido_enviado_cocina_enDATETIMECuándo se envió a cocina
pedido_listo_enDATETIMECuándo cocina marcó el pedido como listo
pedido_entregado_enDATETIMECuándo se entregó al cliente
pedido_cancelado_enDATETIMETimestamp de cancelación
pedido_cancelado_porINT FKUsuario que canceló el pedido
pedido_cancelado_motivoVARCHAR(200)Motivo de cancelación
Tabla detalle_pedido
ColumnaTipoDescripción
id_detalleINT PKIdentificador del detalle
id_pedidoINT FKPedido al que pertenece (CASCADE DELETE)
id_platilloINT FKPlatillo solicitado
detalle_pedido_cantidadINTCantidad pedida
detalle_pedido_precio_unitarioDECIMAL(10,2)Precio al momento del pedido
detalle_pedido_subtotalDECIMAL(10,2)Cantidad × precio unitario
detalle_pedido_notasVARCHAR(200)Instrucciones especiales del cliente
El precio unitario se almacena en detalle_pedido al momento de crear el detalle, no como referencia al precio actual del platillo. Esto garantiza que cambios futuros en el precio no alteren el historial de pedidos.
Gestiona la emisión de documentos fiscales electrónicos para consumidor final y crédito fiscal.Tabla facturas
ColumnaTipoDescripción
id_facturaINT PKIdentificador de la factura
id_pedidoINT FKPedido que origina la factura
id_cajeroINT FKUsuario cajero que emitió la factura
factura_correlativoVARCHAR(20) UNIQUENúmero correlativo del documento fiscal
factura_tipoENUMConsumidorFinal o CreditoFiscal
factura_nombre_clienteVARCHAR(100)Nombre del receptor
factura_dui_nitVARCHAR(20)DUI o NIT del receptor
factura_nrcVARCHAR(20)NRC (solo para crédito fiscal)
factura_subtotalDECIMAL(10,2)Monto antes de IVA
factura_ivaDECIMAL(10,2)IVA calculado
factura_totalDECIMAL(10,2)Total a pagar
factura_enviada_correoBOOLEANSi la factura fue enviada por email
factura_anuladaBOOLEANSi la factura fue anulada
Tabla detalle_factura
ColumnaTipoDescripción
id_detalleINT PKIdentificador del detalle
id_facturaINT FKFactura a la que pertenece (CASCADE DELETE)
id_platilloINT FKPlatillo facturado (puede ser NULL)
detalle_factura_descripcionVARCHAR(200)Descripción del ítem facturado
detalle_factura_cantidadINTCantidad
detalle_factura_precio_unitarioDECIMAL(10,2)Precio unitario
detalle_factura_subtotalDECIMAL(10,2)Subtotal del ítem
El campo factura_anulada no elimina el registro; solo lo marca como inválido. Las facturas anuladas deben mantenerse en la base de datos para efectos contables y de auditoría.
Almacena las notificaciones internas generadas por el sistema para informar a los usuarios sobre eventos relevantes.Tabla notificaciones
ColumnaTipoDescripción
id_notificacionINT PKIdentificador único de la notificación
id_usuarioINT FKUsuario destinatario
id_pedidoINT FKPedido relacionado (puede ser NULL)
notificacion_tipoENUMReservacion, Pedido o Factura
notificacion_asuntoVARCHAR(200)Título o asunto de la notificación
notificacion_mensajeTEXTCuerpo del mensaje
notificacion_enviadaBOOLEANSi fue enviada al canal externo (ej. email)
notificacion_leidaBOOLEANSi el usuario la ha marcado como leída
notificacion_leida_enDATETIMETimestamp en que fue leída
notificacion_fechaDATETIMETimestamp de creación
Registra todas las acciones de mutación realizadas por usuarios autenticados sobre las entidades críticas del sistema.Tabla auditoria_log
ColumnaTipoDescripción
id_auditoriaINT PKIdentificador del registro de auditoría
id_usuarioINT FKID del usuario que ejecutó la acción
usuario_nombreVARCHAR(100)Nombre del usuario en el momento del evento
usuario_rolVARCHAR(50)Rol activo del usuario en el momento del evento
accionVARCHAR(50)Tipo de acción (ej. CREAR, EDITAR, ELIMINAR)
moduloVARCHAR(50)Módulo afectado (ej. mesas, platillos, pedidos)
entidad_idINTID del registro afectado
descripcionTEXTDescripción legible del evento
datos_anterioresJSONSnapshot del estado previo a la modificación
datos_nuevosJSONSnapshot del estado posterior a la modificación
fecha_horaDATETIMETimestamp exacto del evento
Los índices definidos sobre esta tabla optimizan las consultas más frecuentes del panel de auditoría:
ÍndiceColumnas
idx_auditoria_usuarioid_usuario
idx_auditoria_accionaccion
idx_auditoria_modulomodulo
idx_auditoria_fechafecha_hora
idx_auditoria_entidadmodulo, entidad_id
Para más detalles sobre el funcionamiento del sistema de auditoría, consulta la página Auditoría y Trazabilidad.

Build docs developers (and LLMs) love