Documentation10 min de lecture

Approbation, péremption des devis et sécurité par équipe : le reste des ventes

Treize modules OCA complètent le dépôt `sale-workflow` pour Odoo 18 Community : `sale_tier_validation` (version 18.0.1.1.0) soumet la confirmation d'une commande à une **approbation à plusieurs niveaux**, et `sale_validity_auto_cancel` **annule automatiquement les devis périmés** depuis un nombre de jours configurable. Les onze autres, de la visibilité limitée à son équipe commerciale à la liste de souhaits d'un client.

Écran de configuration des accès et des permissions

Il reste, dans le plus gros dépôt du catalogue OCA, une poignée de modules qui ne forment pas une famille : une approbation, un ménage automatique, un cloisonnement par équipe, quelques liaisons techniques.

Ils ont pourtant un point commun : chacun répond à une question qu'une entreprise pose au bout de six mois d'utilisation, pas au démarrage.

Résumé

sale_tier_validation applique aux commandes de vente le moteur générique d'approbation à plusieurs niveaux : la confirmation reste bloquée tant que les valideurs désignés n'ont pas donné leur accord. sales_team_security crée un groupe intermédiaire « documents de mon équipe uniquement », qui limite ce qu'un commercial voit aux documents de son équipe.

sale_validity_auto_cancel annule automatiquement les devis périmés après un délai configurable — le ménage que personne ne fait et qui finit par rendre les listes inexploitables. sale_warn_option remplace les messages d'avertissement saisis à la main par des messages prédéfinis réutilisables sur les clients et les produits.

Le reste relie des mécaniques existantes : la disponibilité du stock dans l'assistant de recommandation, les transactions de paiement accessibles depuis la commande, le projet créé avant la confirmation d'une vente de services, une règle d'exception sur les produits réservés à certains clients, l'entrepôt remonté dans l'en-tête du formulaire, un état de livraison calculé réutilisable, une liste de souhaits client, un point d'accès HTTP pour le cache de prix, et une colle d'affichage des libellés produit.

L'essentiel

  • L'approbation à plusieurs niveaux sur les commandes, avec blocage de la confirmation.
  • Un groupe « mon équipe uniquement » pour cloisonner la visibilité commerciale.
  • Les devis périmés annulés automatiquement après un délai configurable.
  • Des messages d'avertissement prédéfinis, réutilisables au lieu d'être retapés.
  • La disponibilité affichée dans l'assistant de recommandation, avant d'ajouter le produit.
  • Le projet et les tâches créés avant la confirmation d'une vente de services.
  • Les transactions de paiement accessibles depuis la commande.
  • Un point d'accès HTTP pour servir les prix en cache à un site externe.

Ce que ces modules ajoutent à l'instance

ModuleRôleVersionLicence
sale_tier_validationApprobation à plusieurs niveaux des commandes18.0.1.1.0AGPL-3
sales_team_securityVisibilité limitée à son équipe18.0.1.0.0AGPL-3
sale_validity_auto_cancelAnnulation des devis périmés18.0.1.1.0LGPL-3
sale_warn_optionMessages d'avertissement prédéfinis18.0.1.0.2LGPL-3
sale_stock_product_recommendationDisponibilité dans l'assistant de recommandation18.0.1.0.0AGPL-3
sale_timesheet_project_manualProjet créé avant la confirmation18.0.1.0.0AGPL-3
sale_transaction_form_linkTransactions de paiement depuis la commande18.0.1.0.0AGPL-3
sale_exception_product_sale_manufactured_forException sur produits réservés à des clients18.0.1.1.0AGPL-3
sale_order_warehouse_headerEntrepôt dans l'en-tête, filtres et regroupement18.0.1.0.0AGPL-3
sale_delivery_stateÉtat de livraison calculé, brique réutilisable18.0.1.2.1AGPL-3
sale_wishlistListe de souhaits rattachée à un client18.0.1.0.0AGPL-3
pricelist_cache_restPoint d'accès HTTP pour les prix en cache18.0.1.0.0AGPL-3
web_widget_product_label_section_and_note_full_label_saleColle d'affichage des libellés produit18.0.1.0.0AGPL-3

Aucun n'ajoute de menu propre : ils enrichissent la commande, les groupes de sécurité, ou servent de liaison entre deux mécaniques.

Qui approuve, et qui voit quoi

L'approbation à plusieurs niveaux

sale_tier_validation applique aux commandes de vente le moteur générique d'approbation de l'OCA : des niveaux de validation définis par des règles — montant, client, type de commande — et une confirmation bloquée tant que les valideurs désignés n'ont pas statué.

Le moteur lui-même, ses définitions de niveaux et ses pièges sont décrits dans la fiche base_tier_validation. Le module de vente n'est que son application à la commande client.

À distinguer de sale_confirm_group, qui réserve le droit de confirmer à certains profils. L'approbation dit « quelqu'un d'autre doit donner son accord » ; le droit dit « seuls ceux-là peuvent cliquer ». Les deux se combinent, et ne traitent pas le même risque.

Le cloisonnement par équipe

sales_team_security ajoute un groupe de sécurité intermédiaire — « User: Team Documents Only » — qui restreint la visibilité des documents commerciaux à l'équipe de l'utilisateur.

Le relevé précise une limite importante : dans ce dépôt, le module couvre les contacts ; l'extension aux devis, commandes, pistes et opportunités passe par des modules complémentaires qui ne s'y trouvent pas. À vérifier avant d'annoncer un cloisonnement complet.

Le besoin, lui, est fréquent : plusieurs équipes commerciales sur des territoires ou des gammes distinctes, qui n'ont pas à voir les affaires les unes des autres.

Le ménage et les avertissements

Les devis périmés

sale_validity_auto_cancel annule automatiquement les devis dont la date de validité est dépassée depuis un nombre de jours configurable — brouillons comme devis envoyés, jamais confirmés.

C'est une tâche que personne ne fait : nettoyer les devis morts. Au bout de deux ans, la liste des devis en cours contient surtout des devis qui ne le sont plus, et plus personne ne la regarde — donc les vrais devis en attente passent inaperçus.

Le délai configurable est le bon réglage : un devis périmé depuis trois jours mérite une relance, un devis périmé depuis trois mois mérite une annulation.

Les messages d'avertissement

Odoo permet d'écrire un message d'avertissement sur un client ou un produit — il s'affiche à la saisie. sale_warn_option permet de choisir un message prédéfini dans une liste plutôt que de le retaper.

L'intérêt est la cohérence : « client en litige », « produit à commander par 6 », « vérifier l'encours » doivent dire la même chose partout. Des messages libres finissent par se contredire d'une fiche à l'autre.

Les liaisons qui ferment des angles morts

ModuleCe qu'il reliePourquoi c'est utile
sale_stock_product_recommendationRecommandation et stockLa disponibilité est visible avant d'ajouter le produit recommandé
sale_transaction_form_linkCommande et transactions de paiementVérifier un paiement en ligne sans quitter la commande
sale_exception_product_sale_manufactured_forRègles d'exception et produits réservésBloquer la vente d'un produit fabriqué pour un autre client
sale_timesheet_project_manualVente de services et projetCréer le projet et les tâches avant la confirmation

Le troisième mérite une explication. Certains produits sont fabriqués pour un client précis — marque blanche, pièce sur plan, série dédiée. Les vendre à un autre est une faute contractuelle, et c'est le genre d'erreur qu'un commercial commet de bonne foi en cherchant du stock disponible. Le module ajoute une règle d'exception qui bloque la commande.

Le quatrième répond à un besoin de société de services : en standard, le projet et ses tâches ne sont créés qu'à la confirmation de la commande. Or on prépare souvent le projet pendant la négociation. Le module ajoute un bouton pour le générer avant.

Restent quatre modules plus discrets :

  • sale_order_warehouse_header remonte le champ entrepôt dans l'en-tête du formulaire et ajoute filtre et regroupement par entrepôt dans la recherche — trois minutes d'installation, un confort quotidien pour une entreprise multi-dépôts.
  • sale_delivery_state calcule un état de livraison sur la commande à partir des quantités livrées : c'est une brique technique, utilisée par d'autres modules, notamment sa colle avec le stock.
  • sale_wishlist étend les ensembles de produits avec une typologie liste de souhaits rattachée à un client — une base pour proposer plus tard ce qu'il avait mis de côté.
  • pricelist_cache_rest expose un point d'accès HTTP en lecture pour récupérer les prix en cache d'un client, à destination d'un site e-commerce ou d'une application tierce. Il s'appuie sur l'authentification par clé d'API.

Ce dernier complète le cache de prix décrit dans remises, prix et tarifs : le cache calcule, le point d'accès sert.

Limites connues

  • sales_team_security ne couvre pas tout dans ce dépôt : l'extension aux devis, commandes et opportunités passe par des modules complémentaires absents d'ici.
  • L'annulation automatique des devis est irréversible : choisir le délai avec les commerciaux, et prévenir avant la première exécution.
  • L'approbation à plusieurs niveaux se combine mal avec une automatisation : un workflow automatique qui confirme des commandes court-circuite l'intérêt du dispositif.
  • Le point d'accès HTTP expose des prix : il demande une clé d'API et une réflexion sur ce qu'on publie.
  • sale_delivery_state est une brique technique : seul, il n'apporte rien de visible.
  • La liste de souhaits est une base, pas une fonctionnalité finie : elle attend un usage qu'on construit.

Identité technique

Les treize modules viennent du dépôt OCA sale-workflow, branche 18.0, en licence AGPL-3 sauf sale_validity_auto_cancel et sale_warn_option (LGPL-3). Cinq dépendent de modules d'autres dépôts : moteur d'approbation et options d'avertissement (server-ux), clé d'API et sérialisation (server-auth, rest-framework), produits réservés à un client (product-attribute).

Le dépôt sale-workflow est désormais entièrement couvert : 172 modules, répartis en dix fiches. La porte d'entrée reste les types de commande et les workflows.

Questions fréquentes

Quelle différence entre approbation et droit de confirmer ?

sale_tier_validation impose qu'un tiers donne son accord avant que la commande puisse être confirmée, selon des règles de montant, de client ou de type. sale_confirm_group réserve le droit de cliquer sur Confirmer à certains profils. Le premier traite le contrôle, le second l'habilitation ; ils se combinent.

Comment nettoyer les devis qui ne seront jamais signés ?

sale_validity_auto_cancel annule automatiquement les devis dont la date de validité est dépassée depuis un nombre de jours configurable — brouillons comme devis envoyés. Sans ce ménage, la liste des devis en cours finit par contenir surtout des devis morts, et les vrais passent inaperçus.

Peut-on limiter la visibilité d'un commercial à son équipe ?

sales_team_security ajoute un groupe intermédiaire « documents de mon équipe uniquement ». Attention : dans ce dépôt, il couvre les contacts ; l'extension aux devis, commandes et opportunités passe par des modules complémentaires qui n'y figurent pas. À vérifier avant d'annoncer un cloisonnement complet.

Peut-on créer le projet avant de confirmer une vente de services ?

Oui, avec sale_timesheet_project_manual : un bouton génère manuellement le projet et les tâches avant la confirmation. En standard, ils ne sont créés qu'à la confirmation — alors que la préparation du projet commence souvent pendant la négociation.

Comment éviter de vendre un produit réservé à un autre client ?

sale_exception_product_sale_manufactured_for ajoute une règle d'exception qui bloque la commande quand le produit est marqué comme fabriqué pour un autre client. C'est une erreur commise de bonne foi par un commercial qui cherche du stock disponible — et une faute contractuelle vis-à-vis du donneur d'ordre.

Se faire accompagner

Ces treize modules répondent à des questions de maturité : qui approuve au-delà d'un certain montant, qui voit quoi, et comment on empêche l'instance de se remplir de documents morts. Ce sont rarement des sujets de démarrage, et toujours des sujets de deuxième année.

Nous les traitons lors des revues d'instance, quand les usages sont stabilisés et que les irritants sont connus : c'est le moment où une règle d'approbation est acceptée, parce qu'elle répond à un incident que tout le monde a en tête. Voir les prestations d'Atalios Consulting, notre méthode ou demander un rappel.

Pour aller plus loin

En résumé

L'approbation à plusieurs niveaux, le cloisonnement par équipe, le ménage automatique des devis périmés et quelques liaisons qui ferment des angles morts — dont la vente interdite d'un produit fabriqué pour un autre client. Avec cette fiche, les 172 modules du dépôt des ventes sont couverts. Parlons de vos règles d'approbation.

Documentation OCAVentesSécurité

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