Une commande d'achat de trente lignes n'est pas un bloc : chaque ligne a sa date promise, son emplacement de destination, parfois son lot, et son histoire propre quand le fournisseur décale la moitié de la livraison.
Quinze modules communautaires descendent le pilotage à ce niveau — et l'un d'eux permet enfin de déplacer une ligne d'une commande à une autre.
Résumé
Trois modules traitent le texte et l'ordre : un libellé réduit à la description d'achat du produit, une note libre par ligne distincte de la description, un commentaire fournisseur, et un numéro de ligne visible, imprimé et propagé jusqu'aux lignes de facture — avec un module de colle qui le propage aussi aux mouvements de stock.
Trois traitent les dates : la date effective de première et de dernière réception, la date d'arrivée initialement prévue conservée même après modification, et le stock prévisionnel affiché sur la ligne pour décider des quantités.
Le reste agit sur la logistique de la ligne : un emplacement de destination par ligne, le lot ou numéro de série demandé au fournisseur et propagé au mouvement de stock, le conditionnement propagé depuis la demande d'approvisionnement, une unité secondaire d'achat avec sa colle vers le stock, un écran dédié aux lignes tous documents confondus, et l'assistant de réaffectation de lignes entre commandes.
L'essentiel
- Un emplacement de destination par ligne, au lieu d'un seul pour toute la commande.
- Le lot demandé au fournisseur, propagé au mouvement de stock à la réception.
- La réaffectation de lignes vers une autre commande existante, par assistant.
- La date d'arrivée initiale conservée : mesurer le retard suppose de connaître la promesse d'origine.
- Le stock prévisionnel affiché sur la ligne au moment de décider des quantités.
- Une unité secondaire d'achat — acheter à la palette un produit géré à l'unité.
- Un numéro de ligne propagé jusqu'à la facture fournisseur et aux mouvements.
- Un écran de lignes tous documents confondus, pour chercher sans ouvrir chaque commande.
Ce que ces modules ajoutent à l'instance
| Module | Rôle | Version |
|---|---|---|
purchase_order_line_description | Libellé réduit à la description d'achat | 18.0.1.0.0 |
purchase_order_line_note | Note libre par ligne | 18.0.1.0.0 |
purchase_line_vendor_comment | Commentaire destiné au fournisseur | 18.0.1.0.0 |
purchase_order_line_sequence | Numéro de ligne, imprimé et propagé | 18.0.2.0.0 |
purchase_stock_line_sequence | Colle : séquence propagée aux mouvements | 18.0.2.0.0 |
purchase_order_line_effective_date | Dates effectives de première et dernière réception | 18.0.0.1.0 |
purchase_order_line_original_date | Date d'arrivée initialement prévue | 18.0.1.0.0 |
purchase_order_line_stock_available | Stock prévisionnel sur la ligne | 18.0.1.0.0 |
purchase_location_by_line | Emplacement de destination par ligne | 18.0.1.0.1 |
purchase_lot | Lot ou numéro de série demandé | 18.0.1.0.1 |
purchase_stock_packaging | Conditionnement propagé depuis l'approvisionnement | 18.0.1.0.0 |
purchase_order_secondary_unit | Unité secondaire d'achat | 18.0.1.2.3 |
purchase_stock_secondary_unit | Colle : unité secondaire jusqu'au stock | 18.0.1.0.0 |
purchase_order_line_menu | Écran dédié aux lignes de commande | 18.0.1.0.4 |
purchase_line_reassign | Réaffectation de lignes entre commandes | 18.0.1.0.0 |
Un seul menu ajouté : Achats ▸ Commandes ▸ Lignes de commande d'achat. Il sert de support à plusieurs autres modules, dont ceux qui affichent le statut de facturation ou le montant non facturé par ligne.
Diriger la marchandise ligne par ligne
L'emplacement de destination
purchase_location_by_line permet de définir un emplacement de destination par ligne plutôt qu'un seul pour toute la commande. Il s'appuie sur le module qui découpe les réceptions par date.
Le cas est fréquent dès qu'une entreprise a plusieurs dépôts ou plusieurs zones : une même commande fournisseur approvisionne l'atelier et le magasin de pièces détachées. Sans ce module, tout arrive au même endroit et quelqu'un redistribue à la main.
Le lot demandé
purchase_lot permet de préciser sur la ligne le numéro de lot ou de série attendu, information propagée au mouvement de stock généré à la réception.
C'est la contrepartie de la sélection de lot côté vente : en agroalimentaire, en pharmacie ou en aéronautique, le lot est négocié avec le fournisseur — date de production, certificat, série homologuée — et le magasinier doit pouvoir vérifier qu'il reçoit bien celui-là.
Le conditionnement de l'approvisionnement
purchase_stock_packaging propage le conditionnement précisé sur une demande d'approvisionnement jusqu'à la ligne de commande générée automatiquement. Sans lui, le moteur d'approvisionnement perd l'information et commande en unités.
L'unité secondaire
purchase_order_secondary_unit permet d'acheter en exprimant quantité et prix dans une unité secondaire — un carton, une palette — avec conversion automatique vers l'unité d'achat du produit. Son module de colle garantit que cette unité est reportée sur les mouvements de stock.
C'est le symétrique exact des unités secondaires côté vente, et les deux s'appuient sur la même brique produit.
Les dates : promesse, réalité, dérive
| Module | Ce qu'il conserve | À quoi ça sert |
|---|---|---|
purchase_order_line_original_date | La date d'arrivée prévue à la confirmation, même si elle est modifiée ensuite | Mesurer le retard par rapport à la promesse initiale |
purchase_order_line_effective_date | Les dates effectives de première et de dernière réception | Mesurer ce qui s'est réellement passé |
Ces deux modules forment un couple. Sans la date d'origine, un fournisseur qui décale trois fois sa livraison apparaît comme ponctuel : la date prévue a été mise à jour à chaque report, et l'écart final est nul. C'est le défaut classique de tout suivi de délai fournisseur.
Avec les deux, le taux de service fournisseur devient mesurable, et la discussion de renégociation s'appuie sur des chiffres plutôt que sur des souvenirs.
purchase_order_line_stock_available complète en affichant le stock prévisionnel du produit sur la ligne, au moment où l'acheteur décide de la quantité — plutôt qu'après avoir ouvert la fiche produit dans un autre onglet.
Textes, numérotation et réaffectation
Ce que la ligne dit
purchase_order_line_descriptionréduit le libellé à la description d'achat du produit, sans les informations complémentaires qu'Odoo y ajoute.purchase_order_line_noteajoute une note libre distincte de la description — pour une consigne interne de réception.purchase_line_vendor_commentajoute un commentaire destiné au fournisseur : référence, instruction de conditionnement, précision de livraison.
La distinction entre les deux derniers est à poser dès le départ : l'un est pour nous, l'autre part chez le fournisseur. Sans règle écrite, les deux champs se remplissent au hasard.
Le numéro de ligne
purchase_order_line_sequence affiche un numéro de ligne séquentiel, visible dans le formulaire et dans les rapports imprimés, propagé jusqu'aux lignes de facture fournisseur. Son module de colle le propage en plus aux mouvements de stock.
Sur une commande de cinquante lignes, discuter d'un écart avec un fournisseur sans numéro de ligne stable est une perte de temps garantie.
Déplacer des lignes
purchase_line_reassignouvre un assistant permettant de déplacer une ou plusieurs lignes vers une autre commande d'achat existante, sans les recréer à la main.
C'est la réponse à une situation très courante : deux commandes passées au même fournisseur dans la même semaine, qu'il vaut mieux regrouper ; ou une ligne saisie sur la mauvaise commande. Sans module, il faut supprimer et ressaisir — avec le risque de perdre une quantité ou un prix négocié.
Enfin, purchase_order_line_menu fournit un écran dédié aux lignes, tous documents confondus : on cherche une référence à travers toutes les commandes sans les ouvrir. Plusieurs autres modules du dépôt s'appuient sur cet écran pour y afficher leurs propres colonnes.
Limites connues
purchase_location_by_linedépend du découpage des réceptions par date : l'installer change la façon dont les réceptions sont créées.- Le lot demandé est une intention : le fournisseur peut livrer autre chose, et la réception doit être contrôlée.
- Deux champs de texte par ligne — note interne et commentaire fournisseur — demandent une règle d'usage, sinon ils se confondent.
- La réaffectation de lignes ne doit pas devenir un usage courant : des lignes qui changent de commande compliquent la traçabilité et les relances.
- Les unités secondaires exigent la brique produit correspondante et un paramétrage de conversion par produit.
- La date d'origine n'a de valeur que si elle est posée dès la confirmation : installée après coup, elle ne reconstitue pas l'historique.
Identité technique
Les quinze modules viennent du dépôt OCA purchase-workflow, branche 18.0, en licence AGPL-3 sauf purchase_order_line_original_date et purchase_line_vendor_comment (LGPL-3). Quatre dépendent de briques d'autres dépôts : unité secondaire produit et stock, séquence des lignes de transfert, restriction de lot.
Les familles voisines : les réceptions fournisseurs, les tarifs fournisseurs et, côté vente, les lignes de commande.
Questions fréquentes
Peut-on diriger chaque ligne vers un emplacement différent ?
Oui, avec purchase_location_by_line : chaque ligne porte son emplacement de destination, au lieu d'un emplacement unique pour la commande. Le module s'appuie sur le découpage des réceptions par date, donc son installation change aussi la façon dont les réceptions sont créées.
Comment demander un lot précis à un fournisseur ?
purchase_lot permet de préciser sur la ligne le numéro de lot ou de série attendu, propagé au mouvement de stock généré à la réception. C'est une intention : le fournisseur peut livrer autre chose, et la réception doit être contrôlée — mais le magasinier sait ce qu'il devait recevoir.
Comment mesurer le retard réel d'un fournisseur ?
Il faut deux modules. purchase_order_line_original_date conserve la date d'arrivée prévue à la confirmation, même si elle est modifiée ensuite ; purchase_order_line_effective_date enregistre les dates effectives de réception. Sans la date d'origine, un fournisseur qui décale trois fois apparaît comme ponctuel, puisque la date prévue a suivi chaque report.
Peut-on déplacer une ligne vers une autre commande ?
Oui : purchase_line_reassign ouvre un assistant qui déplace une ou plusieurs lignes vers une commande d'achat existante, sans ressaisie. Utile pour regrouper deux commandes au même fournisseur ou corriger une ligne saisie au mauvais endroit — à ne pas transformer en usage courant, car cela complique la traçabilité.
Peut-on acheter à la palette un produit géré à l'unité ?
Oui, avec purchase_order_secondary_unit : quantité et prix s'expriment dans une unité secondaire, avec conversion automatique vers l'unité d'achat du produit. Ajoutez purchase_stock_secondary_unit pour que cette unité soit reportée sur les mouvements de stock.
Se faire accompagner
Ces quinze modules partagent une logique : la commande d'achat est un document administratif, la ligne est l'unité logistique. Les entreprises qui réceptionnent sur plusieurs sites ou suivent des lots le savent, et le compensent avec des annotations manuscrites sur les bons de réception.
Nous tranchons donc trois questions avant d'installer : où arrive la marchandise, qui contrôle le lot, et comment on mesure le respect des délais. La date d'arrivée initiale, en particulier, doit être posée dès le départ — installée plus tard, elle ne reconstitue rien. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
- Réceptions fournisseurs : statuts, conteneurs et recettes
- Tarifs fournisseurs : prix, codes et recommandation
- Conditionnements, unités secondaires et lots
En résumé
L'emplacement, le lot, l'unité et la date descendent au niveau de la ligne — et une ligne mal placée peut enfin changer de commande sans ressaisie. Le couple date promise / date effective rend le taux de service fournisseur mesurable, à condition d'être posé dès le départ. Parlons de vos approvisionnements.