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_iniciode 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ón | Tier elegido | Reembolso (cupón) |
|---|---|---|
| 1 de mayo | 100% | 100% |
| 5 de junio (25 días antes) | 50% | 50% |
| 20 de junio (10 días antes) | 25% | 25% |
| 1 de julio | ninguno | 0% (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.)