Le tarif fournisseur est la donnée la plus vivante d'un ERP d'achat : elle change à chaque commande, elle diffère d'un conditionnement à l'autre, et elle n'est presque jamais à jour.
Seize modules communautaires s'attaquent à cet entretien — et à la question qui vient juste après : que faut-il commander, et combien ?
Résumé
Quatre modules tiennent le tarif à jour : mise à jour du prix en un clic depuis une ligne de commande, mise à jour automatique du prix et de la remise à la confirmation, désactivation de la création automatique de tarifs, et correction de la valorisation de marchandises déjà reçues quand le prix change avant la facturation.
Quatre parlent le langage du fournisseur : son code produit affiché et synchronisé sur les lignes, un contact d'achat distinct du fournisseur commercial, une quantité multiple obligatoire, et le fournisseur principal calculé automatiquement sur chaque produit.
Le reste aide à décider : le dernier prix d'achat affiché sur la fiche produit, la restriction des produits à ceux que le fournisseur fournit réellement, un bouton d'accès aux produits d'un fournisseur, la modification du prix d'achat depuis la réception, et un assistant de recommandation de réassort fondé sur l'historique des livraisons clients et des réceptions — avec filtrage par marque, unité secondaire et export tableur.
L'essentiel
- Le tarif mis à jour à la confirmation avec le prix et la remise réellement obtenus.
- La création automatique de tarifs désactivable — sinon chaque commande crée une ligne de tarif.
- Le code produit du fournisseur affiché sur les lignes de commande.
- Une quantité multiple obligatoire par tarif fournisseur : le carton de six est respecté.
- Le dernier achat affiché sur la fiche produit : fournisseur, date, prix unitaire.
- Les produits restreints à ceux que ce fournisseur fournit réellement.
- Un assistant de recommandation fondé sur les sorties clients et les entrées fournisseur.
- La valorisation corrigée quand le prix change après réception et avant facturation.
Ce que ces modules ajoutent à l'instance
| Famille | Modules | Nombre |
|---|---|---|
| Tenue du tarif | purchase_order_supplierinfo_update, product_supplierinfo_update_price, product_supplierinfo_disable_autocreation, purchase_stock_cost_update, stock_move_purchase_price_update | 5 |
| Langage du fournisseur | product_supplier_code_purchase, product_supplierinfo_purchase_contact, product_supplierinfo_qty_multiplier, product_main_seller | 4 |
| Aide à la décision | purchase_last_price_info, purchase_allowed_product, partner_supplierinfo_smartbutton | 3 |
| Recommandation de réassort | purchase_order_product_recommendation, purchase_order_product_recommendation_brand, purchase_order_product_recommendation_secondary_unit, purchase_order_product_recommendation_xlsx | 4 |
Aucun n'ajoute de menu : tous enrichissent la fiche produit, la fiche fournisseur, le tarif fournisseur ou la commande d'achat.
Tenir le tarif à jour sans y penser
Le problème est connu de tout acheteur : le tarif fournisseur enregistré dans l'ERP date de la dernière négociation, et le prix réellement payé date de la dernière commande. Les deux divergent silencieusement, et c'est le premier qui sert à valoriser les stocks et à calculer les marges prévisionnelles.
| Module | Quand | Ce qu'il met à jour |
|---|---|---|
purchase_order_supplierinfo_update | À la confirmation de la commande | Le prix et la remise réellement pratiqués |
product_supplierinfo_update_price | En un clic depuis une ligne de commande | Le prix du tarif correspondant |
product_supplierinfo_disable_autocreation | — | Désactive la création automatique de tarifs à la validation |
Le troisième est le complément indispensable des deux premiers. Par défaut, Odoo crée une ligne de tarif fournisseur à chaque validation de commande : au bout d'un an, une référence achetée chez trois fournisseurs porte trente lignes de tarif, et plus personne ne sait laquelle fait foi.
Deux autres modules corrigent la valorisation quand le prix bouge tard :
purchase_stock_cost_updatecorrige la valorisation de marchandises déjà reçues depuis le bon de commande, quand le prix d'une ligne change après la réception mais avant la facturation.stock_move_purchase_price_updatepermet de modifier le prix unitaire d'achat depuis la réception elle-même, sans revenir sur la commande.
Ces deux cas sont fréquents à l'import, où le prix définitif dépend du change ou de frais annexes connus tard. Le taux de change négocié est traité dans la facturation fournisseur.
Parler le langage du fournisseur
| Module | Ce qu'il apporte | Pourquoi |
|---|---|---|
product_supplier_code_purchase | Le code produit du fournisseur affiché et synchronisé sur les lignes | Commander avec sa référence, pas la vôtre |
product_supplierinfo_purchase_contact | Un contact d'achat distinct du fournisseur commercial sur le tarif | Le groupe qui négocie n'est pas l'entité qui livre |
product_supplierinfo_qty_multiplier | Une quantité multiple obligatoire par tarif | Le fournisseur ne vend que par carton de six |
product_main_seller | Le fournisseur principal calculé sur chaque produit | Savoir qui fournit quoi sans ouvrir chaque fiche |
Le premier évite la traduction manuelle que fait l'acheteur entre votre codification et celle du fournisseur — traduction qui produit, une fois sur vingt, une commande pour la mauvaise référence.
Le troisième est une vraie sécurité : commander 10 unités chez un fournisseur qui ne livre que par 6 produit soit un refus, soit une livraison de 12 facturée 12. Le module arrondit à la saisie, et prévient l'utilisateur.
Le deuxième traite une subtilité de groupe : le tarif est négocié avec une centrale, mais la commande part à une agence. Distinguer les deux rôles sur le tarif évite de dupliquer les fiches.
Décider quoi commander
Les trois aides immédiates
purchase_last_price_infoaffiche sur la fiche produit les informations du dernier achat confirmé : fournisseur, date, prix unitaire. La question « on l'a payé combien la dernière fois ? » trouve sa réponse sans requête.purchase_allowed_productrestreint les produits sélectionnables sur les commandes et les factures fournisseur à ceux que ce partenaire fournit réellement, d'après les tarifs enregistrés.partner_supplierinfo_smartbuttonajoute sur la fiche fournisseur un bouton ouvrant la liste des produits qu'il fournit.
Le deuxième évite une erreur banale et coûteuse : commander une référence chez un fournisseur qui ne la vend pas, parce que son nom est apparu dans une liste déroulante exhaustive.
L'assistant de recommandation
purchase_order_product_recommendationsuggère les quantités à commander pour le fournisseur sélectionné, en se basant sur l'historique des livraisons aux clients et des réceptions fournisseur. C'est un calcul de réassort, pas une suggestion commerciale.
Trois extensions l'adaptent : filtrage par marque quand le catalogue du fournisseur est large, saisie en unité secondaire d'achat, et export tableur de la liste recommandée — ce dernier étant précieux pour envoyer la proposition au fournisseur ou la faire valider.
C'est le symétrique de la recommandation côté ventes, avec une différence de fond : côté vente on rappelle ce que le client achète, côté achat on calcule ce qui s'est vendu.
Pour un réassort pilote par un vrai calcul des besoins, voir le MRP multi-niveaux : l'assistant est un outil d'acheteur, le MRP un moteur de planification.
Limites connues
- La mise à jour automatique du tarif écrase la négociation précédente : c'est voulu, et cela demande que les prix saisis soient justes.
- Sans désactivation de la création automatique, les tarifs fournisseurs se multiplient et deviennent illisibles.
- La quantité multiple suppose un tarif renseigné par fournisseur et par produit : sans donnée, pas de contrôle.
purchase_allowed_productbloque les achats ponctuels chez un fournisseur non référencé pour ce produit : prévoir la procédure de référencement.- La recommandation dépend de l'historique : sans ventes ni réceptions passées, elle ne propose rien.
- La correction de valorisation après réception touche à la comptabilité de stock : à tester sur une copie avant mise en production.
Identité technique
Les seize modules viennent du dépôt OCA purchase-workflow, branche 18.0, en licence AGPL-3 sauf product_supplierinfo_disable_autocreation et purchase_stock_cost_update (LGPL-3). Quatre dépendent de modules d'autres dépôts : marque produit (brand), notifications web (web), export tableur (reporting-engine) et une extension d'héritage de vues (server-ux).
Les familles voisines : les réceptions fournisseurs, la facturation fournisseur et achats : types, remises et blocages.
Questions fréquentes
Comment garder les tarifs fournisseurs à jour ?
purchase_order_supplierinfo_update met à jour le prix et la remise réellement pratiqués sur la fiche fournisseur du produit à la confirmation de la commande ; product_supplierinfo_update_price fait la même chose en un clic depuis une ligne. Ajoutez product_supplierinfo_disable_autocreation, sans quoi chaque validation crée une nouvelle ligne de tarif et la liste devient illisible.
Peut-on imposer de commander par multiples de six ?
Oui : product_supplierinfo_qty_multiplier définit une quantité multiple obligatoire au niveau du tarif fournisseur. À la saisie, la quantité est ajustée et l'utilisateur prévenu. Sans ce contrôle, commander 10 chez un fournisseur qui ne vend que par 6 produit un refus ou une livraison de 12 facturée 12.
Comment commander avec la référence du fournisseur ?
product_supplier_code_purchase affiche et synchronise le code produit du fournisseur sur les lignes de commande. L'acheteur cesse de traduire mentalement entre votre codification et celle du fournisseur — traduction qui produit, de temps en temps, une commande pour la mauvaise référence.
Sur quoi repose la recommandation d'achat ?
Sur l'historique : purchase_order_product_recommendation calcule les quantités à commander pour le fournisseur sélectionné à partir des livraisons aux clients et des réceptions fournisseur passées. Trois extensions ajoutent le filtrage par marque, la saisie en unité secondaire et l'export tableur de la proposition.
Que faire si le prix d'achat change après la réception ?
purchase_stock_cost_update corrige la valorisation des marchandises déjà reçues depuis le bon de commande, tant que la facture n'est pas enregistrée ; stock_move_purchase_price_update permet de modifier le prix directement depuis la réception. C'est le cas courant à l'import, où le prix définitif dépend du change ou de frais connus tardivement.
Se faire accompagner
Le tarif fournisseur est la donnée dont la qualité détermine tout le reste : la valorisation du stock, la marge prévisionnelle, la pertinence d'un réassort automatique. Et c'est celle que personne n'a le temps d'entretenir.
Nous privilégions donc l'entretien automatique — prix mis à jour à la confirmation, création de tarifs désactivée — plutôt que les campagnes de mise à jour manuelle, qui ne survivent jamais au deuxième trimestre. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
- Réceptions fournisseurs : statuts, conteneurs et recettes
- Recommandation de produits et assortiments
- Les achats et les fournisseurs dans Odoo
En résumé
Le tarif fournisseur cesse de dériver : il se met à jour au prix réellement obtenu, il parle la langue du fournisseur — son code, ses multiples, son contact — et il alimente un assistant de réassort fondé sur ce qui est sorti et ce qui est entré. Parlons de vos conditions d'achat.