Skip to content
Learni
Voir tous les tutoriels
Finance et Développement

Comment implémenter la reconnaissance des revenus en 2026

Read in English

Introduction

La reconnaissance des revenus est un principe comptable clé qui détermine quand une entreprise peut enregistrer un revenu. En 2026, les normes IFRS 15 et ASC 606 restent essentielles pour les développeurs travaillant sur des systèmes financiers. Ce tutoriel vous guide pas à pas pour implémenter ces règles dans une application simple.

Prérequis

  • Node.js 18+
  • Connaissances basiques de TypeScript
  • Compréhension élémentaire de la comptabilité

Initialiser le projet

terminal
npm init -y
npm install typescript @types/node
npx tsc --init

Cette commande crée un projet TypeScript vide prêt à recevoir la logique de reconnaissance des revenus.

Définir le modèle de contrat

models/Contract.ts
export interface Contract {
  id: string;
  customerName: string;
  totalAmount: number;
  performanceObligations: number;
  startDate: Date;
  endDate: Date;
}

Ce type représente un contrat client selon IFRS 15 avec ses obligations de performance.

Implémenter la méthode des 5 étapes

revenue/recognizeRevenue.ts
import { Contract } from '../models/Contract';

export function recognizeRevenue(contract: Contract): number {
  const dailyRevenue = contract.totalAmount / 
    ((contract.endDate.getTime() - contract.startDate.getTime()) / (1000 * 3600 * 24));
  const daysElapsed = (new Date().getTime() - contract.startDate.getTime()) / (1000 * 3600 * 24);
  return Math.min(Math.max(0, dailyRevenue * daysElapsed), contract.totalAmount);
}

Cette fonction calcule le revenu reconnu linéairement sur la durée du contrat, base de la reconnaissance selon IFRS 15.

Créer un exemple de contrat

examples/sampleContract.ts
import { Contract } from '../models/Contract';
import { recognizeRevenue } from '../revenue/recognizeRevenue';

const contract: Contract = {
  id: 'C-2026-001',
  customerName: 'Client ACME',
  totalAmount: 12000,
  performanceObligations: 1,
  startDate: new Date('2026-01-01'),
  endDate: new Date('2026-12-31')
};
console.log(recognizeRevenue(contract));

Exemple complet exécutable qui affiche le montant de revenu reconnu à la date du jour.

Ajouter la validation des inputs

utils/validateContract.ts
import { Contract } from '../models/Contract';

export function validateContract(contract: Contract): boolean {
  if (contract.totalAmount <= 0) return false;
  if (contract.endDate <= contract.startDate) return false;
  return true;
}

Validation essentielle pour éviter les calculs erronés sur des contrats invalides.

Bonnes pratiques

  • Toujours valider les données de contrat avant calcul
  • Stocker les dates en UTC pour éviter les décalages
  • Séparer la logique métier des calculs financiers
  • Documenter chaque obligation de performance
  • Utiliser des tests unitaires pour chaque scénario

Erreurs courantes

  • Oublier de vérifier que la date de fin est postérieure à la date de début
  • Calculer le revenu sans tenir compte des obligations de performance multiples
  • Ignorer les contrats avec paiement anticipé ou échelonné
  • Ne pas arrondir correctement les montants monétaires

Pour aller plus loin

Approfondissez la norme IFRS 15 et les cas complexes avec nos formations Learni.

Comment implémenter la reconnaissance des revenus en 2026 | Learni