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

  1. Minimizza le scadenze: I crediti che scadono prima vengono usati per primi
  2. Trattamento equo: Gli acquisti piu vecchi vengono addebitati per primi
  3. Trasparenza: Logica chiara e tracciabile
  4. 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:

  1. I crediti vengono rimborsati
  2. La data di scadenza originale viene preservata
  3. I crediti vengono ordinati per data di scadenza
  4. 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 crediti
  • remaining: Crediti rimanenti
  • purchased_at: Data di acquisto
  • expires_at: Data di scadenza
  • user_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

AspettoComportamento FIFO
ConsumoI crediti piu vecchi per primi
OrdinamentoPer data di scadenza, poi data di acquisto
CancellazioneLa data di scadenza originale viene preservata
Crediti illimitatiUsati per ultimi
DisattivazioneNon possibile (by design)

Prossimi passi

Fragen oder Feedback?

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