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

  1. Minimiza la caducidad: Los creditos que caducan pronto se usan primero
  2. Trato justo: Las compras mas antiguas se facturan primero
  3. Transparencia: Logica clara y rastreable
  4. 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:

  1. Los creditos se reembolsan
  2. Se conserva la fecha de caducidad original
  3. Los creditos se ordenan por fecha de caducidad
  4. 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 creditos
  • remaining: Creditos restantes
  • purchased_at: Momento de la compra
  • expires_at: Fecha de caducidad
  • user_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

AspectoComportamiento FIFO
ConsumoCreditos mas antiguos primero
OrdenacionPor fecha de caducidad, luego fecha de compra
CancelacionSe conserva la fecha de caducidad original
Creditos ilimitadosSe usan de ultimo
DesactivacionNo es posible (por diseno)

Proximos pasos

Fragen oder Feedback?

Wir helfen dir gerne weiter. Kontaktiere unser Support-Team.