diff --git a/app/cca_pool.py b/app/cca_pool.py index a119313..4d71e89 100644 --- a/app/cca_pool.py +++ b/app/cca_pool.py @@ -1,5 +1,5 @@ """ -Module fiscal — Registre de catégorie (pool global), ex. Catégorie 50. +Module fiscal — Mécanique du pool de catégorie (DPA dégressive). L'actif fiscal est un FLUX, pas un objet. La DPA se calcule sur le solde global de la catégorie (FNACC), pas pièce par pièce. @@ -26,6 +26,18 @@ ramenée à 0 et le montant est signalé. Le coefficient d'ajustement de l'année d'acquisition est PARAMÉTRABLE (demi-année standard = 0.5 ; incitatif accéléré éventuel saisi par l'usager sur avis de son CPA). Aucun taux d'accélération n'est câblé en dur. + +Références législatives : + - LIR 20(1)(a) — Déduction pour amortissement du revenu d'entreprise ou de bien + - LIR 13(21) — Définition de la FNACC (fraction non amortie du coût en capital) + - LIR 13(1) — Récupération d'amortissement (inclusion dans le revenu) + - LIR 20(16) — Perte finale (déduction du revenu) + - Règl. 1100(1) — Méthode dégressive ; taux par catégorie (Règl. Annexe II) + - Règl. 1100(2) — Règle de la demi-année : ajustement sur ajouts nets de l'année + d'acquisition (coefficient 0,5 par défaut) + + Loi de l'impôt sur le revenu (LIR), L.R.C. 1985, ch. 1 (5e suppl.) + Règlement de l'impôt sur le revenu (Règl.), C.R.C., ch. 945 """ from __future__ import annotations @@ -96,7 +108,8 @@ def compute_pool_year(opening_ucc: Decimal, yi: YearInput, terminal_loss = Decimal("0") note = "" - # Récupération : solde négatif et il reste (ou non) des actifs. + # LIR 13(1) — récupération : le produit de disposition excède la FNACC ; + # le solde négatif est inclus dans le revenu imposable de l'année. if solde_avant < 0: recapture = -solde_avant result = YearResult( @@ -110,7 +123,8 @@ def compute_pool_year(opening_ucc: Decimal, yi: YearInput, ) return result - # Perte finale : plus d'actif physique mais solde positif. + # LIR 20(16) — perte finale : catégorie vide physiquement avec FNACC positive ; + # le solde résiduel est déductible en totalité (pas de plafond de taux). if yi.pool_physically_empty and solde_avant > 0: terminal_loss = solde_avant return YearResult( @@ -123,7 +137,8 @@ def compute_pool_year(opening_ucc: Decimal, yi: YearInput, note="Catégorie vidée physiquement avec solde positif : perte finale déductible à 100 %.", ) - # Ajustement de l'année d'acquisition sur les ajouts NETS. + # Règl. 1100(2) — règle de la demi-année : l'ajustement (coeff × ajouts nets) + # réduit la base de calcul pour l'année d'acquisition (coeff 0,5 par défaut). net_additions = additions - dispositions if net_additions < 0: net_additions = Decimal("0") # pas d'ajustement négatif diff --git a/app/cca_registry.py b/app/cca_registry.py index 349c3dd..1e37926 100644 --- a/app/cca_registry.py +++ b/app/cca_registry.py @@ -17,6 +17,17 @@ Les AJOUTS d'une année peuvent être dérivés automatiquement de l'inventaire (somme des coûts des acquisitions dont l'année d'acquisition = year) ou saisis manuellement (override). Les dispositions et le coefficient sont toujours saisis par l'usager. + +Références législatives : + - LIR 13(21) — Définition de la FNACC ; le pool est calculé par catégorie, + non par actif individuel + - Règl. 1100(1) — Déduction admissible : taux dégressif appliqué au solde + du pool en fin d'exercice (méthode du solde dégressif) + - Règl. Partie XI — Art. 1100–1105 : règles générales des catégories de biens + - Guide T2 (T4012) — Annexe 8 / Schedule 8 : présentation du registre DPA + + Loi de l'impôt sur le revenu (LIR), L.R.C. 1985, ch. 1 (5e suppl.) + Règlement de l'impôt sur le revenu (Règl.), C.R.C., ch. 945 """ from __future__ import annotations diff --git a/app/store.py b/app/store.py index 516fe45..3039641 100644 --- a/app/store.py +++ b/app/store.py @@ -30,8 +30,10 @@ DB_PATH = Path(_db_env) if _db_env else Path(__file__).resolve().parent.parent / PARENT_TYPE = "parent" PIECE_TYPE = "piece" -# Catalogue des catégories DPA pertinentes (id -> description, taux). -# Source : ARC/Revenu Québec. À valider avec un CPA selon l'année. +# Taux de DPA par catégorie — Règlement de l'impôt sur le revenu, Annexe II +# (C.R.C., ch. 945). Art. 1100(1) Règl. : méthode du solde dégressif. +# Ces taux sont les taux ordinaires ; aucun taux d'accélération temporaire +# (p. ex. Règl. 1100(1)(a.1), 1100(1)(a.2)) n'est appliqué automatiquement. CCA_CATEGORIES = [ {"id": 50, "description": "Matériel informatique et logiciels de systèmes", "dpa_rate": 0.55, "default_useful_life_years": 4}, {"id": 8, "description": "Mobilier, équipement et matériel divers", "dpa_rate": 0.20, "default_useful_life_years": 10}, @@ -83,8 +85,8 @@ def _compute_piece_fnacc(cost: float, acquisition_year: int, cca_rate: float) -> if acquisition_year > reference_year: # Pièce acquise dans l'exercice courant — aucune DPA réclamée encore. return (round(cost, 2), reference_year) - fnacc = cost * (1.0 - cca_rate * 0.5) # année d'acquisition (demi-année) - for _ in range(reference_year - acquisition_year): # exercices subséquents + fnacc = cost * (1.0 - cca_rate * 0.5) # Règl. 1100(2) — demi-année + for _ in range(reference_year - acquisition_year): # Règl. 1100(1) — solde dégressif fnacc *= (1.0 - cca_rate) return (round(max(fnacc, 0.0), 2), reference_year) diff --git a/static/aide.html b/static/aide.html index 3396335..aae94a4 100644 --- a/static/aide.html +++ b/static/aide.html @@ -3,7 +3,7 @@ -Guide d'utilisation — Gestionnaire d'immobilisations fiscales +Mon Registraire — Guide d'utilisation + + + + + +
+

À propos de cet outil

+

Ce que c'est, pour qui, et ce que ça ne fait pas.

+ + +

L'intention

+ +

Les PME canadiennes qui gèrent un parc d'équipements significatif tombent dans un vide : trop petites pour justifier un ERP, trop complexes pour un tableau Excel. Le résultat habituel est un registre DPA bricolé dans un chiffrier, refait à chaque exercice, sans traçabilité et sans lien avec l'inventaire physique.

+ +

Cet outil comble ce vide. Il maintient un registre permanent et structuré des immobilisations, calcule les pools DPA par catégorie selon le régime CCA canadien, et produit directement les intrants de l'Annexe 8 / Schedule 8 — sans déléguer chaque exercice à un cabinet externe.

+ +
+ L'objectif n'est pas de remplacer le CPA, mais d'arriver à son bureau avec des données propres, traçables et défendables — plutôt qu'un chiffrier à reconstituer. +
+ +

Les trois vues de chaque actif (Propriétaire, CPA, Auditeur) reflètent cet objectif : le même registre sert trois interlocuteurs différents, sans extraire ni retraiter les données.

+ + +

Pour qui

+ +
+
+

📦 Le dirigeant

+

Propriétaire ou gestionnaire TI d'une PME avec un parc d'actifs à gérer

+
    +
  • Voir la valeur nette et le coût de remplacement de chaque actif
  • +
  • Suivre l'état opérationnel du parc (actif, stock, rebut)
  • +
  • Rattacher les pièces composantes à leurs immobilisations fiscales
  • +
  • Joindre les factures directement aux actifs
  • +
  • Garder un inventaire défendable devant un assureur ou un acquéreur
  • +
+
+
+

🧾 Le CPA conseil

+

Comptable ou fiscaliste qui prépare les déclarations T2 / CO-17

+
    +
  • Obtenir la FNACC par catégorie DPA, exercice par exercice
  • +
  • Vérifier les additions, dispositions, règle de la demi-année
  • +
  • Exporter l'Annexe 8 en CSV prête à intégrer dans la déclaration
  • +
  • Identifier les situations de perte finale ou de récupération
  • +
  • Consulter les lignes T2 (104/107/410/414) et CO-17 (130/135/150/155)
  • +
+
+
+

🔍 L'auditeur

+

Vérificateur interne, externe, ou inspecteur de l'ARC

+
    +
  • Trouver le numéro de série, le fournisseur et la facture de chaque pièce
  • +
  • Consulter la piste d'audit horodatée de chaque mouvement
  • +
  • Confirmer la base capitalisable et la date d'acquisition
  • +
  • Retracer les détachements (libre, stock, rebut) avec date et justification
  • +
  • Réconcilier le registre DPA avec les actifs physiquement présents
  • +
+
+
+ +
+ Le profil typique : PME canadienne assujettie à l'impôt sur les sociétés (T2 + CO-17), avec 30 000 $ à 2 M$ d'actifs TI dans plusieurs catégories DPA, qui veut reprendre le contrôle de son registre sans multiplier les intervenants. +
+ + +

Pas pour qui

+ +

Autant être direct sur les cas où cet outil n'est pas la bonne réponse.

+ +
+
+
🏭
+
Grandes entreprises
+
Des milliers d'actifs, des dizaines de catégories, plusieurs divisions — il faut un ERP (SAP, Oracle, Maximo) ou un logiciel d'actifs dédié.
+
+
+
🌐
+
Multi-entités
+
Pas de consolidation entre personnes morales distinctes. Chaque entité juridique tient son propre registre dans sa propre instance.
+
+
+
+
Taux d'accélération automatiques
+
La passation en charges immédiate (PCI), la déduction pour la machinerie de fabrication et les bonifications temporaires de l'ARC ne sont pas câblées. Le CPA doit les appliquer manuellement.
+
+
+
🔗
+
Intégration comptable directe
+
Aucune connexion à QuickBooks, Sage, Xero ou autre. L'export CSV est le pont vers ces systèmes.
+
+
+
👥
+
Multi-utilisateurs simultanés
+
L'outil fonctionne en mode mono-utilisateur. Plusieurs personnes peuvent l'utiliser, mais pas en même temps sur la même base.
+
+
+
🏛️
+
Production fiscale certifiée
+
Cet outil n'est pas homologué par l'ARC ni Revenu Québec. Il produit des intrants, pas une déclaration finale. La validation d'un CPA autorisé reste obligatoire.
+
+
+ + +

Capacités

+ +

Gestion des actifs

+ + + + + + + + + + + +
FonctionnalitéDescription
Immobilisations fiscales (parents)Création, modification, suppression. Catégorie DPA, date de mise en service, statut opérationnel.
Pièces d'inventaireComposantes rattachées à une immobilisation. Numéro de série, fabricant, modèle, format, étiquette d'inventaire.
Modèle à deux niveauxUne immobilisation fiscale regroupe plusieurs pièces physiques. La base capitalisable est la somme des coûts des pièces.
Porteur d'étiquetteUne pièce désignée porte l'étiquette de l'assemblage ; les autres l'héritent automatiquement.
Cycle de vieDétachement en trois modes : libre (réutilisable), stock (entreposé), rebut (sorti du registre avec écriture comptable).
Factures jointesPDF, JPG, PNG jusqu'à 20 Mo par pièce. Stockées localement dans data/invoices/.
Piste d'auditToutes les modifications horodatées sont conservées par actif.
+ +

Fiscal et DPA

+ + + + + + + + + + + +
FonctionnalitéDétail
Pool DPA multi-catégoriesCatégories 8, 10, 12, 46, 50 et toute catégorie configurable. Un registre par catégorie, multi-exercices.
Règle de la demi-annéeCoefficient d'ajustement configurable par exercice (0,5 = demi-année standard, 1,0 = année pleine).
FNACC d'ouvertureopening_ucc_override pour intégrer des actifs acquis avant l'utilisation de l'outil.
Perte finaleDétectée automatiquement quand le pool est physiquement vide et que la FNACC est positive. Déclarée manuellement via le flag pool_physically_empty.
RécupérationDétectée quand les dispositions excèdent la FNACC d'ouverture. Montant calculé automatiquement.
Annexe 8 / Schedule 8Tableau complet par catégorie, avec export CSV et affichage JSON.
Rapport fiscalHTML imprimable. Lignes T2 : 104 (additions), 107 (DPA), 410 (perte finale), 414 (récupération). CO-17 : 130, 135, 150, 155.
+ +

Opérations

+ + + + + + + + + +
FonctionnalitéDétail
Export CSVToutes les immobilisations et pièces avec leurs champs complets.
SauvegardesSauvegarde SQLite native horodatée dans data/backups/. Restauration avec sélection du fichier.
Données démo6 immobilisations, 5 catégories DPA, perte finale Cat. 12 et récupération Cat. 10 pré-configurées.
RéinitialisationVide la base complète (actifs + registre DPA) en un clic.
API RESTToutes les fonctions sont exposées via FastAPI. Documentation interactive disponible à /docs.
+ + +

Limitations

+ +
+ Ces limitations sont documentées pour être honnête, pas pour décourager. La grande majorité des PME visées n'en rencontreront aucune. +
+ +
+
+
Indicatif, non certifié
+
Les calculs DPA/FNACC sont structurellement corrects mais ne sont pas homologués par l'ARC ni Revenu Québec. Toute déclaration fiscale doit être validée par un CPA autorisé.
+
+
+
Taux d'accélération manuels
+
La passation en charges immédiate, la déduction bonifiée pour les actifs propres ou les mesures temporaires COVID ne sont pas calculées automatiquement. Le CPA les applique via le champ additions_override.
+
+
+
Perte finale déclarée manuellement
+
L'outil ne peut pas savoir si le pool est physiquement vide sans l'intervention de l'utilisateur. Le flag pool_physically_empty doit être activé explicitement dans le registre.
+
+
+
Amortissement linéaire indicatif
+
La VNC linéaire affichée dans la vue Propriétaire est calculée sur la durée de vie utile estimée — c'est une valeur de gestion, pas fiscale.
+
+
+
Stockage local uniquement
+
Les données sont dans un fichier SQLite local (data/immos.db). Pas de synchronisation cloud, pas de sauvegarde automatique distante.
+
+
+
Une entité, un registre
+
L'outil gère une seule personne morale à la fois. Pour plusieurs entités, déployer une instance séparée par entité.
+
+
+ +
+ En résumé : cet outil est un registre structuré et un calculateur fiscal indicatif. Il remplace le chiffrier Excel, pas le CPA. +
+ +
+ + + + + diff --git a/static/index.html b/static/index.html index 5e36d87..2d523b7 100644 --- a/static/index.html +++ b/static/index.html @@ -3,7 +3,7 @@ - Gestionnaire d'immobilisations + Mon Registraire — Gestionnaire d'immobilisations fiscales @@ -1277,39 +1277,46 @@ function WelcomeModal({ onClose }) { return (
e.stopPropagation()}> -
🏢
-
Gestionnaire d'immobilisations fiscales
-
Chezlepro Inc. — usage interne
+
📊
+
Mon Registraire
+
Registre DPA · Annexe 8 · Piste d'audit — pour PME canadiennes
-

Qui utilise cet outil

-

Daniel Allaire, responsable des opérations TI de Chezlepro Inc., PME québécoise exploitant un datacenter privé. Cet outil est destiné à un usage interne, par le propriétaire ou son CPA conseil.

+

Trois personnes. Un seul registre.

+
+
+
Le dirigeant
+
Voit la valeur nette, l'état du parc et le coût de remplacement — sans jargon comptable.
+
+
+
Le CPA conseil
+
Obtient la FNACC, les pools DPA par catégorie et l'Annexe 8 CSV prête à signer.
+
+
+
L'auditeur
+
Trouve les numéros de série, les factures jointes et la piste horodatée de chaque mouvement.
+
+
-

Intention

-

Tenir un registre précis des immobilisations de Chezlepro Inc. et produire les données nécessaires aux déclarations fiscales T2 (Annexe 8) et CO-17 — catégories DPA 8, 10, 12, 46 et 50 — sans déléguer chaque exercice à un cabinet externe.

-
- -
-

Ce que cet outil fait

+

Ce que ça produit

    -
  • CRUD immobilisations (parents) et pièces d'inventaire rattachées
  • -
  • Registre pool DPA multi-catégories, multi-exercices
  • -
  • Calcul de la DPA, de la FNACC, de la perte finale et de la récupération
  • -
  • Rapport fiscal HTML (lignes T2 / CO-17) et export Annexe 8 CSV
  • -
  • Sauvegardes horodatées et pièces jointes (factures PDF/JPG)
  • +
  • Registre pool DPA multi-catégories, multi-exercices (Cat. 8, 10, 12, 46, 50…)
  • +
  • DPA, FNACC, perte finale et récupération — règle de la demi-année incluse
  • +
  • Annexe 8 / Schedule 8 avec export CSV, rapport fiscal T2 / CO-17
  • +
  • Inventaire à deux niveaux : immobilisation fiscale → pièces composantes
  • +
  • Factures jointes, sauvegardes horodatées, piste d'audit complète
-

Limites importantes

+

À savoir avant de commencer

    -
  • Outil indicatif — les calculs doivent être validés par un CPA avant toute déclaration.
  • -
  • Non certifié par l'ARC ni Revenu Québec.
  • -
  • Aucun taux d'accélération temporaire (p. ex. passation en charges immédiate) n'est appliqué automatiquement.
  • -
  • Conçu pour une seule entité juridique; ne supporte pas la consolidation multi-entités.
  • +
  • Les calculs sont structurellement corrects mais indicatifs — validation CPA obligatoire avant toute déclaration.
  • +
  • Non certifié par l'ARC ni Revenu Québec. Aucun taux d'accélération temporaire automatique.
  • +
  • Conçu pour une seule entité juridique — pas de consolidation multi-entités.
@@ -1319,7 +1326,12 @@ function WelcomeModal({ onClose }) { setNePlus(e.target.checked)}/> Ne plus afficher cette page - +
+ + + + +