Programme de Fidélité — Fidélisation Clients
Modules impliqués : Fidélité (Règles · Transactions · Échange · Adhésion · Programmes) · Factures · OmniSales · Clients
Qui l'utilise : Marketing · Commercial · Customer Success
Durée typique : Continu — les points s'accumulent à chaque paiement
Vue d'ensemble
Le module Fidélité implémente un système de fidélité complet : accumulation automatique de points lors du paiement des factures, trois types de bonus (nouveau compte, anniversaire, manuel), échange dans 4 contextes différents, et un système de niveaux avec avantages différenciés.
Condition requise : Le paramètre global
loyalty_settingdoit être à1dans Configuration → Marketing → Fidélité. Sans cela, aucun calcul de points n'a lieu.
Il n'y a pas d'expiration automatique des points. Les points diminuent uniquement via un échange explicite.
Diagramme de flux
[CONFIGURATION — admin, une fois]
│
├── Activation globale : loyalty_setting = 1
├── Règles de Fidélité : type gain + niveaux d'échange (point_weight)
├── Règles d'Adhésion (Niveaux) : Bronze / Argent / Or par tranche de points
├── Programmes d'Adhésion : remises par niveau
└── Cartes de Fidélité : modèle visuel (optionnel)
│
↓
[ACCUMULATION DE POINTS — automatique lors du paiement]
│
├── Déclencheur : after_payment_added → statut facture = PAYÉE (2)
├── Système recherche règles actives pour le client
│
├── rule_base = 'card_total' :
│ points = points_accordés × floor(total_facture / valeur_achat)
│ (ex. : 10 points par 100 RON dépensés)
│
├── rule_base = 'product_category' :
│ par ligne facture : si groupe produit correspond → points × quantité
│
└── rule_base = 'product' :
par ligne facture : si produit correspond → points × quantité
│
├── Insertion dans loy_transation : type='debit', reference='order_debit'
└── clients.loy_point += points gagnés
│
↓
[BONUS SPÉCIAUX]
│
├── Nouveau compte (hook after_client_added) → rule avec create_account_point max actif
├── Anniversaire (cron) → client avec champ 'Anniversaire' = aujourd'hui → une fois par an
└── Manuel (admin) : loyalty/transation_form → type='credit'
│
↓
[NIVEAU — calculé dynamiquement]
│ client_rank() → trouve loy_mbs_rule où loy_point ∈ [loyalty_point_from, loyalty_point_to]
│ Niveau le plus élevé correspondant attribué
│
↓
[ÉCHANGE — 4 contextes]
│
├── [A] Admin sur facture : champ échange dans le formulaire facture
├── [B] Client dans portail : page facture → échanger des points
├── [C] OmniSales/POS : champ échange dans le panier commande
└── [D] Bon/Programme d'Adhésion : code bon ou remise automatique par niveau
│
[CLIENT FIDÈLE ✓ · POINTS ACCUMULÉS ✓]
Modules impliqués
Fidélité & Adhésion · Factures · Avoirs · Commandes OmniSales · Clients