Comptabilité analytique

Référence technique du domaine Comptabilité analytique & clôture — plan comptable, affectation des charges, immobilisations, clôture annuelle, pivots.

Comptabilité analytique

Périmètre : plan comptable / natures de prestation, ventilation analytique des charges fournisseur (par exercice, trimestre, contrat, affaire, site, client), immobilisations, clôture annuelle (FNP / CCA / CAP / AAR / provisions) et pivots de contrôle. Ce domaine couvre la couche analytique qui se superpose à la comptabilité opérationnelle (journaux, TVA, exports légaux FEC) décrite dans docs/10-domain-sales-billing.md §3.15.

Tous les écrans et routes vivent sous /workspace/accounting/* et /api/workspace/accounting/*. Source de cette page : docs/23-domain-accounting.md.

Vocabulaire & entités

TermeEntitéDéfinition
Compte / Nature de prestationAccountingCodePoste analytique d'une charge (ex. 607010001 - CLLD Achats de marchandises).
Catégorie de compteAccountingCodeCategoryIMMOBILISATION, SERVICE, COMMISSION, PURCHASE, BUYBACK, INSURANCE, MAINTENANCE, FINANCIAL.
AffectationSupplierInvoiceAllocationRattachement d'une charge à un exercice, un trimestre, un contrat/affaire/client/site.
Enveloppe de financementEnsemble des factures fournisseur composant le capital financé d'un contrat de location.
Charge réseauCharge couvrant plusieurs contrats/sites, ventilée en plusieurs SupplierInvoiceAllocation dont la somme égale le total HT.
ImmobilisationFixedAssetBien inscrit à l'actif (comptes 215*), amorti sur une durée ; événements tracés dans FixedAssetEvent.
Événement d'immobilisationFixedAssetEventAMORTIZATION, REVALUATION, DISPOSAL, TRANSFER.
ClôtureFiscalYearClosingProcessus de fin d'exercice ; états : OPENIN_PROGRESSREVIEWCLOSED.
ProvisionAccountingProvisionÉcriture de régularisation : FNP (facture non parvenue), CCA (charge constatée d'avance), CAP (charge à payer), AAR (avoir à recevoir), risques, stock.
Exercice de rattachementExercice comptable d'imputation (peut différer de l'exercice de comptabilisation).

Le modèle complet est dans docs/04-data-model.md §16. La facture fournisseur enrichie est décrite en §8 (SupplierInvoice).

Écrans

ÉcranRouteContenu
Plan comptable/workspace/accounting/codesCRUD des AccountingCode (code, libellé, catégorie, flag immobilisation, actif/inactif, hiérarchie) + import/export.
Affectation des charges/workspace/accounting/allocationsFile de travail des factures à qualifier (nature, affaires/hors affaires, exercice, trimestre, contrat/affaire/client/site) + affectation en masse + ventilation charge réseau.
Immobilisations/workspace/accounting/fixed-assetsDataTable (code, valeur brute, amortissement cumulé, VNC, statut) + fiche plan d'amortissement + événements.
Clôture annuelle/workspace/accounting/closingSélection exercice/entité, tableau de bord de complétude, saisie provisions, apurement, verrouillage.
Pivots & états/workspace/accounting/reportsPivot exercice × compte × contrat/affaire, pivot compte × client × site, vérification inter-exercices, VERIF IMMO, retraitement de marge consolidée.

Modèle de données (points clés)

  • Le plan comptable est paramétrable par organisation : codes activables/désactivables, ajout de comptes custom. Un seed initial couvre 23 codes issus de l'existant (de 215410000 à 622100001).
  • Les comptes 215* (immobilisations) ne peuvent pas être affectés en charge directe : toute facture sur ce compte alimente obligatoirement un FixedAsset.
  • La somme des SupplierInvoiceAllocation d'une facture ventilée doit égaler son totalHt (contrôlé côté service).
  • Un exercice CLOSED est immuable : aucune affectation ni provision ne peut être modifiée ; les corrections passent par l'exercice ouvert suivant.
  • Une AccountingProvision référence son reversedInYear (exercice d'apurement) ; l'apurement est tracé et déclenché automatiquement à l'ouverture de l'exercice suivant.
  • L'exercice de rattachement peut différer de l'exercice de comptabilisation (charges sur exercice antérieur).

API

Toutes les routes exigent une permission accounting.* (vérifiée côté API et UI).

MéthodeRoutePermission
GET/api/workspace/accounting/codesaccounting.code:read
POST/api/workspace/accounting/codesaccounting.code:create
PATCH/api/workspace/accounting/codes/[id]accounting.code:update
GET/api/workspace/accounting/allocationsaccounting.allocation:read
PATCH/api/workspace/accounting/allocations/[invoiceId]accounting.allocation:update
GET/api/workspace/accounting/fixed-assetsaccounting.fixed_asset:read
POST/api/workspace/accounting/fixed-assetsaccounting.fixed_asset:create
POST/api/workspace/accounting/fixed-assets/[id]/eventsaccounting.fixed_asset:update
GET/api/workspace/accounting/closingsaccounting.closing:read
POST/api/workspace/accounting/closingsaccounting.closing:create
POST/api/workspace/accounting/closings/[id]/provisionsaccounting.closing:update
POST/api/workspace/accounting/closings/[id]/closeaccounting.closing:close
GET/api/workspace/accounting/reports/pivotaccounting.report:read

Exemple de référence d'endpoint :

PATCH/api/workspace/accounting/allocations/[invoiceId]Auth

Affecte ou met à jour l'analytique d'une facture fournisseur validée (nature de prestation, exercice, rattachements).

Corps (JSON)

accountingCodeId
string required
Nature de prestation (AccountingCode).
fiscalYear
number required
Exercice d'affectation (ex. 2025). Peut différer de l'exercice de comptabilisation.
quarterTag
string
Trimestre analytique (Q1 / Q2 / Q3 / Q4).
isAffaire
boolean
true = charge rattachée à un contrat/affaire ; false = frais généraux.
leaseContractId
string
Contrat de rattachement (optionnel si isAffaire = true).
allocations
array
Ventilation charge réseau : liste { leaseContractId, amountHt }. La somme doit égaler totalHt de la facture.

Requête

curl -s -X PATCH "$API/api/workspace/accounting/allocations/$INVOICE_ID" \
  -H "Content-Type: application/json" -H "Cookie: $SESSION" \
  -d '{"accountingCodeId":"code_xxx","fiscalYear":2025,"isAffaire":true,"leaseContractId":"lease_xxx"}'

Réponse

{ "id": "inv_…", "accountingCodeId": "code_xxx", "fiscalYear": 2025, "isAffaire": true, "leaseContractId": "lease_xxx" }

Workflows

Affectation d'une facture fournisseur

À la validation comptable d'une SupplierInvoice :

  1. Saisie de la nature de prestation (accountingCodeId) — obligatoire.
  2. Indicateur Affaires / Hors affaires.
  3. Exercice d'affectation (fiscalYear) — obligatoire.
  4. Trimestre (quarterTag) pour l'analytique trimestriel.
  5. Rattachement à un contrat ou une affaire, un client, un site.
  6. Indicateur d'inclusion dans l'enveloppe de financement.
  7. Si charge réseau : ventilation en plusieurs SupplierInvoiceAllocation (somme contrôlée = total HT).

Une facture non affectée bloque la clôture de son exercice.

Gestion des immobilisations

  • Facture sur compte 215* → génère ou alimente un FixedAsset.
  • Dotation annuelle → FixedAssetEvent de type AMORTIZATION (méthode linéaire par défaut).
  • Cession / mise au rebut → FixedAssetEvent de type DISPOSAL, sortie de l'actif.

Clôture annuelle

OPEN
  │  (lancement de la clôture)
  ▼
IN_PROGRESS
  │  (contrôles : factures affectées, écarts résolus)
  │  (saisie/génération provisions : FNP / CCA / CAP / AAR / risques / stock)
  ▼
REVIEW
  │  (validation direction financière)
  ▼
CLOSED   (exercice verrouillé — provisions immuables)

À l'ouverture de l'exercice suivant : apurement automatique des provisions (reprise). Les écritures de régularisation alimentent l'export comptable vers l'outil externe (FEC / Sage / Cegid / Pennylane).

Contrôle inter-exercices

À chaque clôture : comparaison des montants par compte avec le fichier de clôture N-1. Les écarts sont listés avec une zone d'analyse à renseigner (reclassements, corrections).

Règles métier

  • Une SupplierInvoice validée doit porter une nature de prestation et un exercice d'affectation.
  • La somme des SupplierInvoiceAllocation d'une facture ventilée doit égaler son totalHt.
  • Exercice CLOSEDaucune modification possible (affectation ni provision) ; les corrections passent par l'exercice suivant.
  • Comptes 215* → alimentent uniquement un FixedAsset, jamais une charge directe.
  • Toute affectation et toute écriture de clôture → audit log systématique.
  • Apurement de provision → tracé via reversedInYear.

Notifications

ÉvénementCanalDestinataire
Facture à affecterIn-appComptable
Clôture lancéeIn-appDirection financière
Factures non affectées bloquant la clôtureIn-app + emailComptable
Exercice clôturéIn-app + emailDirection financière
Apurement de provisions disponibleIn-appComptable

KPIs

Taux de factures affectées · charges par compte/exercice/contrat · montant des provisions par type (FNP / CCA / CAP / AAR) · valeur nette comptable du parc d'immobilisations · écarts inter-exercices non résolus · marge consolidée par contrat réseau.