Documentation11 min de lecture

Vendre du stock : disponibilité, blocages de livraison et retours clients

Dix-huit modules OCA du dépôt `sale-workflow` relient la vente au stock dans Odoo 18 Community : `sale_manual_delivery` (version 18.0.1.1.0) **découple la confirmation de commande de la création des livraisons** — plus de réservation automatique, c'est un écran dédié qui décide quoi livrer et quand. Les dix-sept autres, du blocage motivé d'une livraison à la demande de retour client.

Entrepôt organisé en zones avec emplacements identifiés

Dès qu'une entreprise vend du stock, la commande cesse d'être un document commercial : elle réserve de la marchandise, déclenche une préparation, engage une date. Odoo lie les deux automatiquement, et c'est souvent trop automatique.

Dix-huit modules communautaires reprennent la main sur ce lien : ce qui part, quand, depuis quel entrepôt, vers quelle adresse — et ce qui revient.

Résumé

sale_manual_delivery est le plus structurant : activé sur une commande ou par défaut sur une équipe commerciale, il fait que la confirmation ne crée plus ni réservation ni bon de livraison. Un écran dédié, Inventaire ▸ Opérations ▸ Lignes de commande à livrer, permet alors de décider quelles lignes partent. sale_stock_picking_blocking retient au contraire les livraisons d'une commande confirmée avec un motif paramétrable — contrôle crédit, litige, attente de paiement — et un module voisin empêche la validation d'un bon depuis la commande.

Trois modules enrichissent la bulle de disponibilité affichée sur la ligne : stock de tous les entrepôts et non du seul entrepôt de la ligne, prochaine date de péremption des lots qui serviront, et alerte jaune quand la quantité vendue dépasse le stock réellement libre aujourd'hui. sale_block_no_stock va plus loin : il bloque la confirmation et ouvre un assistant qui propose des corrections.

Le reste couvre l'adresse de livraison par ligne (avec éclatement des livraisons), l'entrepôt par défaut du client, la référence client propagée jusqu'aux colis, les notes de livraison — interne et client — pré-remplies depuis la fiche client, la demande de retour créée depuis une commande livrée, et l'interdiction d'annuler une commande dont une livraison est déjà validée.

L'essentiel

  • Confirmer sans livrer : la création des livraisons devient une décision, prise dans un écran dédié.
  • Bloquer les livraisons avec motif, sans annuler la commande ni toucher aux lignes.
  • Une adresse de livraison par ligne, avec éclatement automatique des bons de livraison.
  • Un entrepôt par défaut sur la fiche client, proposé à la place de l'entrepôt global de la société.
  • La référence client propagée jusqu'aux mouvements, aux transferts et aux colis.
  • Trois enrichissements de la bulle de disponibilité : multi-entrepôts, péremption, alerte de survente.
  • La demande de retour créée depuis la commande livrée, restreinte aux commandes concernées.
  • L'annulation interdite quand une livraison est déjà validée — la cohérence commercial/logistique, enfin tenue.

Ce que ces modules ajoutent à l'instance

ModuleRôleVersion
sale_manual_deliveryLivraisons créées à la demande, pas à la confirmation18.0.1.1.0
sale_stock_picking_blockingBlocage motivé de la création des livraisons18.0.1.0.2
sale_stock_picking_validation_blockingEmpêcher la validation d'un bon depuis la commande18.0.1.0.0
sale_stock_cancel_restrictionInterdire l'annulation si une livraison est faite18.0.1.0.0
sale_block_no_stockBlocage de confirmation + assistant de correction18.0.1.0.0
sale_stock_delivery_addressAdresse de livraison par ligne18.0.1.1.1
sale_stock_partner_warehouseEntrepôt par défaut du client18.0.1.1.0
sale_stock_line_customer_refRéférence client jusqu'aux colis18.0.1.0.0
sale_stock_picking_noteNote interne et commentaire client de livraison18.0.1.1.0
sale_stock_return_requestDemande de retour depuis la commande18.0.1.0.2
sale_stock_last_dateDate de la dernière livraison, par ligne18.0.1.0.0
sale_stock_qty_at_date_widget_multi_warehouseDisponibilité tous entrepôts18.0.1.0.0
sale_stock_expiry_date_on_qty_at_date_widgetDate de péremption dans la bulle18.0.1.0.0
sale_stock_reservation_issue_on_qty_at_date_widgetAlerte jaune de survente18.0.1.0.2
sale_stock_delivery_stateColle : état de livraison avec sale_stock18.0.1.0.0
sale_stock_line_sequenceColle : numéro de ligne jusqu'au transfert18.0.1.0.0
sale_stock_secondary_unitColle : unité secondaire jusqu'aux mouvements18.0.1.0.2
sale_restricted_qtyRestriction de quantité (peu documenté)18.0.2.0.1

Trois menus seulement : les lignes à livrer (Inventaire ▸ Opérations), les motifs de blocage et les demandes de retour (Ventes). Trois modules sont des colles : ils n'ajoutent rien de visible et font fonctionner ensemble deux mécaniques qui s'ignoraient.

Reprendre la main sur le déclenchement des livraisons

Par défaut, confirmer une commande crée immédiatement la réservation et le bon de livraison. Pour un négoce qui confirme des commandes à trois mois, c'est du stock réservé pour rien et des bons qui encombrent l'entrepôt.

La livraison manuelle

  1. Activer le mode sur une commande, ou par défaut sur une équipe commerciale.
  2. La confirmation ne génère plus ni réservation de stock ni bon de livraison.
  3. Ouvrir Inventaire ▸ Opérations ▸ Lignes de commande à livrer : toutes les lignes en attente y figurent.
  4. Sélectionner ce qui doit partir et créer les livraisons correspondantes.

Le déclencheur de la livraison passe du commercial au logisticien. C'est un changement d'organisation autant que de paramétrage : il faut que quelqu'un ouvre cet écran chaque jour, sinon rien ne part.

Les blocages

ModuleCe qu'il empêcheCas d'usage
sale_stock_picking_blockingLa création des livraisons, avec motif paramétrableContrôle crédit, litige, attente de paiement
sale_stock_picking_validation_blockingLa validation d'un bon depuis la commandeDernier contrôle avant que la marchandise parte
sale_stock_cancel_restrictionL'annulation d'une commande déjà livréeCohérence entre état commercial et état logistique

Le troisième corrige un défaut qui coûte cher en inventaire : une commande annulée alors que la marchandise est partie laisse un stock faux et une facture introuvable. Odoo l'autorise ; ce module ne l'autorise plus.

Savoir ce qu'on peut promettre

La bulle de disponibilité affichée à côté de la quantité sur une ligne est l'outil le plus regardé d'un vendeur. Trois modules la rendent fiable.

  • Multi-entrepôts : la bulle tient compte du stock de tous les entrepôts de la société, et non du seul entrepôt de la ligne. Le vendeur voit qu'il reste de la marchandise ailleurs, au lieu de refuser une commande.
  • Péremption : la bulle affiche la prochaine date de péremption des lots qui serviraient à livrer la ligne. Indispensable en agroalimentaire, en cosmétique et en pharmacie — un client qui reçoit un lot à trois jours de la date limite le renvoie.
  • Alerte de survente : l'icône passe en jaune quand la quantité vendue sur un devis ou une commande en brouillon dépasse la quantité réellement libre aujourd'hui. L'avertissement arrive avant la promesse, pas après.

sale_block_no_stock va au bout de la logique : il bloque la confirmation d'une commande dont une ligne dépasse un indicateur de stock choisi en configuration — et, plutôt qu'un refus sec, ouvre un assistant qui propose des corrections.

Un blocage qui propose une solution est accepté par les équipes ; un blocage sec est contourné. C'est la même philosophie que les règles d'exception, qui laissent la porte d'une levée explicite.

Dernier module du groupe, sale_stock_last_date affiche sur chaque ligne la date de la dernière livraison réellement effectuée — la réponse immédiate à « vous nous avez livré quand, déjà ? ».

Livrer où il faut, avec les bonnes informations

L'adresse, par ligne

sale_stock_delivery_address permet une adresse de livraison différente par ligne, avec éclatement automatique des livraisons quand plusieurs adresses coexistent sur une commande. Il permet aussi d'associer un emplacement de stock à une adresse.

Le cas est celui d'un client multi-sites qui commande en central et fait livrer sur ses agences. Sans ce module, il faut créer autant de commandes que d'adresses — et le client reçoit autant de factures.

sale_stock_partner_warehouse complète par l'autre bout : un entrepôt par défaut sur la fiche du client ou de l'adresse de livraison, proposé sur les nouvelles commandes à la place de l'entrepôt global. Pour une entreprise à plusieurs dépôts régionaux, c'est l'erreur de saisie la plus fréquente qui disparaît.

Les informations qui voyagent

ModuleCe qui est transmisJusqu'où
sale_stock_line_customer_refLa référence du clientMouvements, lignes de détail, transferts et colis
sale_stock_picking_noteUne note interne et un commentaire clientLe bon de livraison — le commentaire est imprimé
sale_stock_line_sequenceLe numéro de ligne de la commandeLes lignes du transfert

Le premier est précieux en sous-traitance industrielle : la référence du donneur d'ordre doit figurer sur le colis, sinon la réception chez lui échoue.

Le deuxième évite la ressaisie : les deux notes peuvent être pré-remplies depuis la fiche du client — « livraison uniquement le matin », « sonner à l'interphone 3 » — au lieu d'être retapées à chaque commande.

Ce qui revient

sale_stock_return_request relie le mécanisme générique de demande de retour aux commandes : on crée une demande de retour client depuis une commande livrée, en la restreignant à une ou plusieurs commandes précises. Le menu dédié se trouve dans Ventes ▸ Commandes ▸ Demande de retour.

C'est la brique qui manque à la plupart des installations : sans elle, un retour se traite par un transfert créé à la main, sans lien avec la vente d'origine — donc sans analyse possible du taux de retour.

Limites connues

  • La livraison manuelle déplace la responsabilité : si personne n'ouvre l'écran des lignes à livrer, rien ne part. C'est une décision d'organisation.
  • L'adresse de livraison par ligne dépend du groupe d'approvisionnement par ligne : comportement d'approvisionnement modifié, pas simple affichage.
  • Trois modules de colle (sale_stock_delivery_state, _line_sequence, _secondary_unit) n'ont de sens qu'avec leurs deux modules parents installés.
  • La bulle multi-entrepôts peut faire promettre du stock distant : la marchandise existe, le transfert entre dépôts prend des jours.
  • sale_restricted_qty est peu documenté dans le relevé : son apport est à vérifier sur le dépôt.
  • Les blocages doivent avoir un responsable de levée : un blocage que personne ne peut lever paralyse la logistique.

Identité technique

Les dix-huit modules viennent du dépôt OCA sale-workflow, branche 18.0, en licence AGPL-3 sauf deux enrichissements de la bulle de disponibilité et sale_block_no_stock (LGPL-3). Tous dépendent de sale_stock : ils n'ont aucun sens sur une activité de service pur.

Les familles voisines : les dates et reliquats côté commande, les préparations par lots côté entrepôt, et le stock négatif et les zones côté organisation.

Questions fréquentes

Peut-on confirmer une commande sans créer la livraison ?

Oui, avec sale_manual_delivery : activé sur la commande ou par défaut sur une équipe commerciale, il supprime la réservation et la création automatique du bon à la confirmation. Les lignes en attente s'affichent dans Inventaire ▸ Opérations ▸ Lignes de commande à livrer, où l'on décide de ce qui part. Revers : quelqu'un doit ouvrir cet écran chaque jour.

Comment retenir une livraison sans annuler la commande ?

sale_stock_picking_blocking bloque la création des livraisons avec un motif choisi dans une liste paramétrable — contrôle crédit, litige, attente de paiement. Un module voisin, sale_stock_picking_validation_blocking, empêche la validation d'un bon depuis la commande, pour un dernier contrôle avant le départ de la marchandise.

Peut-on livrer une commande à plusieurs adresses ?

Oui : sale_stock_delivery_address permet une adresse de livraison par ligne, avec éclatement automatique des bons de livraison. C'est le cas du client multi-sites qui commande en central ; sans ce module, il faut autant de commandes — et autant de factures — que d'adresses.

Comment éviter de vendre du stock qu'on n'a pas ?

Trois niveaux. La bulle de disponibilité enrichie passe en jaune quand la quantité vendue dépasse le stock libre du jour. sale_block_no_stock bloque la confirmation et ouvre un assistant qui propose des corrections. Et l'affichage multi-entrepôts évite l'inverse : refuser une commande alors que la marchandise est dans un autre dépôt.

Comment traiter un retour client proprement ?

Avec sale_stock_return_request : la demande de retour se crée depuis la commande livrée et reste rattachée à elle, via le menu Ventes ▸ Commandes ▸ Demande de retour. Sans ce module, un retour se traite par un transfert créé à la main, sans lien avec la vente — donc sans analyse possible du taux de retour.

Se faire accompagner

Le lien vente-stock est l'endroit où une PME perd le plus d'argent sans le voir : du stock réservé pour des commandes lointaines, des livraisons parties malgré un impayé, des retours traités hors circuit, des commandes annulées après expédition.

Nous reprenons donc ce lien dans l'ordre : qui déclenche une livraison, qui peut la bloquer, qui peut la lever, et comment un retour revient dans le système. Les modules viennent ensuite, et seulement ceux qui servent ces réponses. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

La livraison cesse d'être une conséquence automatique de la confirmation : elle se décide, se bloque avec un motif, se dirige par ligne vers la bonne adresse, et se refuse quand le stock n'y est pas. Les retours reviennent enfin rattachés à la vente qui les a produits. Parlons de votre chaîne vente-livraison.

Documentation OCAVentesLogistique

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