Política de cancelación por actividad

Cada actividad tiene su propia política de cancelación guardada como meta del producto (cancelation_policy). Define cuánto reembolso le corresponde a una inscripción cancelada en función de cuántos días faltan para el inicio de la actividad.

Snapshot del default del sitio

Cuando se crea una actividad nueva, el sistema copia (snapshot) la política default del sitio al producto. Desde ese momento, las dos políticas son independientes: cambios al default no se propagan a actividades ya creadas.

Estructura de la política

{
  "max_days_applicable_for_activities_starting_from_now": 365,
  "tiers": [
    { "refund_coupon_porcentage": 100, "applicable_until_days_before_starting": 30 },
    { "refund_coupon_porcentage": 50,  "applicable_until_days_before_starting": 7 },
    { "refund_coupon_porcentage": 25,  "applicable_until_days_after_starting": 0 }
  ]
}

max_days_applicable_for_activities_starting_from_now

Define el rango de validez del cupón que se va a emitir si la cancelación corresponde a la emisión de un cupón.

Por ejemplo, si vale 365, los cupones emitidos hoy van a ser válidos para inscribirse a actividades que empiecen en los próximos 365 días.

tiers (escalones de reembolso)

Cada tier define un escalón con un porcentaje y un cutoff. El cutoff puede expresarse de dos formas:

  • applicable_until_days_before_starting: N — “vale hasta N días antes del inicio”.
  • applicable_until_days_after_starting: N — “vale hasta N días después del inicio” (poco común; típicamente 0 = “hasta el día mismo del inicio”).

Algoritmo de selección

Cuando se cancela una inscripción, el sistema calcula el cutoff de cada tier en función del fecha_inicio de la actividad. Filtra los tiers cuyo cutoff ya pasó. Entre los que sobreviven, elige el de cutoff más cercano a la fecha de cancelación (es decir, el último escalón válido al que se llegó).

Ejemplo concreto

Política:

tiers:
  - 100% hasta 30 días antes
  - 50%  hasta 15 días antes
  - 25%  hasta 0 días después (= día mismo del inicio)

Actividad que empieza el 30 de junio:

Fecha de cancelaciónTier elegidoReembolso (cupón)
1 de mayo100%100%
5 de junio (25 días antes)50%50%
20 de junio (10 días antes)25%25%
1 de julioninguno0% (rama paid_no_tier)

Editor en el admin

La política se edita en el detalle de la actividad, sección “Política de cancelación” (sólo visible en actividades, no en promociones).

El editor permite agregar / quitar tiers y validar configuraciones inconsistentes (cutoffs que no son monotónicos, porcentajes inválidos, etc.).

¿Y si la actividad legacy no tiene política?

Para actividades creadas antes de que existiera este sistema, el meta cancelation_policy no existe. En esos casos, el sistema usa una política de fallback:

{
  "max_days_applicable_for_activities_starting_from_now": 365,
  "tiers": [
    { "refund_coupon_porcentage": 100, "applicable_until_days_after_starting": 0 }
  ]
}

(100% de cupón hasta el día del inicio inclusive, cupón vigente 1 año.)

Ver también