Reunión negocio · contabilidad · finanzas

Qué datos tenemos y cómo sirven al negocio

Un recorrido por el modelo de datos de ventas, ingresos, impuestos y devoluciones — desde Betterez hasta los tableros de Andesmar en Google Cloud.

Junio 2026 Plataforma GCP · capa BI bi_rebuild Fuente: Betterez (ticketing)
1

Resumen ejecutivo

Lo esencial en dos minutos

En una frase: tenemos un repositorio central en Google Cloud con el detalle de cada venta, boleto, ítem adicional, devolución y cancelación que Betterez registra — organizado para reportes de negocio, no solo para operación del día a día.
~1,2 M
Boletos históricos
en la plataforma
~906 K
Transacciones de venta
registradas
Diario
Actualización del tablero
(2×/día; lookback prod ~2 días vía etl_control)
4
Monedas soportadas
ARS · CLP · BOB · USD

✅ Qué sí tenemos hoy

  • Ingresos por pasaje, agencia, canal y mes
  • IVA embebido en el boleto (ticket_taxes)
  • Impuesto RG3819 (internacional) como ítem separado
  • Seguros de viaje y productos menores <3 años
  • Cancelaciones, devoluciones y penalidades retenidas
  • Ventas brutas, netas y montos reembolsados por transacción
  • Alcance geográfico: nacional, internacional, línea provincial

⚠️ Qué aún no está en el tablero BI

  • Desglose por medio de pago (efectivo vs tarjeta) — existe en base operativa, pendiente de modelar en BI
  • Integración contable / facturación AFIP
  • Costos operativos, combustible, nómina
  • Conciliación bancaria automática

Estos temas pueden abordarse en fases posteriores según prioridad del área económico-financiera.

2

De dónde vienen los datos

El camino desde la venta hasta el reporte

Cada vez que se vende un pasaje en una agencia, web o terminal Betterez, el sistema emite un evento que llega a nuestra plataforma en Google Cloud. Allí se guarda la información completa (copia fiel del original) y, una vez al día, se reorganiza en tablas listas para consulta gerencial.

Paso 1
Betterez
Sistema de venta de pasajes. Registra ventas, boletos, pagos y devoluciones.
Paso 2
Ingesta GCP
Webhooks en tiempo casi real. Copia íntegra en almacenamiento seguro + base operativa.
Paso 3
Capa BI
Tablas analíticas reorganizadas para reportes: montos, estados, dimensiones.
Paso 4
Tableros MSTR
MicroStrategy consume la capa BI para dashboards de Andesmar.
Principio clave — “raw first”: antes de calcular cualquier número, guardamos el payload original de Betterez sin modificar. Si hay una discrepancia, siempre podemos volver al dato fuente y auditar.

¿Por qué no usamos solo el reporte web de Betterez?

La web de Betterez muestra el estado en este momento de cada boleto. Nuestro modelo analítico responde preguntas distintas: “¿cuánto vendió la agencia X en marzo?”, “¿cuánto IVA hubo en pasajes internacionales?”, “¿cuántas cancelaciones parciales retuvieron penalidad?”. Para eso necesitamos historial consolidado, reglas de negocio acordadas y la posibilidad de cruzar ventas con manifiestos, rutas y agencias.

3

Preguntas de negocio que podemos responder

Mapeo directo: pregunta → dato disponible

Pregunta de negocio / finanzas Métrica Dónde está
¿Cuántos pasajes vendimos este mes? Cantidad de boletos pagados fact_ticket — filtro is_paid = true
¿Cuánto facturamos en pasajes? Suma de importes de boletos Sum(ticket_amount) en fact_ticket
¿Cuánto IVA hay en los pasajes? Impuesto embebido en el boleto Sum(ticket_taxes) — distinto del RG3819
¿Cuánto vendimos en seguros de viaje? Ítems “VIAJE PROTEGIDO” fact_sold_itemis_insurance = true
¿Cuánto en impuesto internacional RG3819? Ítem adicional cross-border fact_sold_item — categoría tax_cross_border
¿Cuánto devolvimos / cancelamos? Montos de refund y penalidades refund_amount, cancel_penalty_amount en fact_ticket
¿Ventas brutas vs netas por mes? Bruto, cancelaciones, neto fact_salegross_sale, net_sale, refounds_amount
¿Cómo rinde cada agencia? Revenue por agencia y canal dim_agency + fact_ticket
¿Cuánto vendimos en rutas internacionales? Pasajes con alcance internacional fact_ticket.has_internacional = true
¿Cuántos menores de 3 años viajaron? Producto “BOLETO SEGURO” fact_sold_itemis_minor_boleto_seguro
¿Cuántos pasajes con tarifa niño? Boletos con tarifa reducida fact_ticket.is_child_fare = true ≠ menor <3
4

El modelo en tres capas

Analogía: del recibo crudo al balance resumido

1

Capa operativa (OLTP) — “el recibo original”

Copia fiel de lo que Betterez envía: ventas, boletos, pagos, devoluciones, manifiestos. Sirve para auditoría técnica y reconciliación. No está pensada para reportes gerenciales directos.

Schema public
2

Capa analítica (BI) — “el libro mayor preparado”

Tablas reorganizadas con reglas de negocio aplicadas: estados curados, montos validados, dimensiones (agencia, canal, fecha, ruta). Es lo que consumen los tableros MicroStrategy.

Schema bi_rebuild
3

Tableros (MicroStrategy) — “la vista ejecutiva”

Dashboards con filtros, gráficos y exportaciones. Los números provienen de la capa BI; las reglas de filtro (pagado, moneda, etc.) están documentadas y acordadas.

Consumo negocio
Importante para contabilidad: los montos del tablero provienen de Betterez (precio de venta al pasajero), no de asientos contables propios de Andesmar. Para cruce con ERP o facturación AFIP hay que definir reglas de mapeo explícitas — no es automático hoy.
5

Las piezas del modelo financiero

Tres tablas principales + dimensiones de contexto

Piense en una venta de pasaje como una “transacción” que puede incluir varias líneas. El modelo separa cada concepto en su propia tabla para evitar doble conteo.

🧾 Una venta Betterez (transacción padre)
Tabla: fact_ticket
El pasaje / boleto
Monto: ticket_amount + IVA: ticket_taxes
Tabla: fact_sold_item
Seguro “VIAJE PROTEGIDO”
Monto: item_amount
Tabla: fact_sold_item
Impuesto RG3819
Monto: item_amount (ítem aparte)
Tabla: fact_sold_item
Boleto seguro menor <3
Monto: item_amount
Tabla BI ¿Qué representa 1 fila? Campos clave para finanzas Uso típico
fact_ticket 1 boleto / pasaje ticket_amount, ticket_taxes, currency,
refund_amount, cancel_penalty_amount,
is_paid, sale_date
Revenue por pasaje, IVA, cancelaciones, análisis por ruta
fact_sale 1 transacción de venta gross_sale, net_sale,
cancellation_amount, refounds_amount,
total_amount, num_tickets
Ventas brutas/netas a nivel transacción; cuidado con filas PI-/R-
fact_sold_item 1 producto adicional (PI-) item_amount, product_name,
is_insurance, is_minor_boleto_seguro,
product_category
Seguros, menores <3, impuesto RG3819
dim_agency 1 agencia de venta agency_label, agency_code, agency_country Ranking por agencia, filtros geográficos
dim_date + dim_mes_anio 1 día / 1 mes sale_date en hora Argentina Cortes mensuales, trimestrales, YoY
dim_channel 1 canal de venta channel, channel_group (físico / online) Mix canal físico vs digital
Regla anti doble conteo: no sumar fact_sale.total_amount junto con fact_sold_item.item_amount sin filtros — los ítems PI- ya están vinculados a la venta padre. Para revenue de pasajes usar fact_ticket; para ítems adicionales usar fact_sold_item; para venta transaccional usar v_fact_sale_parent_only.
6

Montos e impuestos

Dos impuestos distintos — no mezclarlos

IVA del pasaje

Impuesto incluido en el precio del boleto. Betterez lo expone como componente del ticket.

Columna BI
fact_ticket.ticket_taxes

Fuente validada desde Betterez (display_total_taxes). Es el IVA “embebido” — no aparece como línea separada en la factura al pasajero.

Impuesto RG3819 (internacional)

Tasa adicional para pasajes cross-border. Se factura como producto aparte.

Columna BI
fact_sold_item.item_amount
filtro: product_category = 'tax_cross_border'

Producto Betterez: “IMPUESTO NACIONAL ARGENTINO - RG3819”. Es un ítem PI- independiente del pasaje.

Ventas brutas, netas y devoluciones (fact_sale)

Campo Significado de negocio Cómo se calcula (simplificado)
gross_sale Venta bruta de la transacción Total positivo de la venta
cancellation_amount Monto asociado a cancelaciones Según status de la transacción
refounds_amount Monto reembolsado Cuando status = refunded
net_sale Venta neta (bruto − devoluciones) gross_sale − refounds_amount
Moneda: los montos no se convierten automáticamente entre ARS, CLP, BOB y USD. Para sumar importes coherentes hay que filtrar por una moneda (WHERE currency = 'ARS'). Mezclar monedas sin conversión produce totales incorrectos.

Fecha de venta — zona horaria Argentina

Todas las fechas de corte mensual (sale_date) están en hora Argentina (America/Argentina/Buenos_Aires). Esto alinea los reportes con el calendario operativo de Andesmar, no con UTC ni con la hora del servidor.

7

Estados del boleto y revenue neto

Por qué “pagado” no es una sola definición

Betterez a veces deja un boleto como “paid” en pantalla aunque ya hubo una cancelación con penalidad retenida. Nuestro modelo lee los eventos de devolución (refund_details) y calcula estados curados para que los números del tablero sean consistentes.
Concepto Columna BI ¿Cuándo usarla? Ejemplo
Pasaje neto (tablero oficial) is_paid = true KPI ejecutivo, revenue de pasajes, manifiesto Excluye cancelaciones y devoluciones totales
Alineado a Betterez web is_paid_including_partial_cancel Cruce con reporte web por agencia Incluye cancelación parcial con penalidad retenida
Cancelación parcial is_partial_cancel Auditoría de penalidades retenidas Pasajero canceló pero Andesmar retuvo parte del importe
Monto devuelto refund_amount Análisis de devoluciones Suma de lo reembolsado al pasajero
Penalidad retenida cancel_penalty_amount Ingreso por penalización ticket_amount − refund_amount en cancel parcial
Estado curado effective_ticket_status Reportes por hoja: paid / cancelled / changed / refunded Prioriza eventos de devolución sobre status crudo

Volúmenes de referencia (jun 2026)

~1,1 M
Boletos pagados netos
effective_status = paid
~36 K
Cancelados
~26 K
Cambiados (reemisión)
~3 K
Cancelaciones parciales
(penalidad retenida)
8

Cortes de análisis disponibles

Dimensiones para segmentar ingresos y volúmenes

Dimensión Valores ejemplo Pregunta que habilita
Tiempo Día, mes, trimestre, año ¿Cómo evolucionan las ventas mes a mes?
Agencia Nombre, código, país ¿Qué agencias venden más? ¿Cuál tiene más cancelaciones?
Canal Físico (agencia) vs online (web/app) ¿Qué peso tiene la venta digital?
Moneda ARS, CLP, BOB, USD ¿Cuánto vendimos en pesos vs pesos chilenos?
Alcance de ruta Nacional · Internacional · Línea provincial ¿Cuánto revenue es cross-border?
Itinerario / servicio Nombre del servicio, km del recorrido ¿Qué líneas generan más ingreso por km?
Tarifa Adulto, niño, cortesía ¿Cuántos pasajes con tarifa reducida?
Producto / familia Regular, charter, encomiendas, etc. ¿Cuánto es pasaje regular vs servicios especiales?

Ejemplo de lectura mensual consolidada

Un reporte mensual típico para finanzas puede incluir, en una sola vista:

  • Cantidad y monto de pasajes pagados (neto)
  • IVA embebido en pasajes
  • Recaudación de seguros “VIAJE PROTEGIDO”
  • Ítems de impuesto RG3819
  • Productos menores <3 años
  • Devoluciones y transacciones R-

Todo filtrable por agencia, canal, moneda y mes — con las reglas de estado acordadas.

9

Cobertura y actualización

Qué tan completos y frescos están los datos

Cobertura histórica

  • Datos desde la migración a Betterez en GCP (2025 en adelante como referencia principal)
  • ~1,2 millones de boletos consolidados
  • Backfill de webhooks ene–jun 2026 completado
  • Reconciliación vs sistema Legacy: conteos alineados (<0,3% diferencia en meses cerrados)

Frecuencia de actualización

  • Ingesta operativa: casi en tiempo real (webhooks Betterez → GCP)
  • Tablero BI: proceso diario automatizado (Cloud Run Job)
  • Ventana de reproceso: valor en bi_rebuild.etl_control.lookback_interval (prod jun-2026: 2 días; default del script SQL: 14 días si no hay fila)
  • Red de seguridad: jobs diarios detectan transacciones faltantes y las reinyectan
Posicionamiento vs Legacy SAP: la plataforma GCP refleja mejor el ciclo de vida real de los boletos (cancelaciones post-venta, devoluciones parciales, moneda explícita). Para reporting operativo y gerencial post-migración, bi_rebuild es la fuente recomendada — no el sistema Legacy histórico.
10

Límites actuales y conversación para la reunión

Qué podemos profundizar juntos

Disponible hoy

  • Revenue por pasaje, agencia, canal, mes y moneda
  • IVA pasaje + impuesto RG3819 separados
  • Seguros, menores, tarifas niño
  • Cancelaciones, devoluciones, penalidades
  • Ventas brutas / netas por transacción
  • Alcance geográfico (nacional / internacional)
  • Cruce con manifiestos (operación del viaje)

Pendiente / a definir con ustedes

  • Medios de pago (efectivo, tarjeta, MercadoPago) — dato existe, falta tablero
  • Mapeo a plan de cuentas contable / ERP
  • Conciliación con facturación electrónica AFIP
  • Comisiones de agencia como métrica formal
  • Tipo de cambio oficial para consolidación multi-moneda
  • Reportes regulatorios específicos (si aplican)

Preguntas útiles para orientar la reunión

¿Qué reportes mensuales producen hoy manualmente? Nos ayuda a priorizar qué automatizar primero
¿Cuál es la definición de “venta” para contabilidad? ¿Fecha de emisión, fecha de viaje, o fecha de cobro?
¿Necesitan desglose por medio de pago? Podemos modelarlo desde la base operativa (payments)
¿Cómo consolidan monedas extranjeras? Hoy el tablero filtra por moneda; conversión es decisión de negocio
¿Qué diferencia vs Legacy les importa cerrar? Tenemos auditorías documentadas para explicar gaps históricos

Glosario rápido

Términos que pueden aparecer en la conversación

Betterez
Proveedor de software de venta de pasajes. Sistema fuente de ventas, boletos y devoluciones.
BI / bi_rebuild
Capa analítica en Google Cloud. Tablas preparadas para reportes de negocio.
OLTP / public
Base operativa con copia fiel de Betterez. Para auditoría técnica.
Grano (grain)
Qué representa una fila: 1 boleto, 1 transacción, o 1 ítem adicional.
PI- (sold item)
Transacción de ítem adicional: seguro, impuesto RG3819, boleto seguro menor.
R- (refund)
Transacción de devolución vinculada a una venta original.
sale_date
Fecha de venta en hora Argentina. Eje temporal estándar del tablero.
travel_date
Fecha del viaje (salida del bus). Distinta de la fecha de venta.
is_paid
Filtro oficial: boleto vendido neto, sin cancelación ni devolución.
ETL
Proceso diario que transforma datos operativos en tablas analíticas.
MicroStrategy (MSTR)
Herramienta de tableros que consume la capa BI.
Legacy SAP
Sistema histórico pre-GCP. Referencia para migración, no para KPIs actuales.