Documentation11 min de lecture

Demandes d'achat : exprimer un besoin avant d'engager l'entreprise

Le module OCA `purchase_request` (dépôt `purchase-workflow`, version 18.0.2.5.1, licence LGPL-3) ajoute à Odoo 18 Community la **demande d'achat** : un document distinct de la commande, par lequel un collaborateur exprime un besoin **avant tout engagement fournisseur**, et que dix modules satellites typent, routent et font approuver. Les dix autres, du service demandeur au passage en appel d'offres.

Commandes d'achat et bons de réception examinés sur un bureau

Dans Odoo, le premier document d'achat est la demande de prix — autrement dit, on s'adresse déjà à un fournisseur. Entre le besoin exprimé par un atelier et la consultation du marché, il manque une étape : la demande d'achat.

C'est elle qui porte la question « avons-nous besoin de ça, et qui l'autorise ? » avant la question « à qui l'achète-t-on ? ».

Résumé

purchase_request crée un document autonome, saisi par n'importe quel collaborateur, listant des besoins en matériel ou en service. Une fois approuvée, la demande alimente les commandes d'achat — manuellement ou via les mécanismes d'approvisionnement — et garde le lien avec elles.

Autour, dix modules la rendent exploitable : un type porteur de sa propre séquence et de son type d'opération, le service RH du demandeur repris automatiquement, des sous-états pour suivre à l'intérieur d'un statut, des règles de blocage qui empêchent le passage en approbation tant qu'une anomalie subsiste, une validation par paliers configurable, une confirmation obligatoire au refus avec motif, et un pont vers les appels d'offres.

Deux modules enfin changent le vocabulaire d'achat lui-même : purchase_no_rfq masque la notion de demande de prix pour les organisations qui ne consultent pas, et purchase_rfq_number donne aux demandes de prix une numérotation distincte de celle des commandes confirmées.

L'essentiel

  • Un document avant la commande : le besoin s'exprime sans s'adresser à un fournisseur.
  • Des types de demande portant chacun sa séquence, son type d'opération et ses options.
  • Le service du demandeur repris automatiquement, pour filtrer et regrouper par département.
  • Des règles de blocage qui empêchent le passage en approbation tant qu'une anomalie subsiste.
  • Une validation par paliers : un ou plusieurs niveaux d'approbation, par utilisateur ou par groupe.
  • Un refus qui demande confirmation et, en option, un motif.
  • Un pont vers les appels d'offres pour les besoins qui justifient une consultation.
  • Deux options de vocabulaire : masquer la demande de prix, ou lui donner sa propre numérotation.

Ce que ces modules ajoutent à l'instance

ModuleRôleVersionLicence
purchase_requestLe document de demande d'achat18.0.2.5.1LGPL-3
purchase_request_typeTypes, séquences et type d'opération18.0.1.0.1AGPL-3
purchase_request_departmentService RH du demandeur18.0.1.0.0AGPL-3
purchase_request_substateSous-états dans un statut18.0.1.0.0AGPL-3
purchase_request_exceptionRègles de blocage18.0.1.1.0AGPL-3
purchase_request_tier_validationValidation par paliers18.0.1.1.1AGPL-3
purchase_request_cancel_confirmConfirmation et motif au refus18.0.1.0.0AGPL-3
purchase_request_to_requisitionPont vers les appels d'offres18.0.1.0.0AGPL-3
purchase_requisition_line_descriptionDescription d'achat sur les lignes d'accord18.0.1.0.0AGPL-3
purchase_no_rfqMasquer la notion de demande de prix18.0.1.0.2AGPL-3
purchase_rfq_numberNumérotation distincte des demandes de prix18.0.1.0.0AGPL-3

Le module principal installe une application complète : un menu racine « Demandes d'achat » avec ses demandes et ses lignes, en plus d'entrées dans le menu Achats. Les satellites ajoutent leurs écrans de configuration dans Achats ▸ Configuration.

Pourquoi une demande d'achat, et pas une commande

Demande d'achatDemande de prix / commande
Qui la saisitN'importe quel collaborateurLe service achats
Ce qu'elle exprimeUn besoinUne consultation ou un engagement
FournisseurPas nécessairement connuObligatoire
EngagementAucunRéel dès la confirmation
Ce qui la suitUne approbation, puis une ou plusieurs commandesUne réception et une facture

La première ligne est la raison d'être du module : donner à l'atelier, au bureau d'études ou à l'administratif un endroit où écrire ce dont ils ont besoin, sans leur donner le droit d'engager l'entreprise.

Sans ce document, le besoin circule par courriel ou oralement — et le service achats passe son temps à reconstituer qui a demandé quoi, pour quel projet, et avec quel accord. La demande d'achat remplace ce flux informel par une pièce traçable.

Une fois approuvée, elle alimente les commandes d'achat et garde le lien avec elles : on sait, depuis une commande, de quel besoin elle découle, et depuis un besoin, ce qui a été commandé.

Typer, router, suivre

Les types de demande

purchase_request_type ajoute un type configurable, et c'est le module qui structure réellement le dispositif. Chaque type porte :

  • sa propre séquence de numérotation — les demandes d'investissement et les demandes de consommables ne se mélangent plus ;
  • un type d'opération par défaut, donc un entrepôt et un circuit logistique de destination ;
  • des options propres au circuit d'approbation.

La séquence par type est ce qui rend les demandes lisibles dans une organisation à plusieurs sites ou plusieurs natures de dépenses.

Le service demandeur

purchase_request_department associe automatiquement la demande au service RH du demandeur. Le filtrage et le regroupement par département deviennent possibles — c'est la maille d'analyse que la direction financière demande en premier : qui dépense quoi.

Les sous-états

purchase_request_substate ajoute une barre de sous-états à l'intérieur du statut principal : brouillon, à approuver, approuvé. On suit ainsi une vérification technique, une attente de devis, un arbitrage budgétaire, sans créer de statut supplémentaire.

C'est la même mécanique que les sous-états côté ventes, appuyée sur le même socle générique.

Contrôler avant d'approuver

Deux modules complémentaires, qui traitent deux risques différents.

Les règles de blocage

purchase_request_exception attache aux demandes et à leurs lignes un mécanisme d'exceptions personnalisables : des règles qui empêchent le passage à l'état « à approuver » tant qu'une anomalie subsiste — ou qui permettent de forcer avec justification.

Exemples de règles qu'on écrit en pratique : pas de compte analytique renseigné, montant supérieur à un seuil sans devis joint, produit non référencé, service demandeur absent. Chacune évite un aller-retour entre les achats et le demandeur.

Le moteur sous-jacent et ses limites sont décrits dans base_exception.

La validation par paliers

purchase_request_tier_validation branche le moteur générique d'approbation : un ou plusieurs niveaux définis par utilisateur, par groupe ou par règle — typiquement par montant. La demande ne progresse pas tant que les valideurs n'ont pas statué.

La combinaison des deux est la bonne pratique : les règles de blocage traitent la qualité de la demande, la validation par paliers traite l'autorisation de dépenser. Confondre les deux produit des circuits d'approbation qui servent à corriger des saisies, ce qui use les valideurs.

Le refus

purchase_request_cancel_confirm impose une confirmation lors du refus d'une demande, et permet d'en saisir le motif. Un refus accidentel sur une liste de demandes est vite arrivé ; et un refus sans motif génère systématiquement un appel du demandeur.

Passer à l'achat : commandes, appels d'offres, vocabulaire

Vers un appel d'offres

purchase_request_to_requisition établit un pont vers les accords d'achat d'Odoo — appels d'offres et accords-cadres : un assistant permet de transformer des lignes de demande en consultation fournisseurs.

C'est le bon circuit pour les besoins significatifs : au lieu de commander au fournisseur habituel, on consulte. Et purchase_requisition_line_description complète en affichant la description d'achat du produit sur les lignes d'accord, et pas seulement son nom — ce qui compte quand la description porte des spécifications techniques.

Deux choix de vocabulaire

ModulePour quiEffet
purchase_no_rfqLes organisations qui ne consultent pas avant d'acheterMasque le menu des demandes de prix et renomme les états : tout est une commande
purchase_rfq_numberCelles qui consultent souventDonne aux demandes de prix une séquence distincte des commandes confirmées

Les deux sont exclusifs dans l'esprit, et chacun correspond à une maturité d'organisation. Le premier simplifie l'interface pour une PME qui commande à des fournisseurs référencés ; le second structure une fonction achats qui met en concurrence.

Le second est l'équivalent, côté achats, de la numérotation distincte des devis décrite dans devis et commandes.

Limites connues

  • La demande d'achat est une application de plus : elle n'a de sens que si les demandeurs y ont accès et l'utilisent — sinon le besoin continue de circuler par courriel.
  • Le service demandeur suppose le module RH installé et des fiches employés à jour.
  • Validation par paliers et règles de blocage se confondent facilement : l'une autorise la dépense, l'autre contrôle la saisie. Les mélanger use les valideurs.
  • purchase_no_rfq modifie le vocabulaire de l'application entière : décision d'organisation, pas réglage d'affichage.
  • Le pont vers les appels d'offres dépend du module standard purchase_requisition_stock, qui doit être installé.
  • Une numérotation distincte se décide au démarrage : la changer après coup laisse un historique hétérogène.

Identité technique

ModuleDépend de
purchase_requestpurchase_stock
purchase_request_typepurchase_request
purchase_request_departmenthr, purchase_request
purchase_request_substatebase_substate, purchase_request
purchase_request_exceptionbase_exception, purchase_request
purchase_request_tier_validationbase_tier_validation, purchase_request
purchase_request_to_requisitionpurchase_requisition_stock

Les onze modules viennent du dépôt OCA purchase-workflow, branche 18.0 — 107 modules au total. Les autres familles sont traitées dans achats : types, remises et blocages et dans les fiches voisines.

Questions fréquentes

Quelle différence entre une demande d'achat et une demande de prix ?

La demande d'achat exprime un besoin interne, saisie par n'importe quel collaborateur, sans fournisseur ni engagement. La demande de prix s'adresse déjà à un fournisseur. Entre les deux, il y a l'approbation : c'est précisément l'étape que le document ajoute, et qu'Odoo standard ne connaît pas.

Peut-on faire approuver une demande selon son montant ?

Oui, avec purchase_request_tier_validation, qui branche le moteur générique de validation par paliers : un ou plusieurs niveaux définis par utilisateur, par groupe ou par règle — le montant étant le critère le plus courant. La demande ne progresse pas tant que les valideurs n'ont pas statué.

Comment éviter des demandes incomplètes ?

Avec purchase_request_exception : des règles de blocage empêchent le passage à l'état « à approuver » tant qu'une anomalie subsiste — compte analytique manquant, devis absent au-delà d'un seuil, produit non référencé — avec la possibilité de forcer en justifiant. C'est du contrôle de saisie, à distinguer de l'autorisation de dépenser.

Peut-on analyser les demandes par service ?

Oui : purchase_request_department associe automatiquement chaque demande au service RH du demandeur, ce qui permet de filtrer et de regrouper par département. C'est la maille que la direction financière demande en premier. Le module suppose l'application RH installée et des fiches employés à jour.

Comment simplifier Odoo pour une PME qui ne consulte pas ses fournisseurs ?

purchase_no_rfq masque le menu des demandes de prix et renomme les états pour que tout document d'achat s'appelle une commande. C'est un choix d'organisation : il convient à une entreprise qui commande à des fournisseurs référencés, et pas à une fonction achats qui met en concurrence.

Se faire accompagner

La demande d'achat est le module qui révèle le plus vite si une organisation est prête : il suppose que les demandeurs saisissent eux-mêmes, et que quelqu'un approuve dans la journée. Déployé sans ces deux conditions, il devient un formulaire que le service achats remplit à la place des autres — c'est-à-dire du travail en plus.

Nous commençons donc par la matrice : qui demande, qui contrôle la saisie, qui autorise la dépense, et à partir de quel montant. Puis nous paramétrons les types, les règles de blocage et les paliers — dans cet ordre. Voir les prestations d'Atalios Consulting, notre méthode ou demander un rappel.

Pour aller plus loin

En résumé

Le document qui manque entre le besoin et l'engagement : saisi par le demandeur, typé, rattaché à son service, contrôlé par des règles de blocage, approuvé par paliers, puis transformé en commande ou en appel d'offres. Avec deux options de vocabulaire selon que l'entreprise consulte ses fournisseurs ou non. Parlons de votre circuit d'achat.

Documentation OCAAchatsValidation

Partager

Fiches connexes

Équipe au travail sur des ordinateurs portables autour d'une table
Le module OCA `account_invoice_en16931` (dépôt `fr-einvoicing`, version 18.0.1.0.0, licence AGPL-3) est le socle qui fabrique le fichier de facture électronique conforme à la norme européenne **EN 16931** : Factur-X (PDF/A-3 avec XML CII embarqué), XML UBL, XML CII ou PDF accompagné d'un UBL — et il ajoute des **contrôles bloquants à la validation** d'une facture client. Les quatre modules qui s'y greffent pour la France, et ce que le socle ne fait pas.
Lire la suite
Documentation OCA, Facturation électronique
Réunion d'approbation autour d'un document de travail
Relevé sur une instance Odoo 18 Community, le module OCA `base_tier_validation` (dépôt `server-ux`, version 18.0.3.5.1, licence AGPL-3) ajoute 1 modèle, 101 champs et 3 menus, mais ne s'active sur aucun document métier par lui-même : il lui faut un module d'implémentation. C'est le point qui surprend le plus — voici ce qu'il fait réellement, et comment le mettre en service.
Lire la suite
Documentation OCA, Odoo