Skip to main content

3.4- Détail des priorités dans ladéfinission des règles de commission


3.4.1- Gestion des dates


    • Si l'utilisateur a soumis une date de début via le formulaire, on l'utilise ; sinon, par défaut : le 1er jour du mois courant. 
    • Même logique pour la date de fin, mais par défaut : le dernier jour du mois courant (date('m')+1, 0 → jour "0" du mois suivant = dernier jour du mois en cours). 
    • L'heure est fixée à 12h00 (midi) pour éviter les problèmes de fuseaux horaires. 
   

3.4.2- Choix de la méthode de calcul


COMMISSION_METHOD (base de calcul)

Valeur Signification
ORDER Commission sur les commandes (dès la commande)
PAYMENT Commission sur les paiements reçus (au prorata)
FULLPAYMENT Commission uniquement une fois la facture entièrement payée


COMMISSION_BASE (assiette de commission)

Valeur Signification
TURNOVER Commission sur le chiffre d'affaires
MARGIN Commission sur la marge

 

 3.4.3- Boucle de calcul et logique de "rupture"


a) Option COMMISSION_RESTRICT_TO_CONTACT
Avant d'afficher une ligne, on vérifie si un autre contact de type "commissionné" existe sur la facture. Si oui → le commercial "générique" n'est pas commissionné sur cette facture (seul le contact dédié l'est).
b) La logique de rupture (saut à chaque sous total)
    • Rupture par agent : quand on change d'agent commercial, on affiche le sous-total du précédent, on cumule dans les totaux généraux, puis on réinitialise les compteurs et on mémorise les infos du nouvel agent. 
    • Rupture par client : idem quand un agent a plusieurs clients. 
    • Sinon : on mémorise simplement les infos (société, facture, paiement, bases de commission) sans cumul. 

Résultat par (agent, client, facture, ligne, date)
   ├─ 1  → 1ère itération : mémorise agent/client/facture + calcule taux
        ├─ 2  → même agent/client → cumul silencieux (ou ligne détail)
             ├─ 3  → changement de CLIENT  → rupture client : sous-total client affiché
                  ├─ 4  → cumul...
                       ├─ 5  → changement d'AGENT    → rupture agent : sous-total agent affiché
                            ├─ 6  → cumul...
                                 └─ Fin de boucle → affichage du DERNIER sous-total + ligne des TOTAUX GÉNÉRAUX


À chaque rupture, la commission est calculée : taux de commission (%) × base (CA ou marge).

3.4.4- Taux simple ou cumulé


    • Sans COMMISSION_CUMUL : la première règle correspondante donne le taux.
    • Avec COMMISSION_CUMUL : on continue de parcourir toutes les règles et on additionne les taux. Permet par exemple : 2% de base + 3% si catégorie produit premium + 1% si client fidèle = 6%

3.4.5- Priorités règle de commissionnement


Une règle est sélectionnée par 7 tests successifs :


Tableau des règles de commission :
   └── Niveau 1 : fk_user        → À QUI s'applique la règle (agent/commercial) ou -1 (tous)
        └── Niveau 2 : fk_contact_type → TYPE DE CONTACT concerné ou -1 (tous types)
                   └── Niveau 3 : fk_soc        → CLIENT (tiers) précis ou -1 (tous)
                            └── Niveau 4 : fk_prodcat      → CATÉGORIE de PRODUIT ou -1 (toutes)
                                     └── Niveau 5 : fk_custcat     → CATÉGORIE de CLIENT ou -1 (toutes)
                                              └── Niveau 6 : fk_product_type → 0 = PRODUIT, 1 = SERVICE, -1 = les deux
                                                       └── Niveau 7 : limite       → SEUIL (montant ou % de remise)
                                                                └── = valeur : le TAUX de commission (ex: 8 pour 8%)

Au sein de chaque règle, la priorité est accordée selon les critères : 


1. QUI est commissionné     : le contact commissionné  >  le commercial du tiers  >  tous (-1)
2. TYPOLOGIE               : type de contact précis   >  tous types (-1)
3. CLIENT                      : client précis            >  tous (-1)
4. CATÉGORIE PRODUIT       : catégorie précise        >  toutes (-1)
5. CATÉGORIE CLIENT        : catégorie précise        >  toutes (-1)
6. TYPE PRODUIT/SERVICE    : produit OU service       >  les deux (-1)
7. SEUIL                       : traité séparément (barème à l'intérieur d'une règle)

 

Exemple pour 5 cas: (du plus prioritaire au moins prioritaire)


cat. prod cat. client client type prod Interprétation
(A) ✔ précise — ✔ précis ✔ précis Très spécifique : catégorie produit + client + type
(B) — — ✔ précis ✔ précis Moins spécifique : pas de catégorie produit
(C) ✔ précise — ✔ précis — Pas de type produit
(D) — — ✔ précis — Pas de catégorie produit ni de type
(E) ✔ précise ✔ précise — ✔ précis On remet les catégories et type mais on enlève le client et on ajoute la catégorie client


Nb : si 2 règles arrivent à égalité c’est la plus anciennement créée qui s’applique.