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.

Les écrans vivent sous /workspace/accounting/*. Côté API, le domaine est éclaté en plusieurs racines : /api/workspace/accounting/* (clôture, exports, provisions, amortissement mensuel), /api/workspace/accounting-codes/* (plan comptable), /api/workspace/fixed-assets/* (immobilisations) et /api/workspace/supplier-invoices/[id]/allocations (affectation analytique des charges). 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, PURCHASE, SERVICE, COMMISSION, INSURANCE, MAINTENANCE, FINANCIAL, BUYBACK, OTHER.
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).
Affectation des charges/workspace/supplier-invoices/[id] (onglet allocation)Affectation analytique d'une facture (nature, affaires/hors affaires, exercice, trimestre, contrat/affaire/client/site) + ventilation charge réseau ligne à ligne.
Immobilisations/workspace/fixed-assetsDataTable (code, valeur brute, amortissement cumulé, VNC, statut) + fiche plan d'amortissement + événements.
Clôture annuelle/workspace/accounting/closings/dashboard + /workspace/accounting/cutoff/[fiscalYearClosingId]Tableau de bord de complétude par exercice/entité ; proposition de cut-off (provisions FNP/CCA/CAP/AAR), apurement, verrouillage.
Exports & états/workspace/accounting/exportsExport FEC et pivot Proginov, vérifications.

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

Les routes exigent une permission accounting.* (plan comptable, immobilisations, clôture / exports), purchasing.* (affectation analytique des charges, portée par le domaine facture fournisseur) ou finance.* (provisions). Permission vérifiée côté API et UI.

Plan comptable (/api/workspace/accounting-codes) :

MéthodeRoutePermission
GET/api/workspace/accounting-codesaccounting.code:read
GET/api/workspace/accounting-codes/[id]accounting.code:read
POST/api/workspace/accounting-codesaccounting.code:manage
PATCH/api/workspace/accounting-codes/[id]accounting.code:manage

Affectation analytique des charges (portée par la facture fournisseur — une affectation = une ligne SupplierInvoiceAllocation) :

MéthodeRoutePermission
GET/api/workspace/supplier-invoices/[id]/allocationspurchasing.invoice:read
POST/api/workspace/supplier-invoices/[id]/allocationspurchasing.invoice:create
DELETE/api/workspace/supplier-invoice-allocations/[id]purchasing.invoice:create

Immobilisations (/api/workspace/fixed-assets) :

MéthodeRoutePermission
GET/api/workspace/fixed-assetsaccounting.asset:read
GET/api/workspace/fixed-assets/[id]accounting.asset:read
POST/api/workspace/fixed-assetsaccounting.asset:manage
PATCH/api/workspace/fixed-assets/[id]accounting.asset:manage
POST/api/workspace/fixed-assets/[id]/commissionaccounting.asset:manage
POST/api/workspace/fixed-assets/[id]/amortizationaccounting.asset:manage

Clôture, amortissement mensuel, provisions & exports :

MéthodeRoutePermission
POST/api/workspace/accounting/fiscal-year-closings/[id]/propose-cutoffaccounting.closing:manage
POST/api/workspace/accounting/run-monthly-depreciationaccounting.closing:manage
GET/api/workspace/accounting/provisions/pending-apurementfinance.invoice:read
POST/api/workspace/accounting/provisions/[id]/consumefinance.invoice:manage
POST/api/workspace/accounting/export-fecaccounting.closing:manage
POST/api/workspace/accounting/export-pivot-proginovaccounting.closing:manage

Le domaine couvre aussi le rapprochement bancaire (bank-accounts, bank-operations, bank-sync), la TVA EDI (vat-returns, edi-submissions), la paie (payroll-imports, payroll-mappings), les loyers (rent-reconciliations) et les rapprochements intragroupe (intragroup-reconciliations) sous /api/workspace/accounting/* — hors périmètre de cette page analytique.

Exemple de référence d'endpoint :

POST/api/workspace/supplier-invoices/[id]/allocationsAuth

Ajoute une ligne d'affectation analytique à une facture fournisseur. Chaque appel crée une ligne SupplierInvoiceAllocation ; la ventilation d'une charge réseau se fait par appels successifs. Le service refuse toute affectation qui ferait dépasser le totalHt de la facture (garde-fou de somme) et renvoie le récapitulatif (lignes + reste à affecter). Le GET même chemin liste les affectations existantes avec ce récapitulatif ; la suppression d'une ligne passe par DELETE /api/workspace/supplier-invoice-allocations/[id].

Corps (JSON)

amountHt
number required
Montant HT de la ligne d'affectation (positif).
accountingCodeId
string
Nature de prestation (AccountingCode).
leaseContractId
string
Contrat de rattachement.
leaseAffairId
string
Affaire de rattachement.
establishmentId
string
Site / établissement de rattachement.
fiscalYear
number
Exercice d'affectation (ex. 2025). Peut différer de l'exercice de comptabilisation.
quarterTag
string
Trimestre analytique (Q1 / Q2 / Q3 / Q4).
notes
string
Commentaire libre.

Requête

curl -s -X POST "$API/api/workspace/supplier-invoices/$INVOICE_ID/allocations" \
  -H "Content-Type: application/json" -H "Cookie: $SESSION" \
  -d '{"amountHt":1200,"accountingCodeId":"code_xxx","fiscalYear":2025,"leaseContractId":"lease_xxx"}'

Réponse

{
  "items": [
    { "id": "alloc_…", "supplierInvoiceId": "inv_…", "amountHt": 1200, "accountingCodeId": "code_xxx", "fiscalYear": 2025, "leaseContractId": "lease_xxx" }
  ],
  "invoiceTotalHt": 1200,
  "allocatedHt": 1200,
  "remainingHt": 0,
  "fullyAllocated": true
}

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 (une ligne par POST .../allocations, 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.
  • Mise en service d'un bien IN_PROGRESSPOST /fixed-assets/[id]/commission (transition vers ACTIVE, démarre l'amortissement).
  • Dotation aux amortissements pour un exercice → POST /fixed-assets/[id]/amortizationFixedAssetEvent de type AMORTIZATION (méthode linéaire par défaut). L'amortissement mensuel global du parc se déclenche via POST /accounting/run-monthly-depreciation.
  • 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.