Ce que tu vas apprendre
3 méthodes CE
Standard / FIFO / AVCO — laquelle pour quelle catégorie de produits InfoSphere.
Real_time vs Periodic
Valorisation automatique vs saisie manuelle mensuelle — impact sur les écritures.
Fil rouge AVCO chiffré
T0 → T1 → T2 : comment l'AVCO passe de 183 300 à 187 200 DZD puis sort le COGS.
Changements v19
stock.valuation.layer supprimé, comptes input/output retirés : ce qu'Odoo a cassé.
1. Où on en est : 10 serveurs à 183 300 DZD l'unité
Dans la Partie 2/4, Inès a appliqué un landed cost de 333 000 DZD sur la première réception ImportEquip. Résultat : les 10 serveurs InfoRack Server R3 2U entrés à 150 000 DZD valent désormais 183 300 DZD l'unité. La valorisation du stock affichée au bilan est de 1 833 000 DZD.
Karim est content. Mais Inès lui pose la question qui tue : « Et quand on va en réceptionner 5 de plus la semaine prochaine, à 195 000 DZD cette fois — sans landed cost parce qu'on prend l'Incoterm DDP complet — comment Odoo va combiner les deux lots ? Est-ce qu'on vend d'abord les anciens à 183 300 puis les nouveaux à 195 000 ? Ou bien on fait une moyenne ? Ou bien on fige la valeur manuellement ? »
C'est exactement la question à laquelle répond la méthode de valorisation d'inventaire. Trois choix en CE, un seul par catégorie produit, et chacun a des conséquences comptables et fiscales différentes.
2. Standard, FIFO, AVCO — décider en 5 minutes
Odoo 19 CE propose trois méthodes de valorisation. Chacune répond à une logique différente pour calculer le coût unitaire au moment où tu sors un produit du stock.
| Méthode (FR v19) | Code technique | Logique | Bon usage |
|---|---|---|---|
| Coût standard | standard |
Coût unitaire fixé manuellement, ne bouge jamais sauf intervention humaine | Produits à prix stable (fournitures bureau, consommables locaux) |
| Premier entré, premier sorti (FIFO) | fifo |
On sort d'abord les plus anciennes couches au prix d'entrée de l'époque | Denrées périssables, produits traçables par lot, comptabilité stricte |
| Coût moyen pondéré (AVCO) | average |
Chaque entrée recalcule une moyenne pondérée, chaque sortie part à cette moyenne | Matières importées à prix variables, volumes élevés, fiscalité simplifiée |
Décision rapide pour InfoSphere :
- Fournitures bureau locales (stylos, cartouches imprimante, câbles Ethernet) — Coût standard. Prix stable, volume modeste, inutile de complexifier.
- Matériel informatique importé (serveurs R3, SSD, mémoires) — AVCO. Les prix fluctuent au gré du taux DZD/USD et des landed costs, la moyenne pondérée lisse naturellement.
- Accessoires reconditionnés avec numéros de série — FIFO. Traçabilité lot par lot exigée, chaque pièce conserve son coût d'origine.
Cette segmentation par catégorie suit la même logique que celle appliquée pour structurer l'inventaire de base — on ne configure pas une valorisation globale pour tous les produits, on applique une méthode par nature de marchandise.
Enterprise ajoute une quatrième méthode : le Coût moyen serial/lot (un AVCO calculé par lot ou série, pas par produit). En CE, le choix est limité aux trois ci-dessus — c'est déjà largement suffisant pour 95 % des cas.
3. Où ça se configure : la catégorie produit
Menu Inventaire → Configuration → Catégories de produits. Ouvre (ou crée) la catégorie concernée. Les trois champs qui comptent :
- Méthode de coût (
property_cost_method) — Standard / FIFO / AVCO - Valorisation de l'inventaire (
property_valuation) — Manuelle / périodique (pas d'écritures automatiques, saisie comptable mensuelle) vs Automatisée (real_time — écritures générées à chaque mouvement de stock) - Compte de valorisation des stocks
(
property_stock_valuation_account_id) + Journal d'écritures (property_stock_journal) + Compte d'écart de prix (property_price_difference_account_id)
Configure une fois, oublie pour toujours. Les écritures suivantes reprennent automatiquement les comptes de la catégorie — pas besoin de les préciser sur chaque produit ou chaque réception. Pour les entreprises algériennes, rattache ces comptes au plan comptable SCF : 310000 pour la valorisation du stock de matières premières, 600000 pour les contrepartie d'achats.
4. Fil rouge : la 2ᵉ réception fait basculer l'AVCO
Retour sur InfoSphere. Une semaine après le container initial, ImportEquip propose un
réassort : 5 serveurs R3 supplémentaires à 195 000 DZD l'unité, cette
fois en Incoterm DDP — frais d'import inclus, donc pas de landed
cost à recalculer. Karim confirme la commande, Inès réceptionne le transfert
ALG/IN/00007.
Voici ce qui se passe au moment précis de la validation de la réception, sans toucher à rien d'autre :
| Moment | Quantité en stock | AVCO unitaire | Valeur totale stock |
|---|---|---|---|
| T0 — après landed cost (Partie 2/4) | 10 u | 183 300,00 DZD | 1 833 000,00 DZD |
| T1 — réception de 5 u à 195 000 DZD | 15 u | 187 200,00 DZD | 2 808 000,00 DZD |
Le calcul derrière le rideau :
Nouvelle AVCO = (Valeur stock T0 + Valeur nouvelle entrée) / (Qty T0 + Qty nouvelle entrée)
= (1 833 000 + 5 × 195 000) / (10 + 5)
= (1 833 000 + 975 000) / 15
= 2 808 000 / 15 = 187 200,00 DZD
Le standard_price de la fiche produit passe automatiquement de 183 300 à
187 200 DZD à la seconde où le transfert ALG/IN/00007 est validé. C'est
visible à l'œil nu sur la fiche produit, rubrique Inventaire, champ
Coût.
5. Sortie client : le COGS part à la moyenne du moment
Trois jours plus tard, premier client qui commande : Réseau Plus
(intégrateur à Oran) prend 3 serveurs R3 à 230 000 DZD l'unité — vente catalogue
standard, sans remise. Bon de commande client S00008 créé, confirmé,
livraison ALG/OUT/00004 préparée et validée.
| Moment | Quantité | AVCO unitaire | Valeur stock | Chiffre d'affaires HT | COGS | Marge |
|---|---|---|---|---|---|---|
| T1 avant vente | 15 u | 187 200 | 2 808 000 | — | — | — |
| T2 après livraison 3 u | 12 u | 187 200 | 2 246 400 | 690 000 | 561 600 | 128 400 (18,6 %) |
Points à retenir sur cette sortie :
- Le COGS (Cost of Goods Sold, coût des marchandises vendues) sort à 3 × 187 200 = 561 600 DZD — pas à 3 × 183 300 (les plus anciens) et pas à 3 × 195 000 (les plus récents). En AVCO, il n'y a pas de couche : tout le monde part à la moyenne du moment de la sortie.
- L'AVCO unitaire ne bouge pas après la sortie (187 200 DZD inchangé). Une sortie ne recalcule l'AVCO que si elle modifie le ratio valeur/quantité — ce qui n'arrive que sur des corrections manuelles de valeur.
- La marge brute sur cette vente est calculée automatiquement par les rapports de vente à partir du couple prix catalogue / coût AVCO. Karim voit 18,6 % directement dans son pipeline — sans rien calculer à la main.
Et si Karim bascule la catégorie en FIFO au lieu d'AVCO, que se passe-t-il ? Sur la même vente de 3 u, le COGS partirait à 3 × 183 300 = 549 900 DZD (les anciennes couches d'abord), soit 140 100 DZD de marge (20,3 %). Ce n'est pas mieux ni moins bien : c'est une logique comptable différente. En période d'inflation des prix d'achat, AVCO protège les marges récentes, FIFO consomme d'abord les stocks anciens moins chers.
6. Sous le capot : ce qu'Odoo 19 a cassé avec stock.valuation.layer
Si tu reviens d'une v17 ou v18, accroche-toi : Odoo a purement et simplement
supprimé le modèle stock.valuation.layer en v19. Les SVL
qui traçaient chaque couche de valorisation (incoming / outgoing / revalorisation
manuelle) ont été remplacés par des champs directement portés par le
stock.move. Deux conséquences concrètes :
- Plus de modèle
stock.valuation.layer→ tes scripts RPC, personnalisations ou rapports qui interrogeaient ce modèle lèvent une erreurUserError: Object stock.valuation.layer doesn't exist. - Trois nouveaux champs sur
stock.move:value(valeur de la couche),remaining_qty(quantité encore en stock issue de ce mouvement),remaining_value(valeur encore en stock issue de ce mouvement, réévaluée en continu si AVCO). Unvalue_manualvient s'ajouter pour les corrections manuelles. - Nouveau modèle léger
product.valuepour tracer les modifications manuelles de coût (mise à jour du standard_price à la main, réévaluations d'exercice, inventaire tournant). - Nouveau rapport officiel Stock Valuation Report
(
stock_valuation_report) pour l'audit comptable des stocks — voir la documentation officielle Odoo 19 sur la valorisation d'inventaire.
Dans notre simulation, voici comment les trois stock.move du produit
InfoRack R3 2U ont été rebalancés automatiquement après la sortie de 3 u :
| Move | Type | Qty initiale | Valeur initiale | Remaining qty | Remaining value |
|---|---|---|---|---|---|
ALG/IN/00006 |
Entrée | 10 u | 1 833 000,00 | 7 u | 1 310 400,00 |
ALG/IN/00007 |
Entrée | 5 u | 975 000,00 | 5 u | 936 000,00 |
ALG/OUT/00004 |
Sortie | 3 u | 561 600,00 (COGS) | 0 | 0 |
Observe la colonne Remaining value : 1 310 400 + 936 000 = 2 246 400 DZD, ce qui correspond exactement aux 12 u × 187 200. Odoo a ré-attribué la valeur restante au prorata du coût moyen, même sur les anciennes couches. C'est ça, le cœur d'AVCO en v19 : pas de couches figées à l'origine, mais une continuité de la moyenne pondérée.
property_stock_account_input_categ_id et
property_stock_account_output_categ_id qui existaient sur
product.category en v18 ont été retirés en v19. Odoo dérive
désormais les comptes de contre-partie depuis la configuration du
picking_type ou du journal de stock. Les modules tiers qui surchargent
ces champs vont casser à la migration — c'est le chantier numéro un de toute
migration v18 → v19 qui touche à stock_account.
7. Changer de méthode en cours de route : le scénario qui fait peur
Un client te demande : « On est en Coût standard depuis 6 mois, on s'est rendu compte que nos prix d'achat fluctuent beaucoup, on voudrait passer en AVCO. » Que se passe-t-il si tu bascules la catégorie à chaud ?
Odoo 19 gère le cas proprement, mais il faut connaître les effets de bord :
- Au moment du changement, Odoo génère automatiquement une ré-évaluation des stocks existants à la valeur du moment (l'ancien standard_price est conservé comme valeur de départ AVCO).
- Si la catégorie passe en real_time alors qu'elle était en periodic, les écritures comptables commencent à se générer à partir du mouvement suivant — pas rétroactivement. Le stock en bilan au moment du changement est considéré comme « juste », Odoo ne refait pas l'historique.
- Les mouvements antérieurs gardent leur ancienne valeur. Les rapports
Stock Valuation Report (nouveau rapport officiel v19,
stock_valuation_report) affichent l'historique mixte — c'est voulu.
Pour InfoSphere, Karim a eu la bonne intuition dès le début : catégorie Importation AVCO dédiée pour les produits importés, Coût standard pour les consommables locaux. Pas de bascule à prévoir, pas de ligne de réévaluation à justifier en audit. C'est plus simple, c'est plus sain, et ça ne coûte rien à mettre en place au démarrage du projet.
À retenir
📐 3 méthodes en CE, une par catégorie
Standard pour les produits à prix stable, FIFO pour les produits traçables par lot, AVCO pour les matières importées à prix variables. Segmente tes catégories produit avant de cocher la case.
⚙️ Real_time = trois comptes à renseigner
Compte de valorisation + Journal de stock + Compte d'écart de prix, tous sur la product.category. Sinon : mouvement validé, coût mis à jour, mais aucune écriture comptable générée. Silencieux, dangereux.
🔢 AVCO en vrai — le calcul chiffré
10 u × 183 300 + 5 u × 195 000 = 2 808 000 / 15 = 187 200 DZD. Une sortie de 3 u valorise le COGS à 561 600 DZD. L'AVCO ne bouge pas après une sortie, seulement après une entrée.
💥 Refonte v19 — ce qui a changé
stock.valuation.layer supprimé,
valeurs portées par stock.move (value,
remaining_qty, remaining_value), nouveau modèle
product.value pour les corrections manuelles. Les comptes
input/output sur catégorie n'existent plus.
Prochaine étape : quand et combien recommander ?
Tu sais maintenant combien valent les produits en stock à chaque instant. Mais une autre question reste ouverte : quand faut-il en recommander, et en quelle quantité ? C'est là qu'entrent en jeu les points de commande, la route Make-to-Order et le scheduler quotidien d'Odoo.
Partie 4/4 — Planification d'approvisionnement
À publier prochainement — orderpoints, MTO vs MTS, replenishment dashboard, multi-fournisseurs.
🛒 Approfondir — Achats & Fournisseurs
Autres articles du même domaine :
Suite de la Saison 8 — Maîtriser les Achats
Articles complémentaires
Sur les mêmes thématiques : #intermediaire#cas-pratique
👥 Ressources humaines · Saison 4
👥 Ressources humaines · Saison 4
🛍 Site web & eCommerce · Saison 5