Se rendre au contenu

Maîtriser les Achats & Approvisionnements dans Odoo 19 — Partie 2/4 : Frais d'import et landed costs

Saison 8 · Article 2/4 — Achats & Approvisionnements
26 avril 2026 par
Maîtriser les Achats & Approvisionnements dans Odoo 19 — Partie 2/4 : Frais d'import et landed costs
B.Mustapha

Saison 8 · Article 2/2 — Maîtriser les Achats

Frais d'import & Landed costs dans Odoo 19

Le matériel importé coûte bien plus cher que le prix d'achat fournisseur. Transport, douane, assurance : ces frais d'approche doivent remonter dans la valeur du stock pour que les marges soient honnêtes. Dans cette Partie 2, on installe le module stock_landed_costs, on répartit 333 000 DZD de frais sur un container de serveurs, et on lit l'écriture comptable générée.

Ce que tu vas apprendre

Activer le module

Coûts logistiques dans les paramètres Inventaire — catégorie produit AVCO/FIFO obligatoire.

5 méthodes de répartition

Par quantité, poids, volume, coût actuel ou égal — et non 4 comme souvent lu ailleurs.

Landed Cost Bill

Lier un transfert, saisir les 3 lignes transport / douane / assurance, calculer, valider.

Impact FIFO/AVCO

Nouveau coût unitaire, écriture comptable Débit stock / Crédit charges.

1. La facture ImportEquip ne passe pas

Dans la Partie 1, Karim a validé la commande chez ImportEquip : 10 serveurs rack R3 Pro 2U à 150 000 DZD l'unité, soit un bon de commande de 1 500 000 DZD. Le container arrive au port d'Alger. Inès réceptionne la marchandise en suivant les procédures d'achat standard, fait entrer le stock. Tout va bien.

Deux jours plus tard, le transitaire envoie sa facture :

  • Transport maritime DDP container 40 pieds — 240 000 DZD
  • Droits de douane (5% sur la valeur FOB) — 75 000 DZD
  • Assurance cargo (0,12% valeur) — 18 000 DZD

333 000 DZD de frais d'approche. Soit 22% de la valeur du matériel. Karim pensait marger 20% sur ces serveurs en les revendant 180 000 DZD — mais s'il laisse ces frais en charges générales, son vrai coût est 183 300 DZD par serveur. Marge négative de 1,8% sur chaque vente. L'équivalent de plusieurs mois de subventionner ses clients sans le savoir.

« C'est exactement pour ce genre de situations que le module Coûts logistiques existe », lui répond Inès. « On va répartir ces 333 000 DZD directement sur la valeur des 10 serveurs en stock. Résultat : le coût unitaire passe à 183 300 DZD, les marges sont recalculées sur la vérité, et la compta enregistre l'enrichissement du stock en même temps. »

2. Qu'est-ce qu'un coût logistique ?

Un coût logistique (ou landed cost en anglais) est un frais additionnel qu'on répartit sur la valeur de produits physiques après leur réception, pour que le coût enregistré dans Odoo corresponde au coût réellement supporté pour mettre ce produit en stock — pas juste le prix du fournisseur.

Workflow complet d'un coût logistique dans Odoo 19 — de la configuration à l'écriture comptable
Le parcours complet d'un coût logistique — 4 prérequis, 4 étapes opérationnelles, 2 résultats automatiques.
📖 Vocabulaire Incoterms — selon l'Incoterm négocié avec le fournisseur, les frais d'approche peuvent être inclus ou non dans le prix de la marchandise :
  • EXW (Ex Works) — tu t'occupes de tout, frais énormes côté acheteur
  • FOB (Free On Board) — le fournisseur livre jusqu'au port, tu gères la traversée et la douane
  • CIF (Cost Insurance Freight) — transport et assurance inclus, la douane reste à ta charge
  • DDP (Delivered Duty Paid) — tout inclus jusqu'à ton entrepôt, mais prix unitaire souvent plus élevé

Dans le cas d'InfoSphere, l'accord avec ImportEquip est en FOB Shanghai : le prix de 150 000 DZD inclut l'acheminement jusqu'au port de départ, mais transport maritime, douane algérienne et assurance sont à la charge d'InfoSphere. D'où les trois lignes de la facture du transitaire, qui deviennent les trois lignes de coût du Landed Cost.

3. Précision v19 — 5 méthodes de répartition, pas 4

La documentation qui circule en ligne oublie souvent une méthode. Odoo 19 propose bien cinq méthodes de répartition pour les coûts logistiques :

Libellé FR v19 Code technique Logique
Égal equal Divisé équitablement sur chaque ligne produit
Par quantité by_quantity Proportionnel au nombre d'unités
Par poids by_weight Proportionnel au poids total (produit × quantité)
Par volume by_volume Proportionnel au volume total
Par coût actuel by_current_cost_price Proportionnel à la valeur marchande

Chaque ligne de coût peut utiliser une méthode différente : transport souvent par quantité (ou poids si container partagé), douane par coût actuel (plus le produit est cher, plus la douane percute), assurance égale sur toutes les lignes ou par valeur.

4. Activer les coûts logistiques

Le module stock_landed_costs n'est pas installé par défaut en v19 CE. Il s'active depuis Inventaire → Configuration → Paramètres, dans la section Valorisation. Coche Coûts logistiques — Odoo installe automatiquement les dépendances stock_account et purchase_stock.

Paramètres Inventaire Odoo 19 — option Coûts logistiques cochée dans la section Valorisation
Section Valorisation des paramètres Inventaire — option Coûts logistiques activée.

Un nouveau paramètre apparaît dessous : Journal par défaut. Laisse-le vide, le système utilisera le journal de valorisation d'inventaire de la société, qui est déjà configuré. Enregistre et le menu Inventaire → Opérations → Ajustements → Coûts logistiques devient accessible.

5. Préparer la catégorie produit — AVCO ou FIFO

Premier écueil — et de loin le plus fréquent. Les landed costs ne fonctionnent que sur des produits dont la catégorie utilise :

  • Méthode de coût = Coût moyen (AVCO) ou Premier entré, premier sorti (FIFO)
  • Valorisation de l'inventaire = Automatique (temps réel)
Catégorie produit Importation AVCO Odoo 19 — méthode Coût moyen et valorisation Automatique
La catégorie Importation AVCO créée par InfoSphere — AVCO + valorisation temps réel.

Sur un produit en Coût standard (valeur fixe manuelle), Odoo refuse avec une erreur. Sur une catégorie en Valorisation manuelle / périodique, le calcul fonctionne mais aucune écriture comptable n'est générée.

InfoSphere crée une catégorie dédiée Importation AVCO pour ses produits en provenance de l'étranger. Les produits locaux (fournitures de bureau, câbles Ethernet) restent en coût standard, ils n'ont pas besoin de landed costs.

6. Créer le produit InfoRack Server R3 2U

Karim crée la fiche produit dans la catégorie Importation AVCO. Quelques champs comptent pour la suite :

  • Coût — 150 000 DZD (le prix d'achat fournisseur avant landed costs)
  • Poids — 25 kg (utilisé pour la répartition Par poids)
  • Volume — 0,12 m³ (utilisé pour Par volume)
Fiche produit InfoRack Server R3 2U — catégorie Importation AVCO, coût 150 000 DZD, poids 25 kg
Fiche produit InfoRack Server R3 2U — catégorie AVCO, poids et volume renseignés pour permettre les répartitions.
⚠️ Poids et volume doivent exister avant la première réception — si la méthode de répartition est Par poids et qu'un des produits a un poids à zéro, Odoo divise par zéro et bascule sur la méthode Égal sans prévenir. Résultat : répartition silencieusement faussée. Remplis toujours poids et volume sur les fiches produit AVANT la première réception.

7. Réceptionner le container

Pré-requis du landed cost : le transfert (picking) doit être en état Terminé. Karim part de sa commande d'achat ImportEquip (1 500 000 DZD), clique Réception sur le smartbutton, puis Valider sur le transfert. Les 10 serveurs entrent en stock à 150 000 DZD chacun, soit une valorisation initiale de 1 500 000 DZD au bilan.

Transfert ALG/IN/00006 Odoo 19 — état Terminé avec 10 serveurs InfoRack R3 Pro 2U réceptionnés
Transfert ALG/IN/00006 validé — container réceptionné, prêt pour le landed cost.

La date du transfert est importante : c'est elle qui fixe la date de l'écriture comptable du landed cost. Si tu réceptionnes en fin de mois et que la facture du transitaire arrive le mois suivant, le landed cost peut être enregistré à la date de facturation pour respecter la période comptable.

8. Créer le Landed Cost — 333 000 DZD à répartir

Menu Inventaire → Opérations → Coûts logistiques → Nouveau. Trois champs essentiels :

  • Appliquer sur — Transferts (unique choix CE ; Ordres de fabrication existe en Enterprise)
  • Transferts — sélectionne ALG/IN/00006
  • Coûts additionnels — ajoute les 3 lignes avec leur méthode de répartition individuelle
Formulaire Coût logistique LC/2026/0003 — 3 lignes de coûts additionnels avec leurs méthodes de répartition
Formulaire LC/2026/0003 — 3 lignes de coût, chacune sa méthode de répartition.

Le total se calcule automatiquement : 333 000,00 DA.

Optionnel mais recommandé : renseigne Facture fournisseur pour lier directement ce landed cost à la facture réelle du transitaire, et garder la traçabilité documentaire.

9. Calculer la répartition et valider

Après saisie des lignes, clique Calculer — Odoo génère l'onglet Correction de valorisation avec une ligne par produit × ligne de coût. Chaque ligne montre : ancienne valeur, coût additionnel réparti, nouvelle valeur.

Landed cost LC/2026/0003 validé — lignes avec coûts additionnels et méthodes de répartition
LC/2026/0003 en état Publié après clic sur Valider — corrections appliquées.

Pour notre container : trois ajustements d'affilée, tous sur le serveur R3. Le total de la colonne Correction fait bien 333 000 DZD (cohérence budgétaire). Si tu avais plusieurs produits, tu pourrais encore ajuster manuellement avant de valider.

Clic Valider. Le statut passe de Brouillon à Publié. Deux choses se passent automatiquement : le standard_price du produit est recalculé, et l'écriture comptable est créée.

10. L'écriture comptable — Débit stock, Crédit charges

Le nouveau coût du serveur R3 passe de 150 000 DZD à 183 300 DZD par unité. La valorisation du stock monte à 1 833 000 DZD. L'écriture comptable générée, dans le journal Valorisation d'inventaire, présente une structure en trois paires Débit/Crédit — une par ligne de coût.

Écriture comptable STJ/2026/04/0003 Odoo 19 — 6 lignes (3 paires Débit/Crédit) totalisant 333 000 DZD
Écriture STJ/2026/04/0003 — 310000 au débit (stock), 600000 au crédit (charges), pour chaque ligne de coût.
  • Débit 310000 Matières premières et fournitures — enrichissement du stock
  • Crédit 600000 Achats de marchandises vendues — contrepartie (ou le compte de charge défini sur le service)

Si une partie du stock avait déjà été sortie avant le landed cost (ex. 2 serveurs vendus sur les 10 reçus), Odoo n'enrichit que la valeur des remaining_qty en stock. La part des 2 serveurs déjà partis est soit envoyée au COGS (Cost of Goods Sold — coût des marchandises vendues, compte 600 dans le plan SCF DZ), soit perdue selon la configuration — c'est pour ça qu'il faut passer les landed costs rapidement après réception.

11. Réutiliser les services de coût — le secret du gain de temps

Un coût logistique, dans Odoo, est un produit de type Service marqué comme utilisable en landed cost. Karim a créé trois services en une fois (Transport maritime DDP, Droits de douane 5%, Assurance cargo) avec une méthode de répartition par défaut par service. L'intérêt : ils sont réutilisables sur tous les prochains Landed Costs.

Fiche Service Transport maritime DDP Odoo 19 — option Est un coût logistique cochée, méthode de répartition Par quantité
Service Transport maritime DDP — option Est un coût logistique + répartition par défaut Par quantité.

On peut aussi leur associer un Compte de charge spécifique (6241 Transports, 6351 Droits de douane, 6161 Assurances) pour affiner la comptabilité analytique selon le plan comptable SCF algérien.

12. Les pièges à éviter

⚠️ Coût standard = landed cost impossible — si tu tentes d'appliquer un landed cost sur un produit en méthode Coût standard, Odoo lève un UserError : « Landed costs can only be applied for products with FIFO or average costing method ». Pas de contournement, il faut passer la catégorie en AVCO ou FIFO AVANT la réception.
⚠️ Valorisation manuelle = pas d'écriture auto — sur une catégorie en Valorisation de l'inventaire : Manuelle, le calcul de répartition fonctionne et le coût du produit est mis à jour, mais aucune écriture comptable n'est générée. Il faut basculer en Automatique et configurer les comptes (Compte de valorisation, Journal de stock).
⚠️ Landed cost validé = pas d'annulation — un landed cost en statut Publié ne peut plus être annulé (UserError: Validated landed costs cannot be cancelled). Pour corriger une erreur, Odoo suggère de créer un landed cost négatif pour compenser — mais c'est rarement propre. Vérifie deux fois avant de cliquer Valider.
⚠️ Un seul landed cost par transfert recommandé — rien n'empêche techniquement de faire plusieurs landed costs sur le même transfert (un pour le transport, un pour la douane, un pour l'assurance), mais cela démultiplie les écritures comptables et complique le lettrage. Préfère un seul landed cost avec plusieurs lignes de coût.

Bonnes pratiques InfoSphere

  • Catégorie dédiée Importation AVCO réservée aux produits venant de l'étranger — laisse les achats locaux en coût standard, plus simple et moins lourd en écritures comptables.
  • Services de coût réutilisables — une seule fois créés (Transport / Douane / Assurance), réemployés sur chaque prochain container. Gagne 5 minutes à chaque import.
  • Méthode de répartition adaptée au type de fraisPar poids pour le fret, Par coût actuel pour la douane, Égal pour les petits frais fixes. Évite la tentation du Par quantité qui fausse les marges sur livraisons hétérogènes.
  • Landed cost dans les 24h de la réception pour limiter le risque qu'une partie du stock soit déjà sortie et échappe à l'enrichissement.
  • Lie toujours la Facture fournisseur du transitaire au landed cost : tracking documentaire pour les audits fiscaux, surtout pour la ligne Droits de douane qui justifie une exonération TVA sur import.

À retenir

🚢 Qu'est-ce qu'un landed cost ?

Un frais d'approche (transport, douane, assurance, manutention) qu'on répartit sur la valeur des produits après leur réception. Les marges deviennent honnêtes, la valorisation du stock reflète le coût réel.

⚙️ Prérequis non négociables

Module stock_landed_costs activé, catégorie produit en AVCO ou FIFO, valorisation Automatique, et produits Services dédiés pour chaque ligne de frais.

📐 5 méthodes de répartition

Égal, Par quantité, Par poids, Par volume, Par coût actuel. Chaque ligne de coût peut en choisir une différente. Poids et volume sur la fiche produit — sinon répartition faussée.

💰 Impact automatique

Validation → standard_price recalculé selon la méthode AVCO, écriture comptable Débit stock (310000) / Crédit charges (6xxx) dans le journal Valorisation d'inventaire.

Prochaine étape : combien valent tes stocks à cet instant T ?

Les frais d'import sont maintenant répartis. Mais une fois que tes 10 serveurs valent 183 300 DZD l'unité, que se passe-t-il quand tu en reçois 5 de plus à un autre prix ? C'est la méthode de valorisation qui tranche — Standard, FIFO ou AVCO. Direction la Partie 3/4 pour la démo chiffrée.

Partie 3/4 — Valorisation de stock

🛒 Approfondir — Achats & Fournisseurs

Autres articles du même domaine :

Les achats

Acheter & Vendre

Contrats-cadres & Appels d'offre

Maîtriser les Achats

Articles complémentaires

Sur les mêmes thématiques : #intermediaire#cas-pratique

Recrutement RH

👥 Ressources humaines · Saison 4

Congés & Présence RH

👥 Ressources humaines · Saison 4

Site vitrine

🛍 Site web & eCommerce · Saison 5

Maîtriser les Achats & Approvisionnements dans Odoo 19 — Partie 1/4 : Contrats-cadres et appels d'offre
Saison 8 · Article 1/4 — Achats & Approvisionnements