Procédure annuel pour updater les taxes (updated version 2026)
Note: La procédure assume que les liens utilisés resteront les mêmes et que la structure des fichiers PDF ne changera pas. Si les liens sont modifiés ou si la structure des PDF change, le script devra être ajusté en conséquence.
La mise à jour annuelle est maintenant automatisée avec le script :
node exports/updateAnnualTaxData.js --year 2026 --templateYear 2025 --mode full --apply --incomeTaxesSpreadsheetId <SPREADSHEET_ID>
Le script utilise les sources suivantes :
- CRA / ARC T4032 pour les tables fédérales et provinciales ON, NB, PE, QC
- Revenu Québec pour les tables provinciales QC, RRQ, RQAP
- CRA / Revenu Québec pour les taux CPP, EI, GST/HST, QST
Les sources et valeurs configurées sont dans :
node.js/exports/annualTaxSources.json
Comment ça fonctionne:
- Copier manuellement le Google Sheet income_taxes_<année précédente>.
- Renommer la copie en changeant l'année précédente par l'année en cours
- Copier l’ID du nouveau Google Sheet. ( L’ID est la partie dans l’URL entre /d/ et /edit.)
Exemple: https://docs.google.com/spreadsheets/d/190fSZq-r3K65Fb_g1D0oTQQZv5ijtIMjXvthD8MlhwM/edit - Lancer le self-test :
node exports/updateAnnualTaxData.js --year 2026 --templateYear 2025 --mode full --selfTest
Ce test vérifie :
- que les PDFs officiels sont accessibles
- que les tables sont parsées correctement
- que chaque table commence avec la ligne min_salary = 0
- que les salaires minimums sont en ordre croissant
- que les tables Québec sont mappées correctement (cas spécial)
- que les zéros sont exportés au bon format pour Google Sheets
- Lancer un dry run :
node exports/updateAnnualTaxData.js --year 2026 --templateYear 2025 --mode full --dryRun --incomeTaxesSpreadsheetId <SPREADSHEET_ID>
Le dry run ne modifie rien. Il affiche :
- les sources utilisées
- les fichiers qui seraient changés
- les onglets Google Sheets qui seraient modifiés
- les PDFs qui seraient uploadés
- les changements de taux entre l’année précédente et la nouvelle année
- Lancer l’export réel :
node exports/updateAnnualTaxData.js --year 2026 --templateYear 2025 --mode full --apply --incomeTaxesSpreadsheetId <SPREADSHEET_ID>
Utilisation Dans VS Code
Les configurations mentionnées ci-dessus existent dans .vscode/launch.json :
Annual Tax Export - Self Test
Annual Tax Export - Test Run
Annual Tax Export - Run
Lors du lancement, VS Code demande :
-
taxYear: l’année à générer, ex. 2026 -
templateTaxYear: l’année précédente à utiliser comme modèle, ex. 2025 -
incomeTaxesSpreadsheetId: l’ID du Google Sheet copié manuellement -
annualTaxTargets: les destinations à mettre à jour
Choix Des Destinations
Le script permet de relancer seulement une partie du processus avec --targets.
Options disponibles :
all
incomeTaxes
byModule
do
incomeTaxes,byModule
incomeTaxes,do
byModule,do
Signification :
incomeTaxes
Met à jour le Google Sheet copié income_taxes_<année> :
- écrit les onglets de tables d’impôt
- renomme les tabs de l’année précédente vers la nouvelle année
- met à jour exports/exportAllData.js avec le nouvel ID de sheet et les gids des tabs
byModule
Met à jour les colonnes de la nouvelle année dans le Google Sheet principal :
- taxes
- income_taxes
- employer_income_taxes
- interests
do
Upload les PDFs officiels dans DigitalOcean Spaces :
acc1/<année>/<theme>_<lang>
Fichiers Modifiés Par Le Script
Selon les targets choisis, le script peut modifier :
game/Assets/GameSpecific/byModule/Resources/data_byModule/income_tax_*_<année>.json
game/Assets/GameSpecific/byModule/Resources/data_byModule/taxes.json
game/Assets/GameSpecific/byModule/Resources/data_byModule/income_taxes.json
game/Assets/GameSpecific/byModule/Resources/data_byModule/employer_income_taxes.json
game/Assets/GameSpecific/byModule/Resources/data_byModule/interests.json
node.js/exports/exportAllData.js
Si --setDefaultYear est utilisé, il modifie aussi :
game/Assets/GameSpecific/byModule/Resources/data_byModule/act_settings.json
uniksimweb/uniksim-back-end/src/node.js/server/backend_braincloud.js
--setDefaultYear change l'année en cours utilisé dans la simulation