Se rendre au contenu

Plan comptable par société dans Odoo 19 Community

Saison 12 · Article 3/7 · Hub Configuration
6 juin 2026 par
Plan comptable par société dans Odoo 19 Community
B.Mustapha
| Aucun commentaire pour l'instant

Saison 12 · Article 3/7 · Administrer Odoo 19 CE

Plan comptable par société dans Odoo 19 Community

Multi-société sans plan comptable distinct par entité = aucune sens. Odoo 19 isole comptes, journaux, taxes et exercice fiscal au niveau res.company. Cet article cadre le natif Community : choisir la localisation comptable par pays via le nouveau champ chart_template, lire le plan SCF d'une filiale algérienne, comprendre les journaux générés automatiquement, paramétrer les taxes par défaut, et — surtout — manipuler les cinq verrous de date v19 qui sécurisent la clôture. Pas de consolidation, pas d'exports légaux complexes : ces sujets sortent du périmètre Community natif.

Ce que tu vas apprendre

Choisir une localisation par société

En Odoo 19, la localisation fiscale se choisit société par société. Comment charger le plan SCF DZ ou un autre pays, et pourquoi la localisation fiscale est distincte du pays légal.

Lire journaux et taxes générés

9 journaux types (Sales, Purchases, Bank, Cash, Misc…), taxes vente/achat par défaut, séquences préfixées par société. Le contrat de base d'une compta CE qui tient debout.

Maîtriser les 5 verrous v19

fiscalyear_lock_date, tax_lock_date, sale_lock_date, purchase_lock_date, hard_lock_date — la granularité v19 pour figer la TVA sans bloquer les ventes en cours, et le verrou irréversible qui ferme un exercice clos.

1. Pourquoi chaque société porte son propre plan comptable

Une fois plusieurs sociétés créées (cf. l'article ADM·1), chaque entité juridique a besoin de tenir sa propre comptabilité. Cela suppose un plan comptable distinct — autrement dit une grille de comptes propre à la société, avec son propre référentiel fiscal et ses propres taxes. Odoo 19 modélise tout cela au niveau res.company :

  • account.account — chaque ligne du plan est rattachée à une (ou plusieurs) sociétés via company_ids.
  • account.journal — chaque journal appartient à une seule société (champ company_id M2o).
  • account.tax — pareil, company_id M2o.
  • res.company porte la configuration comptable : exercice fiscal, taxes par défaut, devises, verrous de date.

Conséquence pratique : une facture émise depuis la société active n'utilise jamais les comptes ou les journaux d'une autre société du groupe. La règle d'enregistrement globale company_id in user.company_ids (cf. ADM·2 §5) ferme la porte côté ORM, et l'isolation des journaux ferme la porte côté UI.

📖 Définition — la localisation comptable

En Odoo, une localisation est un module l10n_xx (où xx est le code pays ISO) qui apporte trois choses : (a) un chart template qui pré-charge un plan comptable, des journaux, des taxes et des positions fiscales adaptés au droit local, (b) éventuellement des fiscal positions typiques du pays, (c) des modules satellites (POS, e-invoicing, déclarations légales). Charger une localisation revient à instancier ces données pour une société donnée.

2. Rattacher une société à sa localisation fiscale

En Odoo 19, le plan comptable d'une société n'est plus un enregistrement que l'on choisit dans une liste : il se rattache via le champ Localisation fiscale de la société, qui prend une valeur par pays — Algérie, France, Maroc, Belgique, plan générique, SYSCOHADA… Charger ce pack instancie d'un coup le plan de comptes, les journaux, les taxes et les positions fiscales du pays pour la société active.

Tout se pilote depuis l'écran de configuration, sans intervention technique. Côté UI, l'écran Paramètres → Facturation expose la section Localisation fiscale : un pack pays s'affiche avec un bouton Recharger, suivi des taxes par défaut et de la devise principale de la société active. C'est l'écran à mémoriser pour vérifier qu'une société est bien rattachée à sa localisation :

Settings Facturation — Localisation fiscale Algérie, taxes par défaut, devise DZD
Figure 1 — Paramètres Facturation : pack Algérie chargé, taxes par défaut 19% B Prod (vente) et 19% (achat), pays d'imposition Algérie, devise principale DZD. Cette section est spécifique à la société active : changer de société via le switcher topbar (cf. ADM·1) recharge la page avec un pack différent.

3. Lire le plan comptable — exemple SCF algérien

Une fois la localisation chargée, le plan comptable apparaît sous Comptabilité → Configuration → Plan comptable. Pour une société algérienne sous l10n_dz, ce sont environ 300 comptes pré-créés, organisés en classes selon le Système Comptable Financier (SCF) :

  • Classes 1-2 : capitaux, immobilisations
  • Classes 3-5 : stocks, tiers, financiers
  • Classe 6 : charges (achats, services extérieurs, impôts, personnel, dotations)
  • Classe 7 : produits (ventes, production stockée, subventions, financiers)

Le filtre par classe permet d'inspecter ce qui a été généré. Voici, par exemple, les comptes de la classe 6 pour une société algérienne — tous attribués à la société active via la colonne Sociétés :

Plan comptable filtré classe 6 charges — comptes 600000 à 626000
Figure 2 — Plan comptable filtré sur le code « 6 » : 58 comptes de charges visibles, du 600000 « Achats de marchandises vendues » au 626000 « Frais postaux et de télécommunications ». Colonne Type = Charges, colonne Sociétés = Démo SARL France. Chaque ligne porte aussi Lettrage et Devise du compte.

Le formulaire d'un compte expose les champs structurants :

Formulaire compte 700000 Ventes de marchandises — type Revenus, société Démo SARL France
Figure 3 — Compte 700000 « Ventes de marchandises ». Champ Type = Revenus. Champ Sociétés = Démo SARL France — en Odoo 19, un même compte peut être rattaché à plusieurs sociétés. Groupe rattache le compte à la section « 70 Ventes de marchandises ». Bouton Solde = -481 000,00 (lecture rapide).

📖 Bon à savoir — un compte partagé entre sociétés

En Odoo 19, un même compte du plan peut appartenir à plusieurs sociétés. C'est utile pour des comptes mutualisés au sein d'un groupe — par exemple une banque centralisée ou des comptes de virement entre filiales.

4. Les journaux par société — neuf journaux types

Chaque localisation chargée génère un jeu de journaux types — typiquement neuf pour une société CE complète : Ventes (FAC), Achats (FACTU), Banque (BNK1), Caisse (CSH1), Opérations diverses (OD), Différence de change (EXCH), TVA sur encaissements (CABA), Valorisation d'inventaire (STJ), Point de Vente (POSS).

Liste des 9 journaux d'une société algérienne — codes FAC FACTU BNK1 OD…
Figure 4 — Liste des 9 journaux d'une société algérienne sous l10n_dz. Colonnes Nom du journal, Type (Ventes, Achats, Banque, Espèces, Divers), Préfixe de la Séquence et Compte par défaut. Chaque journal pointe vers son compte de contrepartie standard (ex : FAC → 700000 Ventes, FACTU → 600000 Achats, BNK1 → 512001 Banque, CSH1 → 530001 Caisse).

Le formulaire d'un journal de vente expose la configuration essentielle :

Formulaire journal Sales FAC — type vente, séquence, comptes par défaut
Figure 5 — Journal « Ventes » (code FAC). Le type Ventes bloque le champ aux factures clients. La séquence de numérotation est propre au journal — chaque société aura sa propre séquence, et le format peut intégrer la société, l'exercice et un compteur (cf. ADM·5).

🎯 À retenir — un journal = une société

Contrairement à account.account qui peut être partagé via company_ids, un journal reste strictement mono-société (company_id Many2one). C'est cohérent avec le fait qu'un journal porte une séquence de numérotation — qui doit rester unique par entité juridique pour respecter les obligations légales de chronologie.

5. Les taxes par société — vente, achat, et taux multiples

Chaque société porte ses propres taxes, isolées par société. Chaque taxe est typée vente, achat ou aucun — ce dernier type servant de composant pour des taxes parentes (taxes en cascade).

Pour une société algérienne, la TVA standard est de 19 % en vente, avec des taux réduits (9 %, 0 %) pour certains produits et services. La l10n_dz instancie ces taux automatiquement :

Taxes vente DZ — 19% G Prod, 9% G, 0% G, 19% G Resale, 19% OS…
Figure 6 — Taxes de vente sous l10n_dz. Lignes 19% G Prod (TVA standard produits), 9% G (taux réduit), 19% G Resale (revente), 19% OS (opérations spéciales). Chaque taxe expose son montant et son type d'usage (Ventes ici, filtrage actif sur la liste).

Les taxes par défaut de la société (une en vente, une en achat) se règlent au niveau de la société — c'est ce qu'on a vu en Figure 1. Une nouvelle ligne de devis créée sur Démo SARL France héritera de ce taux 19 % en vente, sauf si le produit force une autre taxe via sa propre configuration.

6. Exercice fiscal & les 5 verrous de date v19

L'exercice fiscal est défini par deux champs sur res.company : fiscalyear_last_day (Integer, défaut 31) et fiscalyear_last_month (Selection, défaut décembre). Soit un exercice qui clôture le 31/12 par défaut. Pour un exercice décalé (clôture au 30/06 par exemple), ces deux champs suffisent — Odoo en déduit les bornes des rapports comptables.

La grosse nouveauté v19 concerne les verrous de date qui passent de deux à cinq. Voici l'arborescence complète :

  • fiscalyear_lock_dateGlobal Lock Date. Aucune écriture ne peut être créée ou modifiée jusqu'à cette date, tous journaux confondus. C'est le verrou qu'on pose après une clôture fiscale.
  • tax_lock_dateTax Lock Date. Verrou spécifique aux écritures portant de la TVA. Posé automatiquement après chaque clôture de période TVA.
  • sale_lock_dateNEW v19. Verrou granulaire pour les journaux de type vente. Utile quand on veut figer la facturation client sur un trimestre sans bloquer la saisie côté achats.
  • purchase_lock_dateNEW v19. Symétrique du précédent, côté journaux d'achat.
  • hard_lock_dateNEW v19, IRRÉVERSIBLE. Aucun administrateur ne peut le retirer ou le contourner par exception. C'est le verrou pour archiver définitivement un exercice clos et audité.

Les modifications de verrou sont tracées dans le chatter de la société — chaque changement est journalisé par utilisateur, avec ancienne et nouvelle valeur :

Société Démo SARL Holding — chatter affichant verrouillage global 31/12/2025 et TVA 31/03/2026
Figure 7 — Formulaire société (ici Démo SARL Holding, devise MAD, pays Maroc). Le chatter à droite affiche les deux changements de verrou de date appliqués : Aucun → 31/12/2025 pour la Date de verrouillage globale, et Aucun → 31/03/2026 pour la Date de verrouillage de la TVA. Chaque société porte ses propres dates de verrou — c'est une configuration par res.company, pas globale à la base.

7. Au-delà du natif — la frontière premium

Tout ce qui précède relève du natif Community. Plusieurs sujets restent volontairement hors périmètre :

  • Consolidation comptable multi-société — agrégation des plans des filiales en un bilan groupe. Totalement absente en CE, réservée à l'édition Enterprise.
  • Positions fiscales complexes — neutralisations intra-CEE, exonérations conditionnelles, écritures de redressement TVA. Le mécanisme natif des positions fiscales existe, mais sa configuration fine dépasse le cadrage d'administration.
  • Clôture annuelle automatisée — génération des écritures de clôture (résultat, soldes), réouverture, états comparatifs N/N-1. Workflow complet.
  • Cash basis accounting — paramétrage du journal CABA, gestion des écritures de transition, impacts sur la TVA déclarée.
  • Multi-devise avancé — pivotement automatique des écritures, écarts de change réalisés vs latents.
  • Exports légaux par pays — FEC français, taxonomie XBRL, formats e-invoicing nationaux.

Le présent article suffit néanmoins pour démarrer proprement la compta d'une PME multi-société sur Community.

8. Checklist setup plan comptable par société

À appliquer dès la création d'une nouvelle société dans la base :

  1. Vérifier que la société a un country_id avant de charger sa localisation. Le module l10n_xx auto-suggéré dépend du pays légal.
  2. Choisir explicitement le chart_template via Paramètres → Facturation → Localisation fiscale, et utiliser Recharger en cas d'évolution de l10n. Ne jamais laisser une société avec un chart vide en production.
  3. Confirmer la devise principale au moment de charger le chart — un changement ultérieur de devise sur une société qui a déjà des écritures est très difficile à rattraper.
  4. Renommer les journaux génériques si plusieurs sociétés du groupe utilisent les mêmes codes (FAC, FACTU…) — sinon les exports CSV deviennent ambigus.
  5. Définir fiscalyear_last_day et fiscalyear_last_month dès le départ. Une fois des écritures saisies, l'exercice est implicite et difficile à modifier sans rejouer la clôture.
  6. Poser fiscalyear_lock_date après chaque clôture, et tax_lock_date après chaque clôture de période TVA. Ne pas attendre la fin d'année.
  7. Garder hard_lock_date pour la fin — exercice définitivement clos, audité, comptes déposés. Pas avant.

🎯 À retenir

La compta Odoo CE multi-société tient sur quatre briques : (1) chart_template qui charge le plan par pays, (2) account.journal + account.tax isolés par company_id, (3) exercice fiscal défini par jour/mois sur res.company, (4) cinq verrous de date pour figer ce qui doit l'être. Les sujets de consolidation et clôture automatisée arrivent après.

Voir aussi dans le hub Configuration

Saison 12 · ADM·2

Utilisateurs, groupes & droits d'accès

Le prérequis : qui peut écrire dans quels journaux comptables, et la règle d'isolation multi-société.

Saison 1 · F47

La comptabilité dans Odoo 19 — SCF DZ

Plongée détaillée dans le plan comptable algérien et les écritures-types de base.

Saison 2 · F48

Facturation et paiements dans Odoo 19

Comment journaux et taxes par défaut s'appliquent automatiquement sur une facture client.

Pour aller plus loin côté technique

  • Blog Technique Odoo — articles sur les modules l10n custom et la migration v18→v19 des chart templates.
  • Hub Configuration du blog fonctionnel — toute la série Administrer Odoo 19 CE et les fondamentaux multi-société.

Saison 12 — Administrer Odoo 19 CE · 3 / 7

Se connecter pour laisser un commentaire.
Utilisateurs, groupes et droits d'accès dans Odoo 19 Community
Saison 12 · Article 2/7 · Hub Configuration