FIFO explicado
FIFO significa First-In-First-Out - los creditos mas antiguos se consumen primero. Este principio es fundamental para el sistema de pago flexible.
El principio basico
Analogia: La leche en la nevera
Imagina tu nevera:
- Compras leche el lunes (caduca el viernes)
- El miercoles compras leche nueva (caduca el miercoles siguiente)
- Cual bebes primero? La del lunes!
Asi funciona FIFO con los creditos.
Con creditos
Linea temporal:
─────────────────────────────────────────────────→
1 ene Compra: 10 creditos (valido hasta 1 abr) [█████]
15 ene Compra: 20 creditos (valido hasta 15 abr) [██████████]
Reserva el 20 ene (8 creditos):
→ Se descuentan de los creditos mas antiguos (compra del 1 ene)
→ 2 creditos del 1 ene restantes
→ 20 creditos del 15 ene intactos
Por que FIFO?
Ventajas
- Minimiza la caducidad: Los creditos que caducan pronto se usan primero
- Trato justo: Las compras mas antiguas se facturan primero
- Transparencia: Logica clara y rastreable
- Automatico: No requiere intervencion manual
La alternativa seria...
LIFO (Last-In-First-Out): Los creditos mas nuevos primero
- Problema: Los creditos antiguos caducan sin usar
- Injusto para los clientes
Manual: El cliente elige por si mismo
- Problema: Complicado, propenso a errores
- Confunde a los clientes
FIFO en la practica
Ejemplo 1: Caso simple
Saldo de la cuenta:
┌─────────────────────────────────────────────────┐
│ Compra 1 ene │ 10 creditos │ valido hasta 1 abr│
└─────────────────────────────────────────────────┘
Reserva: Clase de yoga por 10 creditos
Resultado:
┌─────────────────────────────────────────────────┐
│ Compra 1 ene │ 0 creditos │ agotados │
└─────────────────────────────────────────────────┘
Ejemplo 2: Varios paquetes
Saldo de la cuenta:
┌─────────────────────────────────────────────────┐
│ Compra 1 ene │ 5 creditos │ valido hasta 1 abr│
│ Compra 15 ene │ 20 creditos │ valido hasta 15 abr│
│ Compra 1 feb │ 10 creditos │ valido hasta 1 may│
└─────────────────────────────────────────────────┘
Reserva: Taller por 12 creditos
Logica FIFO:
1. 5 creditos de la compra del 1 ene (ahora 0 restantes)
2. 7 creditos de la compra del 15 ene (ahora 13 restantes)
3. Compra del 1 feb intacta
Resultado:
┌─────────────────────────────────────────────────┐
│ Compra 1 ene │ 0 creditos │ agotados │
│ Compra 15 ene │ 13 creditos │ valido hasta 15 abr│
│ Compra 1 feb │ 10 creditos │ valido hasta 1 may│
└─────────────────────────────────────────────────┘
Ejemplo 3: Con cancelacion
Posicion inicial despues de la reserva:
┌─────────────────────────────────────────────────┐
│ Compra 15 ene │ 13 creditos │ valido hasta 15 abr│
│ Compra 1 feb │ 10 creditos │ valido hasta 1 may│
└─────────────────────────────────────────────────┘
El cliente cancela la reserva de 12 creditos
Reembolso:
- 12 creditos se "devuelven"
- Nueva entrada con las fechas de caducidad originales
Resultado:
┌─────────────────────────────────────────────────┐
│ Reembolso │ 5 creditos │ valido hasta 1 abr│
│ Reembolso │ 7 creditos │ valido hasta 15 abr│
│ Compra 15 ene │ 13 creditos │ valido hasta 15 abr│
│ Compra 1 feb │ 10 creditos │ valido hasta 1 may│
└─────────────────────────────────────────────────┘
FIFO con cancelaciones
Como funciona el reembolso?
Al cancelar:
- Los creditos se reembolsan
- Se conserva la fecha de caducidad original
- Los creditos se ordenan por fecha de caducidad
- FIFO se aplica de nuevo en la proxima reserva
Importante
- Los creditos cancelados no caducan mas tarde
- Se aplica la fecha de caducidad original
- Previene un "reinicio de caducidad" mediante cancelar y reservar de nuevo
Visualizacion de FIFO para clientes
En la cartera
Los clientes ven sus creditos agrupados:
Mis creditos
─────────────────────────────────────
5 Creditos │ caduca 1 abr
20 Creditos │ caduca 15 abr
10 Creditos │ caduca 1 may
─────────────────────────────────────
Total: 35 creditos
Al reservar
Reserva: Pilates por 8 creditos
Creditos a usar:
- 5 creditos (caduca 1 abr)
- 3 creditos (caduca 15 abr)
Restante despues de la reserva: 27 creditos
Casos especiales
Mismas fechas de caducidad
Cuando varios paquetes caducan el mismo dia:
- Se usa primero la compra mas antigua
- Basado en la marca de tiempo de compra
Creditos ilimitados
Creditos sin fecha de caducidad:
- Se usan de ultimo
- Los creditos con fecha de caducidad tienen prioridad
Creditos vinculados a instructor
- Solo se usan para clases coincidentes
- FIFO se aplica dentro de los creditos de instructor
- Los creditos regulares no se ven afectados
FAQ sobre FIFO
Puedo desactivar FIFO?
No, FIFO esta integrado en el sistema. Es el metodo mas justo y transparente.
Puedo "reservar" ciertos creditos?
No, los creditos siempre se consumen segun FIFO. La seleccion manual no es posible.
Que pasa si solo se necesita parte de un paquete?
Los creditos se combinan entre paquetes. Si el paquete A solo tiene 3 creditos y necesitas 5, se toman 3 de A y 2 del siguiente paquete.
Se reembolsan los creditos caducados al cancelar?
No. Si los creditos ya habrian caducado en el momento de la cancelacion, no hay reembolso.
Detalles tecnicos
Modelo de datos
Cada entrada de credito tiene:
amount: Numero de creditosremaining: Creditos restantespurchased_at: Momento de la compraexpires_at: Fecha de caducidaduser_id: Cliente asociado
Consulta FIFO
SELECT * FROM credits
WHERE user_id = $userId
AND remaining > 0
AND (expires_at IS NULL OR expires_at > NOW())
ORDER BY expires_at ASC NULLS LAST, purchased_at ASC
Resumen
| Aspecto | Comportamiento FIFO |
|---|---|
| Consumo | Creditos mas antiguos primero |
| Ordenacion | Por fecha de caducidad, luego fecha de compra |
| Cancelacion | Se conserva la fecha de caducidad original |
| Creditos ilimitados | Se usan de ultimo |
| Desactivacion | No es posible (por diseno) |