Contenido
- Descripción general
- Jerarquía de clases de control (nestings)
- Estructura de árbol
- Herencia
- Variación de una sola característica
- Consistencia entre hermanos
- Propiedades de la raíz
- Características de compra
- Tipos de coincidencia
- Características admitidas
- Autorizaciones
- Integración con sistemas de gestión de ingresos
- Cómo funcionan las autorizaciones
- Almacenamiento
- Coincidencia
- Webhooks
- Selección de clase de control para una compra
- Paso 1: Selección del nesting
- Paso 2: Búsqueda de la clase coincidente más profunda
- Paso 3: Evaluación de disponibilidad
- Paso 4: Selección de clase
- Modo más específica
- Precios
- Precio base
- Modificadores de precio
- Cálculo del precio final
- Asignación de nestings a itinerarios
- Interfaz de usuario de clases de control
- Vista de lista
- Crear y editar
- Ver autorizaciones
Nestings de Clases de Control
Descripción general
Las clases de control son una función de precios y gestión de inventario en Betterez que permite a los operadores definir niveles de precios jerárquicos para la venta de boletos. Mediante una estructura de árbol de clases, los operadores pueden crear reglas de precios detalladas que respondan a características de la compra como canal de ventas, tipo de tarifa, clase de asiento, marca y antelación con la que se compra el boleto.
Las clases de control se integran (opcionalmente) con un sistema externo de gestión de ingresos (Revenue Management System o RMS) que determina cuántos boletos pueden venderse en cada nivel de precios para cada segmento del viaje. Esto permite una optimización dinámica de ingresos: el RMS decide cuántos asientos hay disponibles en cada nivel de precio y Betterez aplica esos límites durante el flujo de compra.
En resumen, una clase de control define:
- Cuándo aplica: un conjunto de características de compra que deben coincidir con la transacción actual.
- Cómo modifica el precio: un ajuste de precio opcional (porcentaje o monto fijo) sobre el precio base del boleto.
- Cuántos boletos pueden venderse bajo ella: determinado por las autorizaciones recibidas del RMS.
Jerarquía de clases de control (nestings)
Estructura de árbol
Las clases de control se organizan en árboles, denominados nestings. Cada nesting representa un conjunto completo de niveles de precios para un producto dado.
- Cada nesting tiene una única clase raíz en la parte superior.
- La raíz no tiene padre.
- Todas las demás clases del nesting tienen exactamente un padre y pueden tener cero o más hijos.
- Un nesting puede ser tan superficial como una sola raíz con hijos directos, o tener cualquier cantidad de niveles de profundidad.
Herencia
Cada clase hereda todas las características de compra de su padre. Esto significa que una clase hija siempre es al menos tan específica como su padre: coincide con las mismas condiciones que el padre, más potencialmente una adicional.
Variación de una sola característica
Una clase hija puede variar de su padre en exactamente una característica adicional. Por ejemplo, si una clase padre coincide con un producto y una marca específicos, un hijo puede restringir aún más la coincidencia especificando también un canal de ventas.
Consistencia entre hermanos
Todos los hermanos (hijos del mismo padre) deben variar en la misma característica. Por ejemplo, si un hijo de un padre varía por canal de ventas, todos los hermanos de ese hijo también deben variar por canal de ventas. Cada hermano debe especificar un valor único para esa característica, garantizando que no haya ambigüedad al elegir entre ellos.
Propiedades de la raíz
La clase raíz define la asociación general al producto y los criterios de selección de hijos del nesting, con 2 opciones:
- Más específica: el sistema selecciona la clase más profunda en el nesting cuyas características coinciden con la compra.
- Disponibilidad de autorizaciones de venta: el sistema selecciona la clase coincidente más profunda que además tenga disponibilidad suficiente según las autorizaciones del RMS (véase Selección de clase de control).
Características de compra
Cada clase de control puede declarar un conjunto de características de compra. Durante una compra de boleto, el sistema compara estas características con el contexto de la transacción actual para determinar qué clases aplican.
Tipos de coincidencia
Cada característica (excepto compra anticipada) puede configurarse con uno de tres tipos de coincidencia:
Uno de
El valor de la compra debe ser uno de los valores especificados en la clase. Por ejemplo, una clase configurada con Canal = Uno de [Websales, Agency Websales] solo coincidirá con compras realizadas a través de esos dos canales.
Cualquiera
La clase coincide independientemente del valor de compra para esta característica. Es en la práctica un comodín: la característica se declara pero no filtra nada.
Todos excepto
La clase coincide con cualquier valor de compra excepto los listados. Por ejemplo, Canal = Todos excepto [Backoffice] coincidirá con compras de cualquier canal que no sea Backoffice.
Características admitidas
Producto
El producto asociado al viaje. Obligatorio en clases raíz. Solo se admiten productos que usan precios por viaje (Journey Pricing) o precios de mercado (Market Pricing).
Marca
La marca bajo la cual opera el viaje.
Empresa operadora
La empresa que opera el viaje.
Grupo de itinerarios
El o los grupos de itinerarios asociados al bus o vehículo del viaje. Un viaje puede tener varios grupos de itinerarios; hay coincidencia si alguno de ellos cumple la condición.
Tarifa
El tipo de tarifa seleccionado por el comprador.
Clase de tarifa
La clase de tarifa (p. ej. económica, ejecutiva) seleccionada para la compra.
Clase de asiento
La clase de asiento (p. ej. estándar, premium) seleccionada para la compra.
Canal
El canal de ventas por el que se realiza la compra. Valores admitidos: Backoffice, Websales, Agency Backoffice, Agency Websales.
Compra anticipada
Cuántas horas antes de la salida se compra el boleto. Se configura como un rango con un número mínimo y máximo de horas. Una compra coincide si las horas restantes hasta la salida caen dentro del rango especificado. A diferencia de otras características, aquí se usa un rango numérico en lugar de un tipo de coincidencia por lista. Las clases hermanas que usan compra anticipada deben tener rangos que no se solapen.
Autorizaciones
Integración con sistemas de gestión de ingresos
Las clases de control están diseñadas para trabajar con un sistema externo de gestión de ingresos (RMS) que determina cuántos boletos pueden venderse en cada nivel de precios. La única integración RMS actualmente admitida es Appia.
Cómo funcionan las autorizaciones
El RMS Appia envía autorizaciones a Betterez mediante el endpoint POST /rms/appia/authorizations. Una autorización indica a Betterez cuántos boletos pueden venderse para una clase de control específica en un viaje específico.
Cada autorización especifica:
- itinerario y fecha: identifica el viaje concreto (manifiesto).
- Origen y destino: identifica el tramo o segmento dentro de ese viaje (un par O&D).
- Clase de control: identificada por el nombre/código de la clase.
- Cantidad autorizada: el número máximo de boletos que pueden venderse bajo esta clase para este par O&D.
Almacenamiento
Las autorizaciones se almacenan en el manifiesto —el registro por viaje y por fecha en Betterez. Cuando Appia envía nuevas autorizaciones para un manifiesto, el conjunto completo de autorizaciones de ese manifiesto se reemplaza con los nuevos datos.
Coincidencia
Appia identifica las clases de control por su nombre (denominado "código" de la clase en Appia). Betterez resuelve el nombre al registro de clase de control correspondiente al procesar las autorizaciones entrantes. Si un nombre de clase enviado por Appia no coincide con ninguna clase de control existente, la autorización se rechaza con un error.
Webhooks
Cuando las autorizaciones se actualizan correctamente, Betterez emite un evento webhook controlclasses.authorizations.updated.
Selección de clase de control para una compra
Durante una compra de boleto, Betterez determina qué clase de control aplica a cada segmento del viaje. Esta selección determina tanto el precio como la disponibilidad de los boletos solicitados.
Paso 1: Selección del nesting
Se selecciona un nesting de clases de control para cada segmento del viaje cuando al itinerario del segmento se le ha asignado una raíz de clase de control. Si el itinerario no tiene raíz asignada, no aplica la lógica de clases de control a ese segmento y se usa el precio estándar.
Paso 2: Búsqueda de la clase coincidente más profunda
Dentro del nesting seleccionado, el sistema recorre desde la raíz hacia abajo y en cada nivel elige el hijo cuyas características coinciden mejor con el contexto de compra actual (producto, canal, tarifa, clase de asiento, marca, empresa operadora, grupo de itinerarios y horas de compra anticipada).
Entre hermanos, el sistema prefiere la coincidencia más específica:
- Una clase que coincide con Uno de (coincidencia exacta de valor) se prefiere sobre una que coincide con Todos excepto.
- Una clase que coincide con Todos excepto se prefiere sobre una que coincide con Cualquiera (comodín).
El recorrido continúa hasta que no se encuentran más hijos coincidentes. El resultado es una ruta desde la raíz hasta la clase coincidente más profunda.
Paso 3: Evaluación de disponibilidad
Cuando el criterio de selección de hijos del nesting está configurado como Disponibilidad de autorizaciones de venta, el sistema evalúa la disponibilidad de cada clase a lo largo de la ruta.
La disponibilidad de una clase de control en un segmento O&D dado se calcula como:
Disponibilidad = mín(Capacidad del segmento, Ventas autorizadas - Reservas)
Donde:
- Capacidad del segmento es la capacidad física de asientos del bus para ese par O&D, teniendo en cuenta los asientos ya ocupados en tramos superpuestos.
- Ventas autorizadas es la cantidad autorizada por el RMS para la clase de control en ese par O&D, almacenada en el manifiesto.
- Reservas es el número de boletos ya vendidos bajo la misma raíz de clase de control para ese par O&D, incluidas las reservas pendientes.
Además, se aplica una restricción del padre: una clase hija nunca puede tener más disponibilidad que su padre. Si la disponibilidad calculada para un hijo supera la de su padre, la disponibilidad del hijo se limita al valor del padre.
Paso 4: Selección de clase
El sistema evalúa la ruta desde la clase más profunda hasta la raíz. Se selecciona la primera clase con disponibilidad suficiente para el número de boletos que se están comprando.
Si ninguna clase de la ruta tiene disponibilidad suficiente, se usa la clase raíz. La raíz tiene garantizada disponibilidad suficiente porque el RMS configura la autorización de la raíz para que coincida con la capacidad física real del bus.
Modo más específica
Cuando el criterio de selección de hijos del nesting está configurado como Más específica, no se evalúa la disponibilidad. Se selecciona directamente la clase coincidente más profunda del paso 2.
Precios
Precio base
La clase de control raíz no tiene precio propio. En su lugar, el precio base del boleto lo determinan los mecanismos de precios existentes de Betterez —precios por viaje (Journey Pricing) o **precios de mercado (Market Pricing)**— en una etapa anterior del flujo de compra. El mecanismo de precios concreto depende de la configuración del producto.
Modificadores de precio
Cada clase de control no raíz puede definir un modificador de precio que ajusta el precio base. Un modificador puede ser:
Porcentaje (%)
Suma o resta un porcentaje del precio base. Por ejemplo, +10 % aumenta el precio base un 10 %, mientras que -15 % lo reduce un 15 %.
Monto fijo ($)
Suma o resta un monto monetario fijo al precio base. Por ejemplo, +5,00 suma 5 $ al precio base, mientras que -3,50 resta 3,50 $.
Los modificadores pueden ser positivos (recargo) o negativos (descuento).
Cálculo del precio final
El precio final del boleto para una compra es:
Precio final = Precio base + Modificador
Donde:
- Precio base lo determinan los precios por viaje o los precios de mercado para el viaje.
- Modificador es el ajuste de precio de la clase de control seleccionada. Si la clase seleccionada es la raíz (que no tiene modificador), se usa el precio base sin cambios.
Los modificadores porcentuales están sujetos a la política de redondeo de la cuenta.
Asignación de nestings a itinerarios
Un nesting puede asignarse a un itinerario directamente en la página Editar itinerario.
Una ruta puede definir un nesting predeterminado que se asignará a todos los itinerarios de la ruta cuando se configure el predeterminado, y después se aplicará a los itinerarios recién creados en esa ruta.
Un nesting puede asignarse y desasignarse masivamente desde la página de edición del nesting, editando la asignación de muchos itinerarios a la vez.

Interfaz de usuario de clases de control
Vista de lista
La vista de lista muestra todas las clases de control de la cuenta, organizadas en dos pestañas:
- Nestings: muestra solo las clases de nestings (raíces de árbol).
- Todas: muestra todas las clases independientemente de su posición en el árbol.
Las clases pueden filtrarse por nombre y producto. Cada entrada muestra el nombre de la clase y la fecha de última revisión. Los iconos de acción permiten ir a la vista de árbol, ver autorizaciones (cuando la integración RMS está habilitada y al menos un nesting tiene el criterio de selección de hijos configurado como Disponibilidad de autorizaciones de venta) o eliminar la clase.
Una clase raíz no puede eliminarse si tiene hijos.

Crear y editar
El formulario de detalles permite crear o editar una clase de control. El formulario incluye:
- Nombre: un nombre único para la clase.
- Descripción: descripción opcional.
- Contexto del árbol: muestra la posición de la clase en la jerarquía —su raíz, padre, hermanos e hijos.
- Producto (solo raíz): el producto con el que está asociado este nesting. Solo están disponibles productos con precios por viaje (Journey Pricing) o precios de mercado (Market Pricing).
- Nombre del nesting (solo raíz): nombre para mostrar opcional para todo el nesting.
- Criterios de selección de hijos (solo raíz): determina cómo el sistema elige entre las clases coincidentes —ya sea Más específica o Disponibilidad de autorizaciones de venta.
- Características: las características de compra que determinan cuándo aplica esta clase. Cada característica se configura con un tipo de coincidencia y valores.
- Ajuste de precio (solo no raíz): el tipo de modificador (porcentaje o monto fijo) y el valor a aplicar sobre el precio base.
- Asignación de itinerarios (solo raíz): permite asignar uno o más itinerarios a la clase raíz, habilitando la lógica de clases de control para los viajes que operan en esos itinerarios. Los itinerarios pueden asignarse individualmente o en masa.


Ver autorizaciones
La vista de autorizaciones muestra las autorizaciones RMS actuales para un nesting de clases de control. El operador selecciona un itinerario y una fecha de manifiesto, y el sistema muestra una tabla de autorizaciones organizada por:
- Filas: pares origen-destino (tramos).
- Columnas: todas las clases de control del árbol.
Para cada celda (par O&D + clase de control), la tabla muestra:
- Autorización: el número de boletos autorizados por el RMS.
- Reservas: el número de boletos ya vendidos.
- Disponibilidad: los boletos restantes disponibles para la venta.
