Le 15 approche, et avec lui le rapport mensuel de la CCQ : chaque heure travaillée, par salarié, par métier, par secteur et par annexe de salaire, avec les salaires versés et les cotisations. Une heure déclarée dans le mauvais secteur se paie au mauvais taux ; un syndicat mal saisi envoie les cotisations au mauvais endroit ; un rapport en retard coûte des pénalités. Et ces erreurs-là se découvrent souvent des mois plus tard.Dans cette recette, nous allons préparer le rapport mensuel à partir des paies d'Acomba : contrôler les données CCQ des fiches d'employés, sortir le tableau des heures et des salaires au grain exact du rapport, puis recouper les cotisations au cent près avec le sommaire des DAS avant de transmettre.Ce que vous allez apprendrecontrôler les données CCQ des fonctions de vos employés avant de calculer la paie ;
retrouver les périodes de paie d'une période de rapport CCQ ;
obtenir les heures, les salaires et les cotisations par salarié, métier, secteur et annexe ;
recouper le total à remettre à la CCQ et repérer les heures payées hors CCQ.
une clé API en lecture : cette recette n'écrit rien dans Acomba ;
le module Paie actif, et le numéro d'employeur CCQ saisi dans la configuration de la paie d'Acomba (sans lui, les routes CCQ répondent 422) ;
les paies de la période calculées et enregistrées dans Acomba ;
les dates de la période de rapport, tirées du calendrier de la CCQ (ccq.org).
Où Acomba garde les données CCQ#
Avant de compter, voyons d'où viennent les chiffres. Dans Acomba, chaque fonction d'un employé porte sa combinaison CCQ : le métier, le secteur, l'annexe de salaire, la région, la période d'apprentissage et le syndicat. Quand la paie est calculée, chaque salaire (une ligne par fonction payée) garde sa propre copie de ces codes, avec les heures et les montants par code de paie. C'est cette copie que lit le rapport : elle reflète ce qui a réellement été payé.| Donnée du rapport | Champ de l'API | Exemple |
|---|
| Métier ou occupation | occupation | 160 |
| Secteur | sector | D |
| Annexe de salaire | annex | R |
| Région | region | 4 |
| Période d'apprentissage | apprentice | "3" ; null pour un compagnon |
| Syndicat | union | "SQC" |
L'API rend les codes tels qu'Acomba les enregistre, sans libellé : leur signification vient des listes officielles de la CCQ.
Étape 1 : contrôler les fiches avant la paie#
Commençons en amont, là où les erreurs naissent. Le détail CCQ d'un employé donne, pour chaque fonction active, la combinaison qui sera copiée sur ses prochains salaires.Trois contrôles attrapent l'essentiel :Une combinaison incomplète : un métier sans secteur, sans annexe ou sans région (la deuxième fonction ci-dessus). Les heures de cette fonction seront mal classées.
Une fonction sans aucune donnée CCQ (la troisième) : ses heures seront payées hors CCQ. C'est voulu pour des travaux qui ne relèvent pas de la CCQ ; sinon, c'est un oubli.
Un syndicat saisi de deux façons d'un employé à l'autre, par exemple 0349 et 349 : vérifiez le sigle attendu.
Corrigez les fiches dans Acomba avant de calculer la paie : chaque salaire garde la copie qu'il a reçue au calcul.Pour contrôler tout le personnel, parcourez les employés actifs avec GET /api/payroll/employees?is_active=true, puis appelez le détail CCQ de chacun, un appel à la fois.
Étape 2 : trouver les périodes de paie du rapport#
Les fiches sont propres ; passons aux paies. Le calendrier de la CCQ fixe les dates de chaque période de rapport, et Acomba numérote ses périodes de paie dans l'année. La liste des périodes donne, pour chacune, sa date de fin : retenez celles qui se terminent dans la période du rapport.Pour une période de rapport du 31 mai au 27 juin 2026, ce sont les périodes 24 à 27. Remarquez la période 27 : payée le 2 juillet, elle compte pour les DAS de juillet, mais ses heures, travaillées en juin, vont au rapport CCQ de juin.
Étape 3 : obtenir les heures et les salaires par combinaison CCQ#
Voici le cœur du rapport. Le journal de vérification de la paie, regroupé par combinaison CCQ (group_by=ccq), additionne les salaires des périodes choisies par salarié, métier, secteur, annexe, région, apprentissage et syndicat, exactement comme ils ont été payés.Les heures travaillées sont les quantités des codes horaires de salaire : 102 (régulier), 103 (temps et demi) et 104 (temps double). Les autres codes en $/heure ne s'y ajoutent pas : 108 (allocation de sécurité) et 501 (avantages sociaux) reprennent les mêmes heures pour calculer un montant, et 117 (indemnité de déplacement) compte des jours.
Le salaire brut est la somme des codes de la section income (gains), dont la légende codes donne la section de chaque code.
Les cotisations et retenues CCQ sont les codes des sections ccq_contribution (part de l'employeur) et ccq_deduction (part du salarié, dont les vacances CCQ, code 807).
ccq.is_ccq: false marque les heures payées dans une fonction sans données CCQ : elles ne vont pas au rapport, mais elles méritent un regard (étape 1).
verification.net_reconciliation confirme que le journal a tout lu : le net recalculé égale le net enregistré par Acomba.
Étape 4 : recouper avant de transmettre#
Le tableau est prêt ; vérifions qu'il ne laisse rien de côté. Le sommaire des DAS, appelé sur les mêmes numéros de période, calcule le total à remettre à la CCQ d'après le catalogue des codes de votre dossier. Il doit égaler, au cent près, la somme des sections CCQ du journal.| Contrôle | Sommaire des DAS | Journal de vérification |
|---|
| Part du salarié | employee_withholdings de la CCQ | grand_total.by_section.ccq_deduction |
| Part de l'employeur | employer_contributions de la CCQ | ccq_contribution + report (taxes sur l'AECQ et sur l'assurance, si votre dossier en a) |
Un écart signale un code CCQ rattaché à un autre organisme dans le catalogue (GET /api/payroll/pay-codes). Le rapport est dû au plus tard le 15 du mois suivant la période couverte, transmis par les services en ligne de la CCQ, par un logiciel autorisé ou par un fichier JSON téléversé dans votre dossier en ligne.
Le script complet#
Assemblons la préparation : ce script contrôle les fiches, retrouve les périodes, imprime le tableau du rapport par salarié et par combinaison CCQ, recoupe le total avec le sommaire des DAS et affiche la date limite. À corriger : 1042 Tremblay Marie — Charpentier-menuisier commercial : annex, region manquant
À corriger : Syndicat saisi de plusieurs façons : 0349, 349
Rapport CCQ du 2026-05-31 au 2026-06-27 : périodes 24 à 27
Salarié Métier Sect. Ann. Rég. Appr. Heures Brut
Tremblay Marie 160 D R 4 3 46.25 2,343.09
Hors CCQ : Tremblay Marie — Rénovation chez des particuliers : 46.25 h
Gagnon Luc 350 D R 4 C 152.00 6,412.48
Roy Sophie 370 C C3 4 1 160.00 5,286.40
Total à remettre à la CCQ : 83,241.94 $ (concorde avec le journal)
Date limite de transmission et de paiement : 2026-07-15
Bon à savoir#
C'est une préparation, pas la transmission. Le rapport se transmet à la CCQ par ses services en ligne, par un logiciel autorisé ou par un fichier JSON ; cette recette vous assure que les chiffres sont complets et cohérents.
Les numéros de période, pas les dates de paiement. Le sommaire des DAS par dates (from_date, to_date) suit les dates de paiement, comme les remises à l'ARC et à Revenu Québec ; pour la CCQ, appelez-le avec year, period_from et period_to afin de couvrir les mêmes semaines que le journal.
Compagnon ou apprenti. apprentice donne la période d'apprentissage ; il vaut null pour un compagnon. Un code vide ou un code 0 est toujours rendu null.
Les codes sont bruts. L'API n'a pas de libellés pour les métiers, secteurs et annexes : utilisez les listes de la CCQ.
L'identification du salarié. Le NAS n'est rendu qu'à une clé autorisée aux données sensibles de paie, et l'API d'Acomba n'expose pas de numéro de client CCQ du salarié.
La réserve d'heures. hours_reserve donne, par ligne, les heures versées (positives) ou puisées (négatives) dans la réserve d'heures CCQ.
Même sans activité. Le rapport est obligatoire chaque mois, et la configuration de la paie (GET /api/payroll/control) donne le prélèvement minimum mensuel de la CCQ et la cotisation annuelle à l'AECQ.
Après une correction de paie, ajoutez force_refresh=true : le journal est gardé 4 heures pour l'année courante.
Et voilà#
Votre rapport mensuel CCQ est maintenant préparé à partir des paies réelles : les fiches contrôlées avant la paie, les périodes du rapport retrouvées, les heures et les salaires au grain exact du rapport, et le total à remettre recoupé au cent près avec le sommaire des DAS, avec la date limite en vue. Vous savez aussi où Acomba garde les codes CCQ, et pourquoi c'est la copie du salaire qui fait foi. Modified at 2026-10-11 17:46:59