Tech Hub

@ Solution Architecture Works

Spécification comptable possible

7. Reports (Rapports comptables)

Temps estimé :12 minutes 67 vues

Les trois rapports comptables de base :

  1. Balance Sheet (Bilan)
    → Montre les actifspassifs et capitaux propres à un moment donné.
    Formule :
    Assets=Liabilities+EquityAssets=Liabilities+Equity
  2. Profit and Loss Statement (Compte de Résultat)
    → Résume les revenusdépensesprofits ou pertes sur une période donnée.
  3. Trial Balance (Balance de Vérification)
    → Liste tous les comptes avec leurs soldes débit et crédit pour vérifier que les écritures sont équilibrées.

Contexte des règles comptables :

Règles d’or de la comptabilité :

  • Compte réel :
    ➤ Débiter ce qui entre, créditer ce qui sort.
  • Compte personnel :
    ➤ Débiter celui qui reçoit, créditer celui qui donne.
  • Compte nominal :
    ➤ Débiter toutes les dépenses et pertescréditer tous les revenus et gains.

Effets des opérations sur les comptes :

Type de compteDébit (↑)Crédit (↓)
ActifAugmentationDiminution
PassifDiminutionAugmentation
Capitaux propresDiminutionAugmentation
RevenuDiminutionAugmentation
DépenseAugmentationDiminution

7.1 Bilan Comptable

Un bilan comptable présente une synthèse des actifs, capitaux propres et passifs d’une organisation ou d’un individu à un moment précis.

Formule fondamentale :
Actif = Passif + Capitaux propres

7.1.1 Requête Exemple

La requête ci-dessous concerne les actifs. Les requêtes pour les passifs et les capitaux propres sont similaires, mais la formule de calcul du solde est différente (voir la section 6 pour les règles : pour les passifs et capitaux propres, le solde = crédit – débit).

SQL
SELECT debits.glcode AS 'glcode', debits.name AS 'name',
       (IFNULL(debits.debitamount, 0) - IFNULL(credits.creditamount, 0)) AS 'balance'
FROM
  (SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount'
   FROM acc_journal_entry, acc_coa
   WHERE acc_coa.id = acc_journal_entry.coa_id
     AND acc_journal_entry.type = 'DEBIT'
     AND acc_coa.category IN ('ASSET')
   GROUP BY name
   ORDER BY glcode) debits
LEFT OUTER JOIN
  (SELECT acc_coa.gl_code, name, SUM(amount) AS 'creditamount'
   FROM acc_journal_entry, acc_coa
   WHERE acc_coa.id = acc_journal_entry.coa_id
     AND acc_journal_entry.type = 'CREDIT'
     AND acc_coa.category IN ('ASSET')
   GROUP BY name) credits
ON debits.name = credits.name

UNION

SELECT credits.glcode AS 'glcode', credits.name AS 'name', 
       (IFNULL(debits.debitamount, 0) - IFNULL(credits.creditamount, 0)) AS 'balance'
FROM
  (SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount'
   FROM acc_journal_entry, acc_coa
   WHERE acc_coa.id = acc_journal_entry.coa_id
     AND acc_journal_entry.type = 'DEBIT'
     AND acc_coa.category IN ('ASSET')
   GROUP BY name
   ORDER BY glcode) debits
RIGHT OUTER JOIN
  (SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'creditamount'
   FROM acc_journal_entry, acc_coa
   WHERE acc_coa.id = acc_journal_entry.coa_id
     AND acc_journal_entry.type = 'CREDIT'
     AND acc_coa.category IN ('ASSET')
   GROUP BY name
   ORDER BY glcode) credits
ON debits.name = credits.name;

7.2 Compte de Résultat (Income Statement)

Le Compte de Résultat est un état financier d’une entreprise qui montre comment les revenus (argent reçu de la vente de produits et services avant déduction des charges) sont transformés en résultat net (le bénéfice après déduction de toutes les charges et revenus).

Il affiche les revenus reconnus sur une période donnée, ainsi que les coûts et dépenses associés à ces revenus.

Formule :
Resultat Net=Revenus Totaux−Dépenses TotalesRésultat Net=Revenus Totaux−Deˊpenses Totales

7.2.1 Requête Exemple – Revenus

La requête ci-dessous concerne les revenus. La requête pour les dépenses serait similaire, sauf pour le calcul du solde (voir les règles dans la section 6).

SQL
SELECT *
FROM (
  SELECT debits.glcode AS 'glcode', debits.name AS 'name',
         (IFNULL(credits.creditamount, 0) - IFNULL(debits.debitamount, 0)) AS 'balance'
  FROM (
    SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount'
    FROM acc_journal_entry, acc_coa
    WHERE acc_coa.id = acc_journal_entry.coa_id
      AND acc_journal_entry.type = 'DEBIT'
      AND acc_coa.category IN ('INCOME')
      AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
    GROUP BY name
    ORDER BY glcode
  ) debits
  LEFT OUTER JOIN (
    SELECT acc_coa.gl_code, name, SUM(amount) AS 'creditamount'
    FROM acc_journal_entry, acc_coa
    WHERE acc_coa.id = acc_journal_entry.coa_id
      AND acc_journal_entry.type = 'CREDIT'
      AND acc_coa.category IN ('INCOME')
      AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
    GROUP BY name
  ) credits
  ON debits.name = credits.name

  UNION

  SELECT credits.glcode AS 'glcode', credits.name AS 'name',
         (IFNULL(credits.creditamount, 0) - IFNULL(debits.debitamount, 0)) AS 'balance'
  FROM (
    SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount'
    FROM acc_journal_entry, acc_coa
    WHERE acc_coa.id = acc_journal_entry.coa_id
      AND acc_journal_entry.type = 'DEBIT'
      AND acc_coa.category IN ('INCOME')
      AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
    GROUP BY name
    ORDER BY glcode
  ) debits
  RIGHT OUTER JOIN (
    SELECT acc_coa.gl_code, name, SUM(amount) AS 'creditamount'
    FROM acc_journal_entry, acc_coa
    WHERE acc_coa.id = acc_journal_entry.coa_id
      AND acc_journal_entry.type = 'CREDIT'
      AND acc_coa.category IN ('INCOME')
      AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
    GROUP BY name
    ORDER BY glcode
  ) credits
  ON debits.name = credits.name
) AS fullouterjoinresult
ORDER BY glcode;

7.3 Balance de Vérification (Trial Balance)

La balance de vérification est une liste de tous les comptes du grand livre général (qu’ils soient de nature capital ou revenu) d’une entreprise.

Cette liste contient :

  • Le nom du compte du grand livre nominal.
  • La valeur de ce compte.

Chaque compte aura soit :

  • Une valeur de solde débiteur → affichée dans la colonne débit.
  • Une valeur de solde créditeur → affichée dans la colonne crédit.

7.3.1 Requête Exemple – Balance de Vérification

Il s’agit de la requête complète pour générer le rapport de balance de vérification :

SQL
SELECT *
FROM (
  SELECT debits.glcode AS 'glcode', debits.name AS 'name',
         IF(debits.type = 'ASSET' OR debits.type = 'EXPENSES',
            IFNULL(debits.debitamount, 0) - IFNULL(credits.creditamount, 0), '') AS 'debit',
         IF(debits.type = 'INCOME' OR debits.type = 'EQUITY' OR debits.type = 'LIABILITIES',
            IFNULL(credits.creditamount, 0) - IFNULL(debits.debitamount, 0), '') AS 'credit'
  FROM (
    SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount', acc_coa.type AS 'type'
    FROM acc_journal_entry, acc_coa
    WHERE acc_coa.id = acc_journal_entry.coa_id
      AND acc_journal_entry.type = 'DEBIT'
      AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
    GROUP BY name
    ORDER BY glcode
  ) debits
  LEFT OUTER JOIN (
    SELECT acc_coa.gl_code, name, SUM(amount) AS 'creditamount', acc_coa.type AS 'type'
    FROM acc_journal_entry, acc_coa
    WHERE acc_coa.id = acc_journal_entry.coa_id
      AND acc_journal_entry.type = 'CREDIT'
      AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
    GROUP BY name
    ORDER BY glcode
  ) credits
  ON debits.name = credits.name

  UNION

  SELECT credits.glcode AS 'glcode', credits.name AS 'name',
         IF(credits.type = 'ASSET' OR credits.type = 'EXPENSES',
            IFNULL(debits.debitamount, 0) - IFNULL(credits.creditamount, 0), '') AS 'debit',
         IF(credits.type = 'INCOME' OR credits.type = 'EQUITY' OR credits.type = 'LIABILITIES',
            IFNULL(credits.creditamount, 0) - IFNULL(debits.debitamount, 0), '') AS 'credit'
  FROM (
    SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount', acc_coa.type AS 'type'
    FROM acc_journal_entry, acc_coa
    WHERE acc_coa.id = acc_journal_entry.coa_id
      AND acc_journal_entry.type = 'DEBIT'
      AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
    GROUP BY name
    ORDER BY glcode
  ) debits
  RIGHT OUTER JOIN (
    SELECT acc_coa.gl_code, name, SUM(amount) AS 'creditamount', acc_coa.type AS 'type'
    FROM acc_journal_entry, acc_coa
    WHERE acc_coa.id = acc_journal_entry.coa_id
      AND acc_journal_entry.type = 'CREDIT'
      AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
    GROUP BY name
    ORDER BY glcode
  ) credits
  ON debits.name = credits.name
) AS fullouterjoinresult
ORDER BY glcode;

Cette requête permet de générer une balance de vérification complète, en distinguant les soldes débiteurs (pour les comptes d’actif et de dépenses) et les soldes créditeurs (pour les comptes de revenus, capitaux propres et passifs), selon les règles comptables.

Souhaites-tu que je t’aide à adapter cette requête à une autre période ou à un autre type de rapport ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Share this Doc

7. Reports (Rapports comptables)

Or copy link

CONTENTS