Le FIFO expliqué

FIFO signifie First-In-First-Out (premier entré, premier sorti) - les crédits les plus anciens sont consommés en premier. Ce principe est fondamental pour le système de paiement flexible.

Le principe de base

Analogie : le lait dans le réfrigérateur

Imagine ton réfrigérateur :

  • Tu achètes du lait le lundi (valable jusqu'à vendredi)
  • Le mercredi, tu achètes du nouveau lait (valable jusqu'à mercredi prochain)
  • Lequel bois-tu en premier ? Celui du lundi !

C'est comme ça que fonctionne le FIFO avec les crédits.

Avec les crédits

Chronologie :
─────────────────────────────────────────────────→

01.01. Achat : 10 crédits (valable jusqu'au 01.04.)  [█████]
15.01. Achat : 20 crédits (valable jusqu'au 15.04.)  [██████████]

Réservation le 20.01. (8 crédits) :
→ Déduction depuis les crédits les plus anciens (achat du 01.01.)
→ 2 crédits du 01.01. restants
→ 20 crédits du 15.01. non touchés

Pourquoi le FIFO ?

Avantages

  1. Minimise les expirations : les crédits qui expirent bientôt sont utilisés en premier
  2. Traitement équitable : les achats plus anciens sont débités en premier
  3. Transparence : une logique claire et compréhensible
  4. Automatique : aucune intervention manuelle nécessaire

L'alternative serait...

LIFO (Last-In-First-Out) : les crédits les plus récents en premier

  • Problème : les anciens crédits expirent inutilisés
  • Injuste pour les clients

Manuel : le client choisit lui-même

  • Problème : compliqué, source d'erreurs
  • Déroute les clients

Le FIFO en pratique

Exemple 1 : cas simple

Solde du compte :
┌─────────────────────────────────────────────────┐
│ Achat 01.01. │ 10 crédits │ valable jusqu'au 01.04. │
└─────────────────────────────────────────────────┘

Réservation : Cours de yoga pour 10 crédits

Résultat :
┌─────────────────────────────────────────────────┐
│ Achat 01.01. │ 0 crédit  │ consommé            │
└─────────────────────────────────────────────────┘

Exemple 2 : plusieurs forfaits

Solde du compte :
┌─────────────────────────────────────────────────┐
│ Achat 01.01. │ 5 crédits  │ valable jusqu'au 01.04. │
│ Achat 15.01. │ 20 crédits │ valable jusqu'au 15.04. │
│ Achat 01.02. │ 10 crédits │ valable jusqu'au 01.05. │
└─────────────────────────────────────────────────┘

Réservation : Atelier pour 12 crédits

Logique FIFO :
1. 5 crédits de l'achat 01.01. (0 restant)
2. 7 crédits de l'achat 15.01. (13 restants)
3. Achat 01.02. non touché

Résultat :
┌─────────────────────────────────────────────────┐
│ Achat 01.01. │ 0 crédit   │ consommé            │
│ Achat 15.01. │ 13 crédits │ valable jusqu'au 15.04. │
│ Achat 01.02. │ 10 crédits │ valable jusqu'au 01.05. │
└─────────────────────────────────────────────────┘

Exemple 3 : avec annulation

Situation de départ après réservation :
┌─────────────────────────────────────────────────┐
│ Achat 15.01. │ 13 crédits │ valable jusqu'au 15.04. │
│ Achat 01.02. │ 10 crédits │ valable jusqu'au 01.05. │
└─────────────────────────────────────────────────┘

Le client annule la réservation de 12 crédits

Remboursement :
- 12 crédits sont "rendus"
- Nouvel enregistrement avec les dates d'expiration d'origine

Résultat :
┌─────────────────────────────────────────────────┐
│ Remb.        │ 5 crédits  │ valable jusqu'au 01.04. │
│ Remb.        │ 7 crédits  │ valable jusqu'au 15.04. │
│ Achat 15.01. │ 13 crédits │ valable jusqu'au 15.04. │
│ Achat 01.02. │ 10 crédits │ valable jusqu'au 01.05. │
└─────────────────────────────────────────────────┘

FIFO lors des annulations

Comment fonctionne le remboursement ?

En cas d'annulation :

  1. Les crédits sont rembookés
  2. La date d'expiration d'origine est conservée
  3. Les crédits sont triés selon la date d'expiration
  4. Le FIFO s'applique à nouveau lors de la prochaine réservation

Important

  • Les crédits annulés n'expirent pas plus tard
  • La date d'expiration d'origine est valable
  • Empêche la "réinitialisation de l'expiration" via annulation + nouvelle réservation

Affichage FIFO pour les clients

Dans le portefeuille

Les clients voient leurs crédits regroupés :

Mes crédits
─────────────────────────────────────
5 crédits     │ expire le 01.04.
20 crédits    │ expire le 15.04.
10 crédits    │ expire le 01.05.
─────────────────────────────────────
Total : 35 crédits

Lors d'une réservation

Réservation : Pilates pour 8 crédits

Crédits utilisés :
- 5 crédits (expirant le 01.04.)
- 3 crédits (expirant le 15.04.)

Solde après réservation : 27 crédits

Cas particuliers

Mêmes dates d'expiration

Si plusieurs forfaits expirent le même jour :

  • L'achat le plus ancien est utilisé en premier
  • Basé sur l'horodatage d'achat

Crédits illimités

Les crédits sans date d'expiration :

  • Sont utilisés en dernier
  • Les crédits qui expirent ont la priorité

Crédits liés à un coach

  • Utilisés uniquement pour les cours correspondants
  • Le FIFO s'applique au sein des crédits coach
  • Les crédits classiques restent non touchés

FAQ sur le FIFO

Puis-je désactiver le FIFO ?

Non, le FIFO est ancré dans le système. C'est la méthode la plus juste et la plus transparente.

Puis-je "réserver" certains crédits ?

Non, les crédits sont toujours consommés selon le FIFO. Une sélection manuelle n'est pas possible.

Que se passe-t-il si une seule partie d'un forfait suffit ?

Les crédits sont combinés entre forfaits. Si le forfait A n'a que 3 crédits et qu'il t'en faut 5, 3 sont pris du forfait A et 2 du forfait suivant.

Les crédits expirés sont-ils remboursés lors d'une annulation ?

Non. Si les crédits avaient déjà expiré au moment de l'annulation, il n'y a pas de remboursement.


Détails techniques

Modèle de données

Chaque entrée de crédit possède :

  • amount : nombre de crédits
  • remaining : crédits restants
  • purchased_at : date d'achat
  • expires_at : date d'expiration
  • user_id : client associé

Requête 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

Résumé

AspectComportement FIFO
ConsommationCrédits les plus anciens en premier
TriPar date d'expiration, puis date d'achat
AnnulationLa date d'expiration d'origine est conservée
Crédits illimitésUtilisés en dernier
DésactivationImpossible (by design)

Prochaines étapes

Fragen oder Feedback?

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