FIFO spiegato
FIFO sta per First-In-First-Out - i crediti piu vecchi vengono consumati per primi. Questo principio e fondamentale per il sistema di pagamento flessibile.
Il principio base
Analogia: Il latte in frigo
Immagina il tuo frigorifero:
- Lunedi compri il latte (scade venerdi)
- Mercoledi compri nuovo latte (scade il mercoledi successivo)
- Quale bevi per primo? Quello di lunedi!
Cosi funziona FIFO con i crediti.
Con i crediti
Linea temporale:
─────────────────────────────────────────────────→
1 gen Acquisto: 10 crediti (validi fino al 1 apr) [█████]
15 gen Acquisto: 20 crediti (validi fino al 15 apr) [██████████]
Prenotazione il 20 gen (8 crediti):
→ Scalati dai crediti piu vecchi (acquisto del 1 gen)
→ 2 crediti del 1 gen rimanenti
→ 20 crediti del 15 gen non toccati
Perche FIFO?
Vantaggi
- Minimizza le scadenze: I crediti che scadono prima vengono usati per primi
- Trattamento equo: Gli acquisti piu vecchi vengono addebitati per primi
- Trasparenza: Logica chiara e tracciabile
- Automatico: Nessun intervento manuale necessario
L'alternativa sarebbe...
LIFO (Last-In-First-Out): I crediti piu recenti per primi
- Problema: I vecchi crediti scadono inutilizzati
- Ingiusto per i clienti
Manuale: Il cliente sceglie da solo
- Problema: Complicato, soggetto a errori
- Confonde i clienti
FIFO nella pratica
Esempio 1: Caso semplice
Saldo conto:
┌─────────────────────────────────────────────────┐
│ Acquisto 1 gen │ 10 crediti │ valido fino al 1 apr │
└─────────────────────────────────────────────────┘
Prenotazione: Lezione di yoga per 10 crediti
Risultato:
┌─────────────────────────────────────────────────┐
│ Acquisto 1 gen │ 0 crediti │ esauriti │
└─────────────────────────────────────────────────┘
Esempio 2: Pacchetti multipli
Saldo conto:
┌─────────────────────────────────────────────────┐
│ Acquisto 1 gen │ 5 crediti │ valido fino al 1 apr │
│ Acquisto 15 gen │ 20 crediti │ valido fino al 15 apr│
│ Acquisto 1 feb │ 10 crediti │ valido fino al 1 mag │
└─────────────────────────────────────────────────┘
Prenotazione: Workshop per 12 crediti
Logica FIFO:
1. 5 crediti dall'acquisto del 1 gen (ora 0 rimanenti)
2. 7 crediti dall'acquisto del 15 gen (ora 13 rimanenti)
3. Acquisto del 1 feb non toccato
Risultato:
┌─────────────────────────────────────────────────┐
│ Acquisto 1 gen │ 0 crediti │ esauriti │
│ Acquisto 15 gen │ 13 crediti │ valido fino al 15 apr│
│ Acquisto 1 feb │ 10 crediti │ valido fino al 1 mag │
└─────────────────────────────────────────────────┘
Esempio 3: Con cancellazione
Situazione di partenza dopo la prenotazione:
┌─────────────────────────────────────────────────┐
│ Acquisto 15 gen │ 13 crediti │ valido fino al 15 apr│
│ Acquisto 1 feb │ 10 crediti │ valido fino al 1 mag │
└─────────────────────────────────────────────────┘
Il cliente cancella la prenotazione da 12 crediti
Rimborso:
- 12 crediti vengono "restituiti"
- Nuova voce con le date di scadenza originali
Risultato:
┌─────────────────────────────────────────────────┐
│ Rimborso │ 5 crediti │ valido fino al 1 apr │
│ Rimborso │ 7 crediti │ valido fino al 15 apr│
│ Acquisto 15 gen │ 13 crediti │ valido fino al 15 apr│
│ Acquisto 1 feb │ 10 crediti │ valido fino al 1 mag │
└─────────────────────────────────────────────────┘
FIFO con le cancellazioni
Come funziona il rimborso?
In caso di cancellazione:
- I crediti vengono rimborsati
- La data di scadenza originale viene preservata
- I crediti vengono ordinati per data di scadenza
- FIFO si applica di nuovo alla prossima prenotazione
Importante
- I crediti cancellati non scadono piu tardi
- Si applica la data di scadenza originale
- Impedisce un "reset della scadenza" tramite cancellazione e ri-prenotazione
Visualizzazione FIFO per i clienti
Nel portafoglio
I clienti vedono i loro crediti raggruppati:
I miei crediti
─────────────────────────────────────
5 Crediti │ scade il 1 apr
20 Crediti │ scade il 15 apr
10 Crediti │ scade il 1 mag
─────────────────────────────────────
Totale: 35 crediti
Alla prenotazione
Prenotazione: Pilates per 8 crediti
Crediti da utilizzare:
- 5 crediti (scadenza 1 apr)
- 3 crediti (scadenza 15 apr)
Rimanenti dopo la prenotazione: 27 crediti
Casi speciali
Stesse date di scadenza
Quando piu pacchetti scadono lo stesso giorno:
- L'acquisto piu vecchio viene usato per primo
- Basato sulla data e ora di acquisto
Crediti illimitati
Crediti senza data di scadenza:
- Vengono usati per ultimi
- I crediti con data di scadenza hanno la priorita
Crediti legati all'istruttore
- Vengono usati solo per le lezioni corrispondenti
- FIFO si applica all'interno dei crediti istruttore
- I crediti regolari non sono interessati
FAQ su FIFO
Posso disattivare FIFO?
No, FIFO e integrato nel sistema. E il metodo piu equo e trasparente.
Posso "riservare" determinati crediti?
No, i crediti vengono sempre consumati secondo FIFO. La selezione manuale non e possibile.
Cosa succede se serve solo una parte di un pacchetto?
I crediti vengono combinati tra i pacchetti. Se il Pacchetto A ha solo 3 crediti e ne servono 5, 3 vengono presi da A e 2 dal pacchetto successivo.
I crediti scaduti vengono rimborsati in caso di cancellazione?
No. Se i crediti sarebbero gia scaduti al momento della cancellazione, non c'e rimborso.
Dettagli tecnici
Modello dati
Ogni voce credito ha:
amount: Numero di creditiremaining: Crediti rimanentipurchased_at: Data di acquistoexpires_at: Data di scadenzauser_id: Cliente associato
Query 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
Riepilogo
| Aspetto | Comportamento FIFO |
|---|---|
| Consumo | I crediti piu vecchi per primi |
| Ordinamento | Per data di scadenza, poi data di acquisto |
| Cancellazione | La data di scadenza originale viene preservata |
| Crediti illimitati | Usati per ultimi |
| Disattivazione | Non possibile (by design) |