Un bon de livraison imprimé, donné au cariste, puis annulé dans l'ERP : la marchandise part quand même. Un retour client saisi pour douze pièces alors que huit ont été livrées : le stock augmente de quatre pièces qui n'existent pas.
Odoo autorise les deux. Dix-huit modules communautaires y mettent des garde-fous — et ajoutent ce qui manque pour communiquer autour d'un transfert.
Résumé
Trois modules restreignent les retours : la quantité retournée ne peut pas dépasser la quantité livrée, le lot d'origine est repris automatiquement pour les produits tracés, et seul le contenu d'un colis est remis en stock lors d'un retour de colis.
Quatre encadrent l'annulation et la validation : interdiction d'annuler un transfert déjà imprimé, interdiction d'annuler un maillon isolé d'une chaîne de transferts, obligation de valider intégralement sans reliquat selon le type d'opération, et validation par paliers sur les transferts.
Le reste sert la communication et la navigation : avertissement du partenaire affiché sur le transfert, alerte avant de traiter un transfert réservé dont rien n'a été explicitement prélevé, envoi du bon par courriel, consignes de préparation portées par la fiche client, numéro de TVA imprimé sur les bons, référence client reprise de la commande, document d'origine rendu cliquable — avec deux extensions pour les ventes et les achats — et deux boutons de retour vers la commande d'origine.
L'essentiel
- Impossible de retourner plus que ce qui a été livré — option par type d'opération.
- Le lot d'origine repris automatiquement lors d'un retour de produit tracé.
- Annulation interdite après impression du bon : le papier est déjà parti dans l'entrepôt.
- Annulation interdite d'un maillon isolé d'une chaîne de transferts.
- Validation intégrale obligatoire par type d'opération : ni reliquat, ni quantité partielle.
- Des consignes de préparation par client : « fragile », « livrer sur palette ».
- Le document d'origine cliquable, y compris vers une commande de vente ou d'achat.
- Le bon de livraison envoyé par courriel depuis sa fiche.
Ce que ces modules ajoutent à l'instance
| Famille | Modules | Nombre |
|---|---|---|
| Retours | stock_picking_return_restricted_qty, stock_picking_return_lot, stock_picking_return_empty_package | 3 |
| Annulation et validation | stock_picking_restrict_cancel_printed, stock_picking_restrict_cancel_with_orig_move, stock_picking_restrict_partial_validation, stock_picking_tier_validation, stock_picking_immediate_transfer_warning | 5 |
| Communication | stock_picking_warn_message, stock_picking_send_by_mail, stock_picking_partner_note, stock_picking_partner_vat, stock_picking_customer_ref | 5 |
| Navigation | stock_picking_origin_reference, stock_picking_origin_reference_sale, stock_picking_origin_reference_purchase, stock_picking_purchase_order_link, stock_picking_sale_order_link | 5 |
Un seul menu ajouté : Inventaire ▸ Configuration ▸ Picking Notes et ses types de notes, pour les consignes de préparation.
Des retours qui ne créent pas de stock
Retourner plus que ce qui a été livré crée du stock à partir de rien. C'est l'une des sources les plus fréquentes d'écart d'inventaire, et elle est invisible : chaque ligne prise isolément paraît légitime.
stock_picking_return_restricted_qtyajoute une option par type d'opération qui bloque toute tentative de retourner une quantité supérieure à celle livrée ou reçue.stock_picking_return_lotforce, pour les produits tracés, la reprise du lot ou numéro de série d'origine dans l'assistant de retour. Sans lui, l'opérateur saisit un lot au hasard, et la traçabilité est rompue au moment précis où elle devrait servir.stock_picking_return_empty_packagegarantit que seul le contenu d'un colis est remis en stock lors d'un retour de colis — et non le colis lui-même comme article.
Les deux premiers forment le minimum vital pour toute entreprise qui gère des retours sur des produits tracés : agroalimentaire, pharmacie, pièces techniques, matériel sous garantie.
Le circuit de retour côté commercial est traité dans ventes et stock, avec la demande de retour rattachée à la commande d'origine.
Ce qu'on ne doit plus pouvoir annuler
| Module | Ce qu'il interdit | Pourquoi |
|---|---|---|
stock_picking_restrict_cancel_printed | L'annulation d'un transfert déjà imprimé | Le bon papier circule déjà dans l'entrepôt |
stock_picking_restrict_cancel_with_orig_move | L'annulation d'un maillon isolé d'une chaîne | Annuler le contrôle qualité laisse la réception orpheline |
stock_picking_restrict_partial_validation | La validation partielle, par type d'opération | Ni reliquat ni quantité partielle quand le process l'exige |
Le premier est le plus simple et le plus utile : dès qu'un document est imprimé, il existe physiquement quelque part. L'annuler dans l'ERP ne l'efface pas du quai.
Le deuxième traite un défaut structurel : Odoo permet d'annuler n'importe quel transfert d'une chaîne indépendamment des autres, ce qui laisse des mouvements amont sans destination et des stocks bloqués dans un emplacement de transit.
Le troisième est un choix de process : sur certains types d'opération — inventaire, transfert interne contrôlé —, un traitement partiel n'a pas de sens, et le reliquat créé automatiquement complique tout.
Deux contrôles supplémentaires
stock_picking_tier_validationbranche la validation par paliers sur les transferts : un ou plusieurs valideurs avant de pouvoir valider un mouvement — utile pour les sorties sensibles ou les régularisations.stock_picking_immediate_transfer_warningavertit avant de traiter un transfert réservé dont aucun mouvement n'a été explicitement prélevé : c'est le cas du clic sur « Valider » sans avoir rien scanné, qui valide les quantités théoriques.
Le second mérite d'être généralisé : valider sans prélever revient à déclarer conforme ce qu'on n'a pas regardé, et c'est le geste qui produit les écarts les plus durs à expliquer.
Communiquer autour d'un transfert
Les consignes de préparation
stock_picking_partner_note permet d'enregistrer sur la fiche d'un client des consignes destinées au préparateur — « fragile, à emballer séparément », « livrer sur palette », « sonner à l'interphone 3 ». Elles se gèrent par types, dans un menu dédié.
Ces consignes vivent sinon dans la mémoire d'un préparateur expérimenté. Le jour de son absence, le client reçoit un colis mal emballé — et la réclamation coûte plus cher que tout ce que l'ERP a fait gagner ce mois-là.
Les autres informations utiles
| Module | Ce qu'il affiche ou permet |
|---|---|
stock_picking_warn_message | L'avertissement du partenaire affiché sur le transfert — client en litige, consigne de sécurité |
stock_picking_partner_vat | Le numéro de TVA du contact sur le formulaire et sur deux rapports PDF |
stock_picking_customer_ref | La référence client issue de la commande, avec recherche et regroupement |
stock_picking_send_by_mail | L'envoi du bon par courriel depuis sa fiche, via l'assistant standard |
Le numéro de TVA sur le bon de livraison n'est pas un ornement : il est exigé dans plusieurs contextes d'expédition intracommunautaire, et son absence fait rejeter des documents en douane.
Naviguer : d'un transfert vers son origine
stock_picking_origin_referencerend le champ document d'origine cliquable lorsqu'il correspond au nom d'un autre transfert : au lieu d'un texte à recopier dans une recherche, un lien.- Deux extensions ajoutent les commandes de vente et les commandes d'achat aux types de documents reconnus.
stock_picking_sale_order_linketstock_picking_purchase_order_linkajoutent un bouton vers la commande qui a généré le transfert.
Ces cinq modules ne changent aucun comportement : ils suppriment des copier-coller. Sur un entrepôt qui traite trois cents transferts par jour, c'est une économie de temps réelle — et surtout une économie d'erreurs de recherche.
Les accès inverses — depuis le transfert vers ses reliquats, ses retours, ses lots — sont traités dans regrouper et scinder les transferts.
Limites connues
- Interdire l'annulation après impression suppose une procédure de rattrapage : il faut pouvoir corriger autrement, sinon les opérateurs impriment le plus tard possible.
- La validation intégrale obligatoire bloque les livraisons partielles : à réserver aux types d'opération où le process l'exige.
- La validation par paliers sur les transferts ralentit l'entrepôt : à limiter aux opérations sensibles.
- Les consignes client doivent être tenues : une consigne périmée produit une erreur avec l'autorité d'une instruction.
stock_picking_return_empty_packageest peu documenté dans le relevé : comportement à vérifier sur le dépôt.- L'avertissement avant validation n'empêche rien : il alerte, et suppose qu'on lise.
Identité technique
Les dix-huit modules viennent du dépôt OCA stock-logistics-workflow, branche 18.0, tous en licence AGPL-3. Quatre dépendent de sale_stock ou de purchase_stock — ils ne concernent donc que les flux issus d'une commande — et la validation par paliers s'appuie sur le socle générique du dépôt server-ux.
Les familles voisines : les mouvements de stock, regrouper et scinder les transferts et les vagues de préparation.
Questions fréquentes
Peut-on empêcher un retour supérieur à la quantité livrée ?
Oui : stock_picking_return_restricted_qty ajoute une option par type d'opération qui bloque toute tentative de retourner plus que ce qui a été livré ou reçu. C'est une source fréquente d'écart d'inventaire, et elle est invisible ligne à ligne — chaque retour paraît légitime pris isolément.
Le lot d'origine est-il repris lors d'un retour ?
Pas en standard. stock_picking_return_lot force la reprise du lot ou numéro de série d'origine dans l'assistant de retour pour les produits tracés. Sans lui, l'opérateur saisit un lot au hasard et la traçabilité se rompt au moment précis où elle devrait servir.
Pourquoi interdire l'annulation d'un transfert imprimé ?
Parce que le document existe physiquement : il a été remis à un cariste ou posé sur un quai. stock_picking_restrict_cancel_printed empêche l'annulation dans l'ERP, qui ne fait pas disparaître le papier. Prévoyez la procédure de correction, sinon les opérateurs retarderont l'impression.
Comment transmettre une consigne de préparation propre à un client ?
Avec stock_picking_partner_note : les consignes — « fragile, emballer séparément », « livrer sur palette » — sont enregistrées sur la fiche du client, par types, et apparaissent sur ses transferts. Elles cessent de dépendre de la mémoire d'un préparateur expérimenté.
Comment éviter de valider un transfert sans rien avoir prélevé ?
stock_picking_immediate_transfer_warning avertit avant de traiter un transfert réservé dont aucun mouvement n'a été explicitement prélevé. Valider sans prélever revient à déclarer conforme ce qu'on n'a pas regardé : c'est le geste qui produit les écarts les plus difficiles à expliquer.
Se faire accompagner
Ces dix-huit modules partagent une caractéristique : chacun comble un trou qu'Odoo laisse ouvert par souplesse. Pris isolément, aucun ne paraît urgent ; ensemble, ils expliquent pourquoi un inventaire tombe juste ou non.
Nous les posons donc en partant des écarts constatés : d'où viennent les erreurs d'inventaire de l'an dernier, et quel garde-fou les aurait évitées. C'est plus rapide que d'installer dix-huit modules et plus convaincant pour les équipes. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
- Mouvements de stock : dates, lots et relocalisation
- Regrouper, scinder et suivre les transferts
- La gestion des stocks et de la traçabilité dans Odoo
En résumé
Ce qu'Odoo laisse faire et qui coûte cher : retourner plus que livré, annuler un bon déjà imprimé, valider sans avoir rien prélevé, perdre le lot d'origine d'un retour. Dix-huit garde-fous, plus les consignes client et les liens vers le document d'origine. Parlons de vos écarts d'inventaire.