Apariencia
Promociones y cupones
Las promociones te permiten rebajar el precio del pasaje de forma controlada: por temporada, por campaña o con un cupón que el pasajero presenta. El descuento se aplica sobre el precio ya resuelto de la venta (nunca recalcula la tarifa), y queda registrado en la venta para que sepas por qué se cobró menos.
Los tres tipos de promoción
TitanicBus maneja tres tipos, y se resuelven en un orden de prioridad (no se acumulan entre sí):
| Tipo | Qué es | Cómo se aplica |
|---|---|---|
| Cupón | Un código que el pasajero presenta. Tiene usos limitados y condiciones. | El cajero escribe el código en la venta. |
| Temporada | Un descuento automático para un rango de fechas (campaña, fecha baja). | Se aplica solo, sin código, si la venta cumple las condiciones. |
| Descuento (manual) | Una rebaja que el cajero decide en el momento, dentro de su tope. | El cajero ingresa un monto de descuento a mano. |
Orden de prioridad (no acumulable en esta versión)
Si en una misma venta coinciden varios, se aplica uno solo, en este orden: 1) cupón (si se ingresó un código válido) → 2) temporada aplicable (automática) → 3) descuento manual (acotado por el tope del rol). No se suman entre sí.
Cómo se define un descuento
Todo tipo de promoción usa los mismos campos base:
| Campo | Para qué sirve |
|---|---|
| Nombre | Identifica la promoción (obligatorio). Es para tu control interno. |
| Tipo | temporada, cupón o descuento (ver arriba). |
| Modo | Cómo se calcula: porcentaje (pct) o monto fijo (monto). |
| Valor | El número del descuento: si es porcentaje, 0 a 100; si es monto, un valor en soles ≥ 0. |
| Código | Solo para cupones: el texto que el pasajero presenta (ej. VERANO2026). Debe ser único. |
| Vigencia desde / hasta | El rango de fechas en que la promoción está activa. Sin "hasta", no caduca. |
| Usos máximos | Cuántas veces puede usarse en total (útil para cupones). Vacío = ilimitado. |
| Monto mínimo | El importe mínimo de compra para que aplique. Vacío = sin mínimo. |
| Ruta / Tipo de servicio | Acota la promoción a una ruta o un tipo de servicio. Vacío = cualquiera. |
| Activo | Si está apagada, la promoción existe pero no se aplica. |
Porcentaje o monto: ¿cuál conviene?
Usa porcentaje cuando quieras una rebaja proporcional al precio (ej. 10% en todo). Usa monto fijo cuando quieras descontar una cantidad exacta (ej. S/ 5 por pasaje). En ambos casos, el descuento nunca supera el precio del pasaje (no puede dejar el pasaje en negativo).
Crear una promoción
- Entra a Promociones desde el menú.
- Presiona Nueva promoción.
- Elige el tipo y el modo, e ingresa el valor.
- Ponle un nombre, la vigencia y las condiciones que apliquen (código, usos, monto mínimo, ruta, tipo de servicio).
- Guarda.
Cómo se aplica en la venta
- Cupón: el cajero escribe el código durante la venta. El sistema valida que el cupón exista, esté activo, esté vigente hoy, que la venta cumpla su ruta/tipo de servicio y su monto mínimo, y que aún tenga usos. Si todo está bien, aplica el descuento y consume un uso.
- Temporada: no requiere código. Al vender, si la fecha del viaje cae dentro de la temporada y la venta cumple ruta/tipo/monto mínimo, el descuento se aplica solo.
- Descuento manual: el cajero ingresa una rebaja a mano, que no puede superar el tope de su rol.
Ver, del lado del cajero, Vender un pasaje.
Vigencia: ojo con qué fecha se mira
- Para el cupón y el descuento manual, la vigencia se compara con la fecha de hoy (el día en que vendes).
- Para la temporada, la vigencia se compara con la fecha del viaje (la salida). Así puedes armar una campaña para viajes de una fecha futura y venderlos desde hoy.
El consumo del cupón es seguro
Cuando un cupón tiene usos limitados, el sistema descuenta el uso de forma atómica: aunque dos cajeros intenten usar el último uso al mismo tiempo, solo uno lo logra. No se puede "gastar de más".
El tope de descuento por rol
Cada rol tiene un descuento máximo (max_descuento_pct) que sus usuarios pueden aplicar de forma manual. Un cajero no puede pasar de ese tope aunque quiera. Este límite:
- Es un valor por rol (ver Usuarios y roles); los roles base rigen con 100 % por defecto.
- Aplica al descuento manual. (Un cupón o una temporada válidos aplican su valor configurado.)
- Si el descuento manual pedido supera el tope, la venta lo rechaza con el mensaje del tope.
El descuento supera mi tope — ¿qué hago?
El sistema no te dejará aplicar un descuento manual mayor al máximo de tu rol. Opciones:
- Reduce el descuento hasta tu tope.
- Pide a un usuario con rol de mayor tope (o a un administrador) que aplique la rebaja.
- Si es una campaña recurrente, crea una temporada o un cupón: esos aplican su valor sin depender del tope manual del cajero.
Validaciones y errores
Al aplicar un cupón o descuento en la venta
| Mensaje | Por qué aparece | Qué hacer |
|---|---|---|
| Cupón no válido. | El código no existe, no es de tipo cupón, o la promoción está inactiva. | Verifica el código y que la promoción esté activa. |
| El cupón no aplica a esta compra (vigencia, ruta o monto mínimo). | Fuera de fechas, ruta/tipo distinto, o el monto no llega al mínimo. | Revisa las condiciones del cupón. |
| El cupón ya alcanzó su máximo de usos. | Se agotaron los usos permitidos. | Ya no se puede usar; crea otro si hace falta. |
| El descuento supera el máximo de tu rol (…%). | El descuento manual excede el tope del rol del cajero. | Reduce el descuento o pide autorización. |
Al crear o editar una promoción
| Mensaje | Por qué aparece | Qué hacer |
|---|---|---|
| El nombre es obligatorio. | Dejaste el nombre vacío. | Ponle un nombre a la promoción. |
| Tipo no válido. | El tipo no es temporada, cupón ni descuento. | Elige un tipo válido. |
| Modo no válido (pct o monto). | El modo no es porcentaje ni monto. | Elige porcentaje o monto. |
| Valor inválido (porcentaje 0-100 o monto ≥ 0). | El descuento está fuera de rango. | Usa un porcentaje 0–100 o un monto ≥ 0. |
| El cupón requiere un código. | Marcaste tipo cupón pero no pusiste código. | Ingresa el código del cupón. |
| Ya existe una promoción con ese código. | El código de cupón está repetido. | Usa otro código. |
| Fecha de inicio inválida. | La fecha "desde" está mal escrita. | Usa el formato AAAA-MM-DD. |
| Fecha de fin inválida o anterior al inicio. | La fecha "hasta" está mal escrita o es anterior a la "desde". | El fin debe ser igual o posterior al inicio. |
Enlaces útiles
- Usuarios y roles: el descuento máximo (
max_descuento_pct) es un tope por rol. - Vender un pasaje: cómo el cajero ingresa un cupón o descuento al vender.
- Salidas y frecuencias: las rutas y tipos de servicio a los que puedes acotar una promoción.