Documentation Administrateur – Produits Standards + Sourcing Fournisseur + Pricing Automatique #
📍 Où trouver ce module ?
Menu principal > Catalogue
1. Présentation #
Cette fonctionnalité permet de gérer un catalogue de produits standards (génériques) utilisés dans les devis et commandes clients, reliés à des produits spécifiques (approvisionnables) eux-mêmes associés à des offres fournisseurs. Le prix de vente des produits standards est calculé automatiquement à partir des offres fournisseurs.
2. Installation et déploiement #
2.1 Installation automatique #
La fonctionnalité est installée automatiquement lors de l’exécution du setup Kafinea. Le SetupOrchestrator appelle :
installStandardProductFields()— création du bloc et des champs sur ProductsinstallEventHandlers()— enregistrement des handlers de validation et recalculinstallRelatedLists()— création des listes liées
Le module MdsVendorOffer est créé via le script scripts/setup_standard_products.php.
2.2 Vérification post-installation #
Après installation, vérifiez les éléments suivants :
| Élément | Comment vérifier |
|---|---|
| Champs Products | Fiche produit → Bloc « Standardisation » visible |
| Module MdsVendorOffer | Menu Catalogue → « Offres fournisseurs » accessible |
| Related lists Products | Fiche produit standard → onglet « Products » (spécifiques) |
| Related lists VendorOffers | Fiche produit spécifique → onglet « MdsVendorOffer » |
| Bouton recalcul | Fiche produit standard → bouton « Recalculer prix standard » |
3. Configuration des produits #
3.1 Créer un produit standard #
- Allez dans Catalogue → Produits → Nouveau
- Cochez la case « Produit standard » (
is_standard) - Configurez les paramètres de pricing :
- Mode de calcul du prix : choisissez parmi :
CHEAPEST_OFFER— utilise l’offre la moins chère (défaut)PREFERRED_OFFER— utilise l’offre marquée « préférée »AVERAGE_OFFER— fait la moyenne de toutes les offres
- Marge (%) : pourcentage de marge à appliquer sur le coût de référence
- Arrondi du prix :
NONE,0.01,0.05,0.10ou1
- Mode de calcul du prix : choisissez parmi :
- Enregistrez le produit
Note : Un produit standard ne peut pas avoir de parent standard. Les champs pricing ne sont visibles que pour les produits standards.
3.2 Créer un produit spécifique #
- Créez un nouveau produit (ou éditez un produit existant)
- Ne cochez PAS la case « Produit standard »
- Dans le champ « Produit standard parent », sélectionnez le produit standard correspondant
- Enregistrez
Validation : Le système vérifie que le parent sélectionné est bien un produit standard. Si ce n’est pas le cas, un message d’erreur s’affiche.
3.3 Hiérarchie des produits #
Produit Standard (ex: « Câble HDMI 2m »)
├─ Produit Spécifique 1 (ex: « Câble HDMI 2m - Fournisseur A, Ref ABC123 »)
│ ├─ Offre Fournisseur A — 5,50 € — Délai 3j — ★ Préférée
│ └─ Offre Fournisseur B — 4,80 € — Délai 7j
└─ Produit Spécifique 2 (ex: « Câble HDMI 2m - Fournisseur C, Ref XYZ789 »)
└─ Offre Fournisseur C — 6,00 € — Délai 5j
4. Gestion des offres fournisseurs #
4.1 Accéder au module #
- Menu : Catalogue → Offres fournisseurs
- Depuis un produit : Fiche produit spécifique → onglet « MdsVendorOffer »
- Depuis un fournisseur : Fiche fournisseur → onglet « MdsVendorOffer »
4.2 Créer une offre fournisseur #
| Champ | Description | Obligatoire |
|---|---|---|
| Produit | Produit spécifique concerné | Oui |
| Fournisseur | Fournisseur proposant l’offre | Oui |
| Réf. fournisseur | Code SKU du fournisseur | Non |
| Prix d’achat | Prix unitaire d’achat (doit être > 0) | Oui |
| Devise | Devise du prix d’achat | Non |
| Délai (jours) | Délai de livraison en jours | Non |
| Qté minimum | Quantité minimum de commande | Non |
| Qté par colis | Quantité par colis/conditionnement | Non |
| Valide du | Date début de validité (vide = pas de limite) | Non |
| Valide jusqu’au | Date fin de validité (vide = pas de limite) | Non |
| Offre préférée | Marquer comme offre préférée | Non |
4.3 Règles de validation #
- Prix d’achat : doit être strictement supérieur à 0
- Offre préférée : une seule offre peut être marquée « préférée » par produit
Note : Plusieurs offres peuvent exister pour le même produit, fournisseur et référence (par exemple avec des conditions ou des dates de validité différentes). Utilisez les champs « Valide du » et « Valide jusqu’au » pour gérer les périodes de validité.
4.4 Impact sur le pricing #
Toute création, modification ou suppression d’une offre fournisseur déclenche automatiquement le recalcul du prix du produit standard parent.
5. Pricing automatique #
5.1 Fonctionnement #
Le prix de vente d’un produit standard est calculé ainsi :
Prix de vente = Coût de référence × (1 + Marge% / 100)
Le coût de référence est déterminé en fonction du mode de calcul configuré :
| Mode | Méthode de calcul |
|---|---|
CHEAPEST_OFFER |
Prix d’achat le plus bas parmi toutes les offres valides |
PREFERRED_OFFER |
Prix de l’offre préférée (si aucune : fallback sur le moins cher) |
AVERAGE_OFFER |
Moyenne des prix d’achat de toutes les offres valides |
5.2 Critères de validité d’une offre #
Une offre est considérée valide si :
- Son prix d’achat est > 0
- Sa date « Valide du » est dans le passé ou non renseignée
- Sa date « Valide jusqu’au » est dans le futur ou non renseignée
- L’enregistrement n’est pas supprimé
La date de référence utilisée pour évaluer la validité est, par ordre de priorité :
- La date du jour (au moment du recalcul du prix standard)
Important : dans l’assistant « Générer commandes fournisseurs » (devis/commandes client), la validité des offres est évaluée à la date du document source (ex:
quotedatepour un devis), afin de sélectionner les offres applicables à la période concernée.
5.3 Statuts du calcul #
Après chaque recalcul, le champ « Statut du calcul » est mis à jour :
| Statut | Signification |
|---|---|
OK |
Calcul réussi, prix mis à jour |
NO_SPECIFICS |
Aucun produit spécifique rattaché → prix remis à 0 |
MISSING_OFFERS |
Aucune offre fournisseur valide → prix remis à 0 |
MISSING_PRICES |
Toutes les offres ont un prix à 0 → prix remis à 0 |
5.4 Déclenchement du recalcul #
Le recalcul se produit automatiquement dans les cas suivants :
- Création/modification/suppression d’une offre fournisseur sur un produit spécifique lié
- Changement du parent standard d’un produit spécifique (l’ancien ET le nouveau parent sont recalculés)
- Manuellement via le bouton « Recalculer prix standard » sur la fiche du produit standard
5.5 Champs mis à jour #
Lors du recalcul, les champs suivants du produit standard sont mis à jour :
unit_price— le prix de vente unitairestandard_cost_ref— le coût de référence calculéstandard_last_price_calc— la date/heure du calculstandard_price_calc_status— le statut du calcul
6. Personnalisation #
6.1 Modifier les valeurs des picklists #
Les picklists suivantes peuvent être personnalisées via Paramètres → Éditeur de listes déroulantes :
standard_pricing_mode— modes de calcul (attention : le code s’appuie sur les valeurs internes)standard_price_rounding— options d’arrondistandard_price_calc_status— statuts de calcul (lecture seule, ne pas modifier)
Attention : Ne modifiez pas les valeurs internes des picklists
standard_pricing_modeetstandard_price_calc_statuscar elles sont utilisées dans la logique de calcul. Vous pouvez uniquement modifier leurs labels de traduction.
6.2 Traductions #
Les traductions sont gérées dans :
| Fichier | Contenu |
|---|---|
languages_override/fr_fr/Products.php |
Labels champs Products FR |
languages_override/en_us/Products.php |
Labels champs Products EN |
languages/fr_fr/MdsVendorOffer.php |
Labels module VendorOffer FR |
languages/en_us/MdsVendorOffer.php |
Labels module VendorOffer EN |
languages_override/fr_fr/Vtiger.php |
Labels assistant PO FR |
languages_override/en_us/Vtiger.php |
Labels assistant PO EN |
7. Droits et permissions #
7.1 Module MdsVendorOffer #
Le module MdsVendorOffer utilise le système de permissions standard Vtiger. Les droits sont gérés via :
- Paramètres → Profils : configurer l’accès au module par profil
- Paramètres → Rôles : affecter les profils aux rôles
7.2 Boutons d’action #
| Bouton | Condition de visibilité |
|---|---|
| Recalculer prix standard | Le produit est standard (is_standard=1) + permission DetailView |
| Générer commandes fournisseurs | Permission CreateView sur PurchaseOrder |
8. Dépannage #
8.1 Le prix ne se recalcule pas #
- Vérifiez que le produit est bien marqué comme standard (
is_standardcoché) - Vérifiez qu’il existe au moins un produit spécifique rattaché (avec
standard_parent_idrenseigné) - Vérifiez qu’il existe au moins une offre fournisseur valide (prix > 0, dates valides)
- Consultez le champ « Statut du calcul » pour identifier la cause
8.2 L’offre fournisseur ne peut pas être enregistrée #
- « Le prix d’achat doit être supérieur à 0 » : renseignez un prix > 0
- « Une seule offre préférée est autorisée par produit » : décochez l’autre offre préférée d’abord
8.3 Le bouton « Recalculer » n’apparaît pas #
- Vérifiez que la case « Produit standard » est cochée sur le produit
- Rechargez la page après avoir modifié le champ
is_standard
8.4 Le bouton « Générer commandes fournisseurs » n’apparaît pas #
- Vérifiez que votre profil a la permission CreateView sur le module PurchaseOrder
- Le bouton est visible sur les fiches Devis et Commandes clients uniquement
9. Tableau de bord Sourcing #
9.1 Activation #
La fonctionnalité est contrôlée par la feature toggle FEATURE_SOURCING_DASHBOARD.
Pour l’activer :
- Allez dans Paramètres → Fonctionnalités Kafinea (Settings_MdsFeatures_Index_View)
- Activez FEATURE_SOURCING_DASHBOARD
- Exécutez le setup (
SetupOrchestrator) pour enregistrer le widget D3.js dans le Detail View
Une fois activée, la fonctionnalité ajoute :
- Un bouton « Tableau de bord Sourcing » dans la barre d’actions de la liste des produits
- Un widget « Arbre Sourcing » dans le bloc Summary du Detail View des produits standards
9.2 Prérequis #
- Le module MdsVendorOffer doit être installé et configuré
- Des produits standards (
is_standard = 1) doivent exister avec des produits spécifiques et des offres fournisseurs - Pour l’analyse IA : le connecteur AI gateway doit être configuré (clé API + URL)
9.3 Anomalies surveillées #
Le dashboard détecte automatiquement 11 types d’anomalies (voir doc technique §11.4). Les plus critiques :
- Offres orphelines : offres fournisseurs liées à des produits qui ne participent pas au calcul automatique des prix. Le bandeau d’avertissement guide l’utilisateur vers la correction.
- Fournisseur unique : risque supply chain signalé en orange
- Offres expirant bientôt : dans les 30 prochains jours
9.4 Personnalisation #
- Le seuil d’expiration prochaine est fixé à 30 jours (constante
EXPIRING_SOON_DAYSdansSourcingHealth.php) - Le seuil de hausse de prix significative est fixé à 15% (constante
PRICE_INCREASE_THRESHOLD) - Les traductions sont dans
languages/fr_fr/Products.phpetlanguages/en_us/Products.php(labels préfixésLBL_SOURCING_)