Documentation10 min de lecture

Lignes de commande d'achat : emplacement, lot, unité et réaffectation

Quinze modules OCA du dépôt `purchase-workflow` déplacent le pilotage de l'achat **vers la ligne** dans Odoo 18 Community : `purchase_location_by_line` donne à chaque ligne son **emplacement de destination**, et `purchase_line_reassign` permet de **déplacer des lignes vers une autre commande** existante, sans les recréer. Les treize autres, du lot demandé au fournisseur à la date d'arrivée initialement promise.

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

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

ModuleRôleVersion
purchase_order_line_descriptionLibellé réduit à la description d'achat18.0.1.0.0
purchase_order_line_noteNote libre par ligne18.0.1.0.0
purchase_line_vendor_commentCommentaire destiné au fournisseur18.0.1.0.0
purchase_order_line_sequenceNuméro de ligne, imprimé et propagé18.0.2.0.0
purchase_stock_line_sequenceColle : séquence propagée aux mouvements18.0.2.0.0
purchase_order_line_effective_dateDates effectives de première et dernière réception18.0.0.1.0
purchase_order_line_original_dateDate d'arrivée initialement prévue18.0.1.0.0
purchase_order_line_stock_availableStock prévisionnel sur la ligne18.0.1.0.0
purchase_location_by_lineEmplacement de destination par ligne18.0.1.0.1
purchase_lotLot ou numéro de série demandé18.0.1.0.1
purchase_stock_packagingConditionnement propagé depuis l'approvisionnement18.0.1.0.0
purchase_order_secondary_unitUnité secondaire d'achat18.0.1.2.3
purchase_stock_secondary_unitColle : unité secondaire jusqu'au stock18.0.1.0.0
purchase_order_line_menuÉcran dédié aux lignes de commande18.0.1.0.4
purchase_line_reassignRéaffectation de lignes entre commandes18.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

ModuleCe qu'il conserveÀ quoi ça sert
purchase_order_line_original_dateLa date d'arrivée prévue à la confirmation, même si elle est modifiée ensuiteMesurer le retard par rapport à la promesse initiale
purchase_order_line_effective_dateLes dates effectives de première et de dernière réceptionMesurer 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_description réduit le libellé à la description d'achat du produit, sans les informations complémentaires qu'Odoo y ajoute.
  • purchase_order_line_note ajoute une note libre distincte de la description — pour une consigne interne de réception.
  • purchase_line_vendor_comment ajoute 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_reassign ouvre 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_line dé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

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.

Documentation OCAAchatsLogistique

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