Se rendre au contenu

Le modèle stock.picking : maîtriser les transferts et opérations d’entrepôt Odoo

Guide complet : comprendre le modèle centralisé de transferts d’Odoo pour la gestion des stocks et entrepôts
10 mars 2026 par
Le modèle stock.picking : maîtriser les transferts et opérations d’entrepôt Odoo
Dasolo
| Aucun commentaire pour l'instant

Introduction


Dans Odoo, les modèles définissent la façon dont les informations métier sont structurées et conservées. Chaque élément — commande, transfert de stock, opération d’entrepôt — repose sur un modèle qui organise champs, relations et règles métier dans la base de données.


Comprendre les modèles Odoo est indispensable tant pour les consultants fonctionnels que pour les développeurs. Ce sont eux qui définissent les données manipulées par l’application, les liens entre objets et la logique embarquée sur laquelle reposent les processus métiers.


Cet article met l’accent sur l’un des modèles essentiels du module Inventaire : stock.picking. Que vous configuriez des flux d’entrepôt, développiez des modules sur mesure ou connectiez des systèmes externes, vous croiserez très souvent ce modèle.

Qu’est-ce que le modèle stock.picking


Le modèle stock.picking sert à représenter un transfert de marchandises. C’est le point central où l’on suit l’avancement d’une opération d’entrepôt : chaque enregistrement correspond à un mouvement de produits d’un emplacement A vers un emplacement B.


Dans le module Inventaire, toute opération physique — réception fournisseur, livraison client ou transfert interne — génère un enregistrement stock.picking. La confirmation d’une commande de vente, la réception d’un bon de commande ou un déplacement entre entrepôts passent par ce modèle.


Le modèle est défini dans le module stock et sert de socle extensible : les autres modules l’enrichissent via l’héritage des modèles. Le module Vente ajoutera des champs liés à la livraison, Achats gérera les réceptions, Production intégrera les mouvements liés à la fabrication, sans réécrire la structure de base.


stock.picking hérite aussi de fonctionnalités collaboratives (mail.thread, mail.activity.mixin). Cela permet de suivre les modifications, poster des messages dans le chatter et planifier des actions liées à un transfert depuis la fiche picking.

Champs clés du modèle


Voici les champs principaux du modèle stock.picking. Les connaître facilite la configuration, le débogage et les développements autour des opérations d’entrepôt.


1. name

Type : Char. Référence du transfert, généralement générée par une séquence (ex. WH/OUT/00001). Visible en en-tête de la fiche, c’est l’identifiant principal utilisé par les utilisateurs et les rapports.


2. origin

Type : Char. Référence du document source : nom de la commande de vente, numéro de commande d’achat, etc. Utile pour retracer l’origine du transfert lors d’analyses ou d’audits.


3. state

Type : Selection. État du transfert (Draft, Waiting Another Operation, Waiting, Ready, Done, Cancelled). L’état conditionne les actions disponibles et est calculé à partir des mouvements associés.


4. picking_type_id

Type : Many2one (stock.picking.type). Type d’opération : réception, livraison ou transfert interne. Champ requis qui définit les emplacements source/destination par défaut et le comportement associé.


5. move_ids

Type : One2many (stock.move). Lignes de mouvements. Chaque ligne précise le produit et la quantité à déplacer — c’est le cœur fonctionnel du picking, là où s’applique la logique de réservation et de disponibilité.


6. move_line_ids

Type : One2many (stock.move.line). Opérations détaillées : lots, numéros de série, emplacements précis. Utilisé lors du picking, de l’emballage et de la validation pour tracer les unités physiques.


7. location_id

Type : Many2one (stock.location). Emplacement source : d’où proviennent les produits. Champ requis ; pour une livraison, il s’agira souvent de l’emplacement stock, pour une réception du lieu fournisseur.


8. location_dest_id

Type : Many2one (stock.location). Emplacement de destination : où les produits sont déplacés. Champ requis ; pour une livraison il s’agit souvent de l’emplacement client ou d’expédition, pour une réception de l’emplacement stock.


9. partner_id

Type : Many2one (res.partner). Partenaire lié à l’opération : client pour les livraisons, fournisseur pour les réceptions. Sert aux adresses sur les documents et aux intégrations transporteur.


10. scheduled_date

Type : Datetime. Date prévue de traitement du transfert. Utilisée pour la planification et la priorisation ; la fixer influence la date attendue des mouvements associés.


11. date_deadline

Type : Datetime. Date limite liée au document source (commande vente/achat). Permet d’identifier les retards et de gérer les promesses de livraison au client.


12. date_done

Type : Datetime. Date de validation (ou d’annulation) du transfert. Champ en lecture seule mis à jour automatiquement lorsque le picking est passé en Done.


13. priority

Type : Selection. Niveau de priorité du transfert. Lors de la réservation, les transferts à priorité élevée sont servis en premier, utile pour les commandes urgentes.


14. move_type

Type : Selection. Politique d’expédition : dès que possible (livraison partielle possible) ou quand tout est prêt (tous les produits nécessaires). Impacte le déclenchement du traitement du picking.


15. user_id

Type : Many2one (res.users). Utilisateur responsable du transfert. Sert à l’affectation des tâches et au suivi de la charge de travail ; valeur par défaut : utilisateur courant à la création.


16. company_id

Type : Many2one (res.company). Société propriétaire du transfert. Dans les environnements multi-sociétés, ce champ indique à quelle entité appartient le picking.


17. group_id

Type : Many2one (procurement.group). Groupe de procurement : permet de regrouper les mouvements issus d’une même commande ou d’un même processus.


18. backorder_id

Type : Many2one (stock.picking). Quand une validation est partielle, un backorder est créé pour le reliquat ; ce champ pointe vers le picking original.


19. backorder_ids

Type : One2many (stock.picking). Ensemble des backorders issus d’un picking. Utile pour suivre ce qui reste à exécuter après une validation partielle.


20. return_id

Type : Many2one (stock.picking). Si le picking est issu d’un retour, ce champ relie l’enregistrement au picking d’origine pour tracer la chaîne.


21. note

Type : Html. Notes internes visibles par l’équipe d’entrepôt : consignes particulières, précautions de manutention ou autres remarques opérationnelles.


22. signature

Type : Image. Signature capturée lors de la validation de la livraison. Sert de preuve de livraison et est stockée comme pièce jointe.


23. is_signed

Type : Boolean. Calculé à partir de la présence d’une signature. Indique si la livraison a été signée par le destinataire.


24. owner_id

Type : Many2one (res.partner). Propriétaire des produits au moment de la validation (utile pour le consignation ou pour des produits appartenant à un tiers).


25. package_level_ids

Type : One2many (stock.package_level). Niveaux d’emballage utilisés par le mécanisme « put in pack ». Permet de regrouper les move lines par colis pour l’expédition.


26. create_date

Type : Datetime. Date de création de l’enregistrement. Gestion automatique héritée du modèle de base.


27. write_date

Type : Datetime. Date de dernière modification. Mise à jour automatique pour le suivi des changements.


28. active

Type : Boolean. Indicatif d’archivage (soft delete). Lorsqu’il est à False, l’enregistrement est considéré comme archivé.

Comment ce modèle s’intègre aux processus métiers


1. Ventes et livraisons

À la confirmation d’une commande de vente, Odoo génère un bon de livraison (stock.picking) lié via le champ origin. L’équipe d’entrepôt prépare, emballe puis valide : l’état évolue de brouillon à prêt puis à réalisé.


2. Achats et réceptions

Quand une commande d’achat est confirmée, Odoo crée une réception entrante. Le picking matérialise le transfert depuis le lieu fournisseur vers le stock ; partner_id indique le fournisseur et la validation met à jour les quantités en stock.


3. Transferts internes

Les déplacements entre emplacements internes ou entre entrepôts produisent des pickings de type interne (picking_type_id.code = 'internal'). Les deux emplacements sont des emplacements de stock interne.


4. Retours et reliquats

Les retours génèrent des pickings spécifiques reliés au picking original via return_id. En cas de validation partielle, des backorders sont créés et répertoriés dans backorder_ids pour la suite du traitement.


5. Production et industrie

Les ordres de fabrication génèrent des pickings pour la consommation des composants et la réception des produits finis. Le module MRP étend stock.picking pour intégrer ces flux de production.

Comment les développeurs l’étendent


Les développeurs disposent de plusieurs méthodes pour étendre stock.picking, l’héritage des modèles étant le mécanisme principal.


Héritage de modèle

Déclarez _inherit = 'stock.picking' dans un module pour enrichir le modèle : ajouter des champs, redéfinir des méthodes ou ajouter des contraintes. L’approche permet de conserver les modifications dans un module séparé et facilite les mises à jour.


Ajout de champs

Créez de nouveaux champs dans le modèle hérité en choisissant soigneusement le type (Char, Many2one, Boolean, Integer, Text, Selection). Pensez aux champs dépendant de la société dans les environnements multi-sociétés.


Extensions Python

Surchagez des méthodes comme button_validate, action_assign ou _create_backorder pour injecter de la logique métier. Utilisez super() pour préserver le comportement d’origine et soyez prudent avec les transitions d’état et la création de mouvements.


Odoo Studio

Odoo Studio permet d’ajouter des champs sans coder, utile pour des ajustements rapides ou des étiquettes personnalisées. Pour des règles complexes, intégrations transporteurs ou logique métier critique, préférez un module personnalisé pour la maintenabilité.

Bonnes pratiques


  • Toujours définir picking_type_id lors de la création manuelle d’un picking. Ce champ conditionne les emplacements par défaut et le comportement opérationnel.
  • Utilisez origin pour garder la traçabilité vers le document source. C’est précieux pour les rapports, le support et le débogage.
  • Pour les intégrations API, le modèle stock.picking est exposé par l’API Odoo. Créez les mouvements via la relation move_ids plutôt que d’essayer de créer des pickings vides : un picking sans mouvements n’a pas de sens fonctionnel.
  • Exploitez scheduled_date pour la planification : elle influence la réservation et la priorisation des pickings dans les vues et les règles d’allocation.
  • Pour les champs personnalisés, utilisez le préfixe x_ ou un préfixe lié à votre module afin d’éviter les collisions avec les futures versions d’Odoo.

Erreurs fréquentes


  • Créer des pickings sans renseigner picking_type_id : risque de mauvais emplacements par défaut et de comportements imprévus.
  • Modifier move_ids après confirmation sans maîtriser la machine à états : les transitions et règles de réconciliation des mouvements sont complexes et peuvent provoquer des incohérences.
  • Oublier partner_id sur les livraisons : les services transport et la génération d’étiquettes/documentation peuvent échouer sans contact défini.
  • Surcharger button_validate sans appeler super() : vous risquez de casser la création de backorders et d’impacter d’autres modules dépendants.
  • Penser que move_ids et move_line_ids sont systématiquement synchronisés : les move_lines n’apparaissent qu’après réservation ou lors d’opérations détaillées — attention aux hypothèses lors des scripts ou intégrations.

Conclusion


Le modèle stock.picking est au cœur de la gestion des stocks dans Odoo : il enregistre réceptions, livraisons et transferts. Maîtriser ses champs et son extension facilite la configuration, la personnalisation et l’intégration de l’ERP.


Que vous cartographiez des processus d’entrepôt en tant que consultant fonctionnel ou que vous développiez des modules sur mesure, une bonne compréhension de stock.picking vous fera gagner du temps et évitera des erreurs coûteuses.

Prêt à optimiser votre entrepôt Odoo


Dasolo accompagne les entreprises dans l’implémentation, la personnalisation et l’optimisation d’Odoo. Nous sommes spécialisés en intégrations API et développement Odoo, avec une expérience approfondie de l’architecture des données et des modèles comme stock.picking.


Besoin d’aide pour votre implémentation Odoo, un module d’entrepôt sur mesure ou une intégration ? Notre équipe est à votre disposition. Réservez une démo pour discuter de votre projet.

Le modèle stock.picking : maîtriser les transferts et opérations d’entrepôt Odoo
Dasolo 10 mars 2026
Partager cet article
Se connecter pour laisser un commentaire.