Attestations de sous-traitants et assurance accidents du travail — États-Unis et Canada : blocage du paiement, classifications, primes et masses salariales (Odoo 20)
Subcontractor Insurance Compliance, full edition — refuses to post a supplier payment when the subcontractor's certificate of insurance or workers' compensation clearance has expired at the payment date, with a written and traced override. Plus classification codes, rates, experience modification an
Screenshots
-
Attestations de sous-traitants et assurance accidents du travail — États-Unis et Canada : blocage du paiement, classifications, primes et masses salariales (Odoo 20) — capture 1 -
Attestations de sous-traitants et assurance accidents du travail — États-Unis et Canada : blocage du paiement, classifications, primes et masses salariales (Odoo 20) — capture 2 -
Attestations de sous-traitants et assurance accidents du travail — États-Unis et Canada : blocage du paiement, classifications, primes et masses salariales (Odoo 20) — capture 3 -
Attestations de sous-traitants et assurance accidents du travail — États-Unis et Canada : blocage du paiement, classifications, primes et masses salariales (Odoo 20) — capture 4 -
Attestations de sous-traitants et assurance accidents du travail — États-Unis et Canada : blocage du paiement, classifications, primes et masses salariales (Odoo 20) — capture 5
Aucun portail ne peut empêcher votre comptable de cliquer « Confirmer »
Les attestations de sous-traitants sont déjà servies, hors ERP, par des portails d'abonnement : ISNetworld et Avetta aux États-Unis, myCOI, TrustLayer et Billy sur le même créneau, Aprovall et Provigis en France. Ils collectent la pièce, la datent, la font expirer, et vous écrivent. Ils font tout cela très bien — et l'abonnement est le plus souvent facturé au sous-traitant, qui le paie une fois par donneur d'ordre.
Mais aucun d'eux ne se trouve là où l'argent part. Le virement du vendredi se confirme dans l'ERP, en deux clics, par quelqu'un qui n'a pas ouvert le portail depuis trois semaines. Ce module refuse ce clic quand l'attestation a expiré.
C'est le seul geste de cette famille qu'aucun service extérieur ne peut faire à votre place. C'est aussi celui qui coûte, quand il manque : l'argent est parti, et la preuve manquait.
Édition complète
Le blocage du paiement, la dérogation écrite et tracée, les classifications et leurs taux sourcés, les primes, les déclarations de masses salariales, et les portails avec leur contournement.
Licence OPL-1. Odoo 20 Community. Prolonge le registre gratuit dyo_attestations_na_lite.
Le refus, en clair
« Paiement bloqué » n'aide personne. Le refus nomme la pièce, le sous-traitant et la date à laquelle elle a cessé de valoir — cela se règle par un appel. Et il rappelle ce que le module ne dit pas : il constate que la preuve manque, il ne conclut pas que le chantier doit s'arrêter.
Comment le refus est construit
- À la date du paiement, pas à celle du jour. Une attestation périmée la veille ne couvre pas le paiement du lendemain ; une attestation obtenue après coup ne prouve rien sur le jour où l'argent est parti.
- Seuls les décaissements vers un sous-traitant suivi. Encaissements clients, virements internes, fournisseurs hors registre : rien ne se déclenche. Un blocage absurde est le plus court chemin vers une dérogation systématique.
- La facture, elle, n'est pas bloquée. La dette existe ; une comptabilité qui refuse d'enregistrer ce qui est dû devient fausse. La facture porte le constat, sans rien empêcher.
- Trois modes, et le plus strict est le défaut. Refuser · consigner au fil de discussion · ne rien contrôler. Un contrôle éteint à la livraison ne protège personne.
Passer outre, jamais en silence
Une entreprise a parfois de bonnes raisons de payer quand même : un règlement judiciaire, un solde de litige, un sous-traitant sorti du périmètre. La dérogation reste possible — et elle coûte exactement ce qu'il faut.
- Réservée au responsable des attestations.
- Motif écrit obligatoire : c'est ce texte qu'on relira au contrôle.
- Nom de celui qui la prend et date, retenus.
- Liste des blocages franchis, publiée au fil de discussion du paiement.
- Un écran « Paiements sur dérogation » les réunit tous — c'est la première liste qu'un contrôleur demande.
Une dérogation qu'on ne retrouve pas n'est pas une dérogation : c'est un trou.
Un taux sans sa source est refusé — par une contrainte, pas par une note
Ce module ne livre aucun taux et aucun code de classification. Le NCCI est un bureau de notation privé : il propose des taux à des États qui les approuvent, les modifient ou les ignorent, et plusieurs États ont leur propre bureau ou leur propre fonds. Chaque commission canadienne publie sa propre échelle d'unités. Un même code de métier ne vaut pas le même taux d'un État à l'autre, et il change chaque année.
Alors le modèle exige la source. L'unité aussi est saisie et non devinée — par tranche de cent, de mille, ou en pourcentage : un facteur cent dans une déclaration de masse salariale ne se voit pas à la relecture. Et la modulation d'expérience est saisie, jamais calculée : elle est notifiée par l'organisme, à partir de données que l'ERP n'a pas.
Conséquence assumée : une déclaration dont une classification n'a pas de taux relevé ne peut pas être déposée. Sa ligne n'est pas calculée à zéro — une prime nulle dans une déclaration signée a l'air d'une déclaration remplie.
La déclaration qui refuse d'inventer
La ligne rouge n'a pas de taux relevé pour la période : elle reste à zéro, elle est comptée, et le dépôt est refusé tant qu'elle est là.
Les portails : l'API et son contournement
Le module se greffe sur la chaîne de sources de dyo_connexions_base — il n'en écrit pas une seconde. Il y ajoute une question, « ce tiers est-il couvert, et jusqu'à quand ? », et trois services capables d'y répondre.
Les connecteurs ISNetworld et Avetta sont livrés inactifs, sans clé, et marqués « non éprouvé en production » : aucun de ces éditeurs ne publie de documentation d'API accessible sans compte, et ni le point d'entrée, ni l'en-tête portant la clé, ni la forme de la réponse n'ont pu être vérifiés par appel réel. URL, en-tête et clé sont modifiables depuis l'écran.
Le dernier maillon est le registre interne
Celui que l'édition gratuite remplit à la main. Il ne part jamais sur le réseau, il répond toujours, et il rend la même forme de réponse que les autres.
Un utilisateur sans aucun abonnement a donc la fonction complète ; un utilisateur abonné voit la même chose se remplir toute seule. Le contournement est ici le cas normal, pas le repli honteux.
Le parcours, pris sur le vrai client
Gratuit ou complet
| Édition gratuite | Édition complète | |
|---|---|---|
| Registre, pièces exigées, expiration, alerte | Oui | Oui |
| Paiement refusé quand l'attestation a expiré | Non | Oui |
| Constat porté sur la facture fournisseur | Non | Oui |
| Dérogation écrite, tracée, réservée au responsable | Non | Oui |
| Classifications, taux datés et sourcés, modulation | Non | Oui |
| Déclaration des masses salariales et primes | Non | Oui |
| Chaîne de sources, portails et leur contournement | Non | Oui |
Les treize commissions canadiennes, leurs noms vérifiés et le certificat de décharge ontarien de quatre-vingt-dix jours sont apportés par le module complémentaire « Attestations — Canada ».
Odoo 20 Community, licence OPL-1. Dépend de dyo_attestations_na_lite, de la comptabilité d'Odoo et de dyo_connexions_base. Édité par DYONYSOS.
What this app does not do
The publisher has not yet published the list of what the app does not do. This is a store rule: ask support for it before you commit.
Store apps required
- Attestations de sous-traitants et assurance accidents du travail — États-Unis et Canada : registre et dates d'expiration (édition gratuite, Odoo 20 Community)
dyo_attestations_na_lite
Odoo Community modules used
account
Apps that complement it
| Series | Version | Status | Published on |
|---|---|---|---|
| 20.0 | 20.0.1.0.0 | Available | 02/10/2026 |
| 19.0 | 19.0.1.0.0 | Available |
Listing generated from the publisher's code (private repository, branch 20.0): the source code is not published.
Automatic store check (separate from the publisher's), applied to all apps. Conforme.
| Check | Result | Effect if absent |
|---|---|---|
| Manifeste lisible sans exécution | conforme | bloquant |
| Licence reconnue (OPL-1) | conforme | bloquant |
| Aucune dépendance vers Odoo Enterprise | conforme | bloquant |
| Aucun import de code Enterprise | conforme | bloquant |
| Aucun en-tête de licence Enterprise | conforme | bloquant |
| Icône static/description/icon.png | conforme | déclasse |
| Description (static/description/index.html ou README) | conforme | déclasse |
| Tests automatisés (tests/test_*.py) | conforme | déclasse |
| Traduction française (i18n/fr.po) | conforme | info |
| Section « Ce que le module ne fait pas » | absent | info |
| Titre de 70 caractères au plus (165 actuellement) | absent | info |
| Résumé en français | absent | info |
Guide — Blocage du paiement, taux et déclarations
Ce guide suppose le registre en place (voir le guide de l'édition gratuite).
1. Le blocage du paiement
Lire le mode de la société
Comptabilité → Configuration → Paramètres → Attestations des sous-traitants → « Attestation expirée au paiement ».
| Valeur affichée | Code | Effet réel |
|---|---|---|
| Refuser le paiement | bloquer |
Défaut à la création de la société : une anomalie empêche la confirmation, hors dérogation |
| Laisser passer et consigner au fil de discussion | avertir |
Les motifs sont consignés, puis la confirmation Odoo se poursuit |
| Ne rien contrôler | ignorer |
Ce contrôle AT est ignoré à la confirmation |
Consultez le mode effectivement enregistré avant de traiter un paiement. Le défaut ne remplace pas la décision de votre organisation et ne prouve aucune obligation légale de retenir le règlement.
À ARBITRER : le blocage par défaut dépasse le rôle de constat demandé par le brief 3. Le code n'a pas été changé ; le maintien de cette politique ou le passage au constat seul exige un arbitrage produit explicite.
Les conditions du contrôle
Le paiement doit être sortant, de type partenaire fournisseur, avec un tiers suivi (ou son parent direct suivi). Le module recherche alors les pièces attendues marquées « Bloque le paiement » pour ce tiers.
Une attestation satisfait cette recherche si sa délivrance précède ou égale la date du paiement et si son expiration la suit ou lui est égale. Sans date de paiement, le code prend aujourd'hui. Une pièce absente, expirée ou commençant trop tard fournit un motif. La recherche lit le registre existant : une date saisie ne prouve pas à elle seule quand le document a été reçu ou vérifié.
Les encaissements et fournisseurs non suivis ne déclenchent pas ce contrôle. Aucun test spécifique aux virements internes n'est présent : c'est la réunion des critères ci-dessus qui décide si un paiement entre dans le contrôle.
Lire les bandeaux avec le mode de contrôle
Le bandeau du paiement en brouillon et celui de la facture annoncent un refus
quand une pièce manque, même si la société est en mode avertir ou ignorer.
Cette limite d'affichage est connue ; l'effet réel suit le réglage de société.
Une facture ou un avoir fournisseur n'est pas bloqué par ce module. Son constat
utilise l'échéance, sinon la date de facture, sinon aujourd'hui ; un paiement
à une autre date peut produire un autre constat.
Confirmer par dérogation
- Un responsable des attestations ouvre le paiement en brouillon présentant une anomalie et renseigne Motif de la dérogation (texte non vide).
- Il clique Confirmer par dérogation. L'action vérifie son groupe ; le code accepte aussi le mode superutilisateur.
- L'indicateur, l'auteur et la date sont enregistrés ; les anomalies et le motif sont consignés au fil de discussion, puis la confirmation Odoo est appelée. Les autres contrôles comptables restent applicables.
Attestations AT → Paiements sur dérogation permet de retrouver les paiements marqués. Une dérogation sans anomalie ou sans motif est refusée, de même qu'une dérogation sur un paiement qui n'est plus en brouillon.
Un paiement déjà marqué « Confirmé par dérogation » est exclu du contrôle AT lors d'un nouvel appel à la confirmation. Le code ne prévoit pas ici une nouvelle validation de la pièce à chaque confirmation. Ne confondez pas confirmation dans Odoo, paiement bancaire exécuté et couverture d'assurance vérifiée.
2. Les classifications et leurs taux
Attestations AT → Configuration → Classifications et taux
Rien n'est livré, et ce n'est pas une paresse. Le NCCI est un bureau de notation privé dont les États approuvent, modifient ou ignorent les propositions ; New York et la Californie ont leurs propres bureaux ; l'Ohio est un fonds d'État exclusif ; chaque commission canadienne publie sa propre échelle d'unités. Un même code ne vaut pas le même taux d'une juridiction à l'autre, et il change chaque année.
Créez vos classifications, rattachées à leur organisme — c'est lui qui fait qu'un code veut dire quelque chose. Puis ajoutez leurs taux successifs :
- À partir du / Jusqu'au — deux taux d'une même classification ne peuvent pas se chevaucher : à une date donnée, un seul taux doit s'appliquer, sinon la prime dépend de l'ordre de lecture.
- Taux et Base de calcul — par tranche de 100, de 1 000, ou en pourcentage. L'unité est saisie, jamais devinée : un facteur cent dans une déclaration de masse salariale ne se voit pas à la relecture.
- Source — obligatoire. L'organisme, la publication, la page, la date de consultation. Le module refuse d'enregistrer un taux sans elle.
Un taux à zéro sur l'écran de la classification signifie « aucun taux relevé pour aujourd'hui », pas « taux nul ».
3. La modulation d'expérience
Attestations AT → Configuration → Modulations d'expérience
Elle se saisit, elle ne se calcule pas. Aux États-Unis, l'experience rating modification factor est calculé par le bureau de notation compétent à partir de données de sinistralité que l'ERP n'a pas, selon des paramètres propres à chaque juridiction. Au Canada, le taux personnalisé est notifié par la commission. Le recalculer donnerait un nombre différent de celui qui vous sera facturé.
Saisissez la référence de l'avis reçu, l'organisme, la période, le facteur, et sa source. Un facteur de 1 signifie « aucune modulation ».
4. La déclaration des masses salariales
Attestations AT → Déclarations des masses salariales
- Nouveau : organisme, période, et — si vous la connaissez — la date limite de dépôt. Elle n'est fournie par défaut nulle part : elle est étatique ou provinciale, et ce module n'en invente aucune.
- Ajoutez une ligne par classification : nombre de salariés, masse salariale.
- Calculer : chaque ligne prend le taux en vigueur à la fin de la période, applique l'unité déclarée, et la source du taux est recopiée sur la ligne.
- Marquer déclarée.
Le passage à « déclarée » dans Odoo est refusé tant qu'une classification n'a pas de taux relevé. Sa ligne porte l'indicateur de taux absent et un montant technique à zéro ; ce zéro ne vaut pas un taux nul sourcé. Relevez le taux chez l'organisme, citez sa source, recalculez.
Une classification d'une autre juridiction que celle de la déclaration est refusée : un code de classification ne vaut que chez l'organisme qui le publie.
Le module constate. Il produit un montant calculé à partir de ce que vous lui avez donné ; il ne dit pas que c'est le montant dû. La déclaration reste la vôtre et se contrôle avant d'être envoyée. Le bouton « Marquer déclarée » ne fait aucun envoi : il modifie l'état et ajoute un message local.
5. Les portails — l'API et son contournement
Paramètres → Technique → Connexions → Sources (ou l'écran du socle
dyo_connexions_base).
Trois sources répondent à la question « ce tiers est-il couvert, et jusqu'à quand ? », essayées dans l'ordre :
| Ordre | Source | Livrée |
|---|---|---|
| 10 | ISNetworld | inactive, sans clé — non éprouvé en production |
| 20 | Avetta | inactive, sans clé — non éprouvé en production |
| 90 | Registre interne | active, n'exige rien |
Les deux portails sont livrés inactifs et marqués « non éprouvé en production ». Aucun de ces éditeurs ne publie de documentation d'API accessible sans compte : ni le point d'entrée, ni le nom de l'en-tête portant la clé, ni la forme de la réponse n'ont pu être vérifiés par appel réel le 14/09/2026. URL, en-tête et clé sont modifiables depuis l'écran ; reportez ce que votre portail vous indique, activez la source, et éprouvez-la avant de vous y fier.
Sans clé, une source n'est pas « en panne » : elle est ignorée, et le registre interne est utilisé comme repli, dans la même forme. Ce parcours manuel s'appuie sur les pièces et dates que vous avez saisies ; il ne prouve pas une consultation de l'assureur.
Le registre interne cherche le tiers par son numéro d'employeur, à défaut par son identifiant fiscal, à défaut par son nom. Renseignez le numéro : un rapprochement par nom peut être ambigu ; le registre refuse une identification qui ne permet pas de choisir un tiers unique.
6. Portée de la vérification
Cette mise en concordance est fondée sur le code 19.0 ; aucun test Odoo ni appel de portail n'a été exécuté.
Reviews from signed-in customers. One rated review per customer; the publisher can reply. Sign in to leave a review.
- Publisher
- DYONYSOS
- contact@omnifloo.com
- Omnifloo customers
- Support included with your plan: help centre.