Certified Payroll — Davis-Bacon : déterminations de salaire, avantages sociaux, apprentis et dépôt (Odoo Community)
Certified Payroll for Davis Bacon and Davis-Bacon prevailing wage work: loads the wage determination from SAM.gov by number — classifications, base rates and fringes — then tracks fringe benefit plans, apprentice ratios, overtime and weekly WH-347 payroll. No API key. Import and manual entry always
Screenshots
-
Certified Payroll — Davis-Bacon : déterminations de salaire, avantages sociaux, apprentis et dépôt (Odoo Community) — capture 1 -
Certified Payroll — Davis-Bacon : déterminations de salaire, avantages sociaux, apprentis et dépôt (Odoo Community) — capture 2 -
Certified Payroll — Davis-Bacon : déterminations de salaire, avantages sociaux, apprentis et dépôt (Odoo Community) — capture 3 -
Certified Payroll — Davis-Bacon : déterminations de salaire, avantages sociaux, apprentis et dépôt (Odoo Community) — capture 4 -
Certified Payroll — Davis-Bacon : déterminations de salaire, avantages sociaux, apprentis et dépôt (Odoo Community) — capture 5
Certified Payroll — Davis‑Bacon
Les taux en vigueur par comté et par classification, les avantages sociaux par régime, les apprentis et leurs ratios, les heures supplémentaires, les feuilles de temps et le dépôt. Avec le connecteur SAM.gov — et son contournement.
| ✔ Odoo 20 Community | ✔ Odoo.sh | ✔ Odoo Online | ✔ Fonctionne sans clé d’API |
Le problème avant la solution
Le registre certifié ne devient difficile qu’au‑delà du premier chantier. Les taux en vigueur changent par comté et par type de construction, ils se révisent, et la détermination incorporée au contrat n’est pas forcément la dernière publiée. Les avantages sociaux se détaillent par régime depuis que le verso du WH‑347 a été refondu. Les apprentis ont un palier, un programme, et un ratio qu’aucun texte fédéral ne chiffre. Et chaque semaine se dépose.
Hors d’Odoo, ce besoin est servi par LCPtracker, eMars ou Points North — des abonnements à part, avec leurs propres saisies. Au store Odoo, la requête certified payroll ne rend aucune application.
L’application en marche
Ce que l’édition complète ajoute
Les déterminations de salaire, et leur provenance
Taux par État, comté, classification et type de construction, avec leur révision et leur date. La provenance est toujours affichée : rapatriée d’un service, importée d’un fichier, ou saisie à la main. Un taux rapatrié et un taux recopié ne se défendent pas de la même façon devant un contrôleur.
Les avantages sociaux par régime
Nom, type, numéro de plan, funded ou unfunded, crédit horaire par ouvrier — exactement ce que le verso du WH‑347 dans sa révision de janvier 2025 réclame dès qu’un montant figure en colonne (6B). Le module rapproche le détail du montant global et signale l’écart.
Les apprentis, leurs paliers, leur ratio
Programmes enregistrés auprès de l’Office of Apprenticeship ou d’une State Apprenticeship Agency, paliers de taux, et constat de ratio par classification. Aucun ratio n’est livré par défaut : voir plus bas, c’est délibéré.
Les heures supplémentaires
Constat de majoration au‑delà du seuil hebdomadaire, et relevé des heures qui dépassent le seuil sans être portées en « OT ». La majoration porte sur le taux de base seul : c’est ce que dit le texte, et c’est ce que compare le module.
Les feuilles de temps
Reprise des heures depuis les feuilles de temps de la semaine, employé par employé. Seules les heures : une feuille de temps ne porte ni le taux, ni le brut, ni les retenues, et le module ne les invente pas.
Le dépôt
Regroupement de registres certifiés, export, suivi de la transmission et de l’accusé. Quatre voies à parts égales — portail, fichier, courriel, papier — parce que le règlement impose de laisser les autres voies ouvertes.
Les taux se chargent, ils ne se recopient pas
Vous tapez un numéro, le module va chercher la détermination. Il interroge SAM.gov, sans clé d’accès, et en rapporte la bonne révision, la date de publication, le type de construction, les comtés, et toutes les classifications avec leur taux de base et leurs avantages sociaux. La révision est demandée, jamais supposée : 29 CFR 1.6(c)(1), une détermination révisée remplace la précédente.
Mesuré sur sept déterminations réelles — Alabama, Californie, New York, Texas, Washington ; Building, Heavy, Highway, Residential : 535 lignes de taux publiées, 535 lues, aucune perdue.
Et la route n’est pas documentée par la GSA, donc elle peut changer sans préavis : c’est pourquoi l’import de fichier et la saisie manuelle restent des chemins de plein exercice, sans clé ni réseau. Une ligne dont le libellé n’a pas pu être rattaché ressort marquée, jamais tue, et ne peut pas atteindre un chantier tant qu’elle n’est pas nommée.
Le connecteur se greffe sur la chaîne de sources de dyo_connexions_base —
il n’en écrit pas une seconde. Il hérite donc de sa file, de son journal d’appels, de sa
réponse gardée datée, et de sa règle d’or : une panne du service n’efface jamais
ce que vous avez relevé vous‑même.
Les écrans
Ce qui n’a pas été trouvé
Il donne, valeur par valeur, la source primaire, la citation exacte et la date de consultation — et il dit ce qui n’a pas été trouvé, avec le détail des recherches menées. Neuf points y sont ouverts. Deux exemples.
Le ratio maximal d’apprentis. 29 CFR 5.5(a)(4)(i)(C) renvoie au ratio du programme enregistré ou à celui de la localité ; il n’en chiffre aucun. Le champ naît donc vide, avec sa réserve écrite, et sans ratio saisi le module ne produit aucun constat de ratio — et surtout pas un constat favorable. Un « 1 pour 5 » plausible et faux aurait éteint la vigilance.
Le format de dépôt. 29 CFR 5.5(a)(3)(ii)(B) admet « Optional Form WH-347 or in any other format desired » sans normaliser aucun format, et les portails du marché ne publient pas le leur. L’export est donc un CSV dont les colonnes reprennent les cases du WH‑347 : il se relit et se retaille, il ne prétend être attendu par aucun portail.
Le module constate, il ne conclut pas. Il dit qu’une ligne est sous le taux en vigueur saisi, que la majoration n’atteint pas le coefficient, qu’un apprenti n’a pas de programme rattaché, que le rapport apprentis/journeyworkers dépasse le ratio relevé. Il ne dit jamais que l’entreprise est en infraction : cette qualification appartient à l’agence contractante et à la Wage and Hour Division.
Non éprouvé en production. Ni le connecteur SAM.gov, ni l’état WH‑347, ni le dépôt n’ont été éprouvés contre un service, une agence ou un portail réels. Le connecteur a été exécuté contre des réponses enregistrées. Commencez par une semaine d’essai.
L’édition gratuite, et celle‑ci
| Lite (gratuit) | Ce module | |
|---|---|---|
| Chantiers, classifications, registres, lignes | ✔ | ✔ |
| Constat de taux, impression du WH‑347 | ✔ | ✔ |
| Déterminations par comté et classification | — | ✔ |
| Import de fichier et saisie manuelle des taux | — | ✔ |
| Connecteur SAM.gov sur la chaîne de sources | — | ✔ |
| Avantages sociaux détaillés par régime | — | ✔ |
| Apprentis, paliers et constat de ratio | — | ✔ |
| Constat de majoration des heures supplémentaires | — | ✔ |
| Reprise des feuilles de temps | — | ✔ |
| Dépôt, export et suivi de l’accusé | — | ✔ |
| — | ✔ |
Ce module s’installe sur l’édition gratuite. Les chantiers, les registres et les lignes déjà saisis restent en place : rien n’est à ressaisir.
Ce que ce module ne fait pas
- Il ne calcule pas la paie. Odoo 20 Community n’a pas de module de paie ; ce module s’appuie sur les feuilles de temps et sur la saisie.
- Il ne produit aucune signature : le règlement exige une signature manuscrite d’origine ou une signature électronique juridiquement valable, apportée par le système de dépôt.
- Il n’invente aucune référence de dépôt : il enregistre celle que le portail ou l’agence rend.
- Il ne redistribue pas les heures entre normales et supplémentaires : le seuil s’apprécie sur toute la semaine de travail de la personne, chantiers privés compris.
- Il n’offre aucun champ pour un numéro de sécurité sociale complet, une adresse ou un téléphone d’ouvrier — le règlement les exclut du registre transmis.
Fiche technique
| Version | 20.0.1.1.0 |
| Dépendances | dyo_paie_certifiee_us_lite, dyo_connexions_base, hr, hr_timesheet |
| Licence | OPL‑1 |
| Modèles ajoutés | dyo.dbra.wd, dyo.dbra.wd.taux, dyo.dbra.plan.fringe, dyo.dbra.ligne.fringe, dyo.dbra.apprentissage, dyo.dbra.apprentissage.palier, dyo.dbra.depot |
| Modèles étendus | dyo.dbra.* du module gratuit, et les quatre modèles de dyo_connexions_base |
| Clé d’API | Facultative. Le module fonctionne entièrement sans. |
| Langue | Français, avec les libellés de formulaire en anglais là où le WH‑347 les impose |
DYONYSOS — welcome@dyonysos.fr
What this app does not do
- Il ne calcule pas la paie. Odoo 20 Community n’a pas de module de paie ; ce module s’appuie sur les feuilles de temps et sur la saisie.
- Il ne produit aucune signature : le règlement exige une signature manuscrite d’origine ou une signature électronique juridiquement valable, apportée par le système de dépôt.
- Il n’invente aucune référence de dépôt : il enregistre celle que le portail ou l’agence rend.
- Il ne redistribue pas les heures entre normales et supplémentaires : le seuil s’apprécie sur toute la semaine de travail de la personne, chantiers privés compris.
- Il n’offre aucun champ pour un numéro de sécurité sociale complet, une adresse ou un téléphone d’ouvrier — le règlement les exclut du registre transmis.
Store apps required
- Certified Payroll Lite — Davis-Bacon, registre hebdomadaire et formulaire WH-347 (gratuit)
dyo_paie_certifiee_us_lite
Odoo Community modules used
hrhr_timesheet
| Series | Version | Status | Published on |
|---|---|---|---|
| 20.0 | 20.0.1.1.0 | Available | 02/10/2026 |
| 19.0 | 19.0.1.1.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 » | conforme | info |
| Titre de 70 caractères au plus (115 actuellement) | absent | info |
| Résumé en français | absent | info |
Guide utilisateur — Certified Payroll (Davis-Bacon, édition complète)
Les taux en vigueur, les avantages sociaux, les apprentis, les heures supplémentaires et le dépôt.
Avant toute mise en production. Ce module est livré « non éprouvé en production ». Ni le connecteur SAM.gov, ni l'état WH-347, ni le dépôt n'ont été éprouvés contre un service, une agence ou un portail réels : le connecteur a été exécuté contre des réponses enregistrées. Les valeurs réglementaires livrées sont des valeurs par défaut sourcées, réglables, et non des citations opposables. — et ouvre neuf points « non trouvé ».
Ce guide suppose le guide de la version gratuite connu : chantiers, classifications, registres, lignes, constats, certification, WH-347.
1. Les déterminations de salaire — trois chemins, à parts égales
Menu Paie certifiée US → Configuration → Déterminations de salaire.
Ce qu'il faut savoir avant de commencer
Le module charge les déterminations depuis SAM.gov, par leur numéro, sans
clé d'accès. C'est le chemin le plus court : vous tapez AL20260100, le module
va chercher la bonne révision, la date de publication, le type de construction,
les comtés et toutes les classifications avec leurs taux.
Mais cette route n'est pas documentée par la GSA. Le catalogue officiel n'en dit rien ; elle peut changer sans préavis. L'import de fichier et la saisie manuelle restent donc des chemins de plein exercice, sans clé ni réseau — c'est eux qu'il faut connaître le jour où le service ne répond plus.
Chemin 1 (le plus court) — charger depuis SAM.gov
- Nouveau, saisissez le numéro de la détermination — celui que le contrat
incorpore, par exemple
AL20260100. - Bouton Consulter maintenant.
- Le module demande la dernière révision publiée, puis la détermination, et remplit les classifications.
Pour figer une révision précise, saisissez AL20260100/1 : le module prend
celle-là et ne cherche pas plus loin.
Ce qu'il ne fait pas : deviner. Une ligne de taux dont le libellé n'a pas pu être rattaché ressort marquée « libellé non reconnu » — jamais supprimée — et la détermination refuse de s'appliquer à un chantier tant qu'elle n'est pas nommée. Une classification anonyme serait un taux auquel aucun salarié n'est rattaché, donc un taux que personne ne vérifie.
Chemin 2 — importer un fichier
- Ouvrez
sam.gov/wage-determinationset trouvez votre détermination. - Copiez ses classifications et ses taux dans un tableur.
- Enregistrez en CSV.
- Dans Odoo : Nouveau, saisissez le numéro et la révision, puis bouton Importer un fichier.
Le lecteur détecte l'encodage et le séparateur, et reconnaît les en-têtes
de colonne sous plusieurs noms, en français comme en anglais — Classification,
Libellé, Rate, Taux de base, Fringe, Avantages sociaux…
Ce qu'il ne fait pas : deviner. Une colonne de taux introuvable est dite dans le rapport, pas comblée ; les valeurs restent à zéro et sont marquées « non reçues », ce qui n'est pas la même chose qu'un taux de zéro. Une ligne sans libellé de classification est comptée comme ignorée, et le rapport donne son numéro.
Les montants à la française sont lus correctement. Un fichier sorti d'un tableur français écrit « 34,50 ». Le module le lit comme 34,50 $ et non comme 3 450 $ — la règle appliquée, et ses limites, sont écrites dans le module.
Chemin 3 — saisir à la main
Nouveau, puis l'onglet Taux publiés en saisie directe. C'est le chemin qui ne tombe jamais.
Chemin 4 — brancher un autre service
Le service SAM.gov est livré réglé et actif. Si vous préférez le vôtre — interne ou commercial — la fiche se règle au menu Référentiels publics → Configuration → Services et chaînes de repli, ligne « SAM.gov — déterminations de salaire Davis-Bacon ».
| Champ | Ce qu'il commande |
|---|---|
| Actif | Livré coché : la route de SAM.gov répond. |
| URL de base | Livrée à https://sam.gov — et non api.sam.gov, qui est l'hôte des interfaces à clé et refuse ces appels. |
| Chemin de la requête | Livré à /api/prod/wdol/v1/wd/{id}, avec {id} là où le numéro se place. Le module y ajoute /history pour trouver la révision, puis /{révision}. |
| Clé d'accès | Inutile pour SAM.gov. Le champ sert si vous branchez un service qui en demande une. |
| Clé portant la liste des taux | Le chemin, dans la réponse JSON, vers la liste des classifications — payload.rates par exemple. Laissé vide, le connecteur essaie quelques noms usuels. |
Puis, sur la détermination, bouton Consulter maintenant.
Le module n'appelle rien depuis l'écran. Il inscrit la question dans la file du socle
dyo_connexions_base; c'est un travail planifié, ou un bouton explicite, qui la vide. Le journal des appels garde la trace de chaque tentative.Une panne n'efface jamais vos taux. Si le service tombe, la dernière réponse connue reste, avec sa date, et ce que vous avez saisi ou importé vous-même n'est pas touché.
Tant que le chemin de requête est vide, la chaîne écarte le service avec le motif « clé absente » — sans le marquer en panne — et descend d'un cran.
La provenance, toujours affichée
Chaque détermination porte sa provenance : Rapatriée d'un service, Importée d'un fichier, ou Saisie manuelle, avec le nom du service ou du fichier et la date de relevé. Un taux rapatrié et un taux recopié ne se défendent pas de la même façon devant un contrôleur.
Générale ou de projet : deux régimes de validité
| Type | Validité |
|---|---|
| Générale | Aucune date d'expiration. Valide jusqu'à révision, remplacement ou annulation — 29 CFR 1.6(a)(2)(i). |
| De projet | Effective 180 jours calendaires à compter de sa date ; nulle si elle n'est pas incorporée dans ce délai — 29 CFR 1.6(a)(3)(i). |
Le module ne calcule aucune fin d'effet pour une détermination générale. Lui en inventer une serait une valeur sans base.
Appliquer les taux au chantier
Sur le chantier, rattachez la détermination, puis Appliquer les taux au chantier. Les classifications absentes sont créées, celles qui existent sont mises à jour, et chacune garde le lien vers le taux publié dont elle vient.
Si vous modifiez ensuite un taux à la main, le module relève l'écart avec le taux publié — et dit qu'il ne choisit pas lequel des deux s'applique.
2. Les avantages sociaux par régime
Menu Configuration → Régimes d'avantages sociaux.
Le verso du WH-347 dans sa révision de janvier 2025 demande, dès qu'un montant figure en colonne (6B), le détail par régime : nom, type, numéro de plan, case funded ou unfunded, et le crédit horaire revendiqué pour chaque ouvrier.
L'ancien verso ne demandait pas cela. Il se contentait de deux cases — avantages versés à des régimes approuvés, ou versés en espèces — et d'une zone d'exceptions. Travailler de mémoire, ici, c'est remplir un formulaire qui n'existe plus.
Saisissez vos régimes une fois ; ils se réutilisent de semaine en semaine. Puis, sur chaque ligne de registre, onglet Crédits d'avantages sociaux par régime, le crédit horaire de la semaine.
Le module rapproche le total du détail et le montant global de la colonne (6B), et signale l'écart. C'est le genre d'écart qui ne se voit pas à l'œil nu.
Les régimes non financés
29 CFR 5.5(a)(1)(v) subordonne la prise en compte des coûts anticipés d'un régime non financé à une constatation du Secretary of Labor, obtenue sur demande écrite de l'entrepreneur selon les critères du 29 CFR 5.28. Le champ Référence de la constatation l'enregistre ; son absence est signalée.
Le module constate ; il ne se prononce pas sur la situation de l'entreprise.
3. Les apprentis
Menu Configuration → Programmes d'apprentissage.
29 CFR 5.5(a)(4)(i)(A) n'admet le taux réduit que pour une personne individuellement inscrite à un programme enregistré auprès de l'Office of Apprenticeship (OA) ou d'une State Apprenticeship Agency (SAA) reconnue. Le verso du WH-347 fait certifier nommément le programme et son organisme.
Le module refuse donc une ligne au statut « apprenti enregistré » sans programme rattaché.
Le ratio — et pourquoi il est vide
Aucune valeur de ratio n'est livrée, et c'est délibéré. 29 CFR 5.5(a)(4)(i)(C) ne chiffre aucun ratio : il renvoie au « ratio permitted to the contractor as to the entire work force under the registered program or the ratio applicable to the locality of the project ». Il n'y a pas de ratio fédéral à poser.
Relevez-le sur votre programme enregistré, ou sur le standard de la localité, et saisissez-le — en renseignant d'où vient le chiffre.
Tant qu'il est vide, le module ne fait aucun constat de ratio. Il écrit qu'il ne compare pas, et pourquoi. Il ne déclare surtout pas le ratio respecté : l'absence de référence n'est pas une conformité.
Le champ Réserve sur le ratio porte tout cela en clair, sur chaque programme.
Les paliers
Le règlement ne publie aucune grille de paliers : elle se recopie du programme. Deux pourcentages par palier — sur le taux de base, et sur les avantages sociaux — parce que beaucoup de programmes servent les avantages sociaux à 100 % dès le premier palier, sans que ce soit une règle.
Sans palier saisi, le module ne calcule aucun taux attendu. Il ne remplace pas une grille absente par une grille supposée.
Le constat de ratio
Sur le registre, onglet Constats de l'édition complète, section Ratio d'apprentis : le rapport apprentis / journeyworkers par classification, comparé au ratio saisi. Un dépassement est relevé en citant 29 CFR 5.5(a)(4)(i)(C), qui prévoit qu'un apprenti travaillant au-delà du ratio permis soit payé au taux de la détermination pour le travail réellement exécuté.
Constat de comparaison, pas qualification.
4. Les heures supplémentaires
29 CFR 5.5(b)(1) impose, au-delà de quarante heures dans la semaine, une rémunération « at a rate not less than one and one-half times the basic rate of pay ».
Deux points que le module tient, et qui se trompent souvent :
- La majoration porte sur le taux de base, pas sur le total avec avantages sociaux. Sur une classification à 34,50 $ de base et 14,20 $ d'avantages, le taux majoré attendu est 51,75 $ — et non 73,05 $. Majorer le total signalerait à tort toutes les lignes.
- Le seuil est hebdomadaire, pas journalier. Douze heures un jour et rien les autres ne déclenchent rien : aucun texte fédéral ne pose de seuil journalier pour le Davis-Bacon. Certaines lois d'État en posent un ; le module n'en pose aucun, et le seuil se règle.
Le module relève aussi les heures au-delà du seuil qui ne sont pas portées en « OT ». Il les signale ; il ne les redistribue pas.
5. Les feuilles de temps
Sur un registre en brouillon, bouton Reprendre les feuilles de temps.
Choisissez la classification par défaut et les employés. Le module lit les feuilles de temps de la semaine et remplit les sept jours.
Seules les heures sont reprises. Une feuille de temps ne porte ni le taux payé, ni le brut, ni les retenues : les colonnes (6) à (9) du WH-347 restent à renseigner. Le module ne les invente pas.
Les heures reprises sont portées en normales. Le seuil de 29 CFR 5.5(b)(1) s'apprécie sur l'ensemble de la semaine de travail de la personne, chantiers privés compris : les feuilles de temps d'un seul chantier ne permettent pas de trancher. C'est à vous de dire lesquelles sont supplémentaires — le module signale ensuite l'écart s'il en reste.
La classification par défaut se corrige ligne à ligne : 29 CFR 5.5(a)(1)(i) fait dépendre le taux du travail réellement exécuté, qu'une feuille de temps ne porte pas de façon sûre.
6. Déposer
Depuis un registre certifié, bouton Déposer. Ou menu Paie certifiée US → Dépôts → Nouveau pour en regrouper plusieurs.
- Préparer le fichier — produit un CSV.
- Marquer transmis — passe les registres à l'état déposé.
- Enregistrer l'accusé — après avoir recopié la référence que le portail ou l'agence a rendue.
Les quatre voies, à parts égales
29 CFR 5.5(a)(3)(ii)(A) admet le dépôt électronique à trois conditions cumulatives : le système exige une signature électronique juridiquement valable ; il laisse l'entrepreneur, l'agence et le Department of Labor accéder aux registres pendant au moins trois ans après l'achèvement des travaux ; et d'autres voies restent permises lorsque l'entrepreneur ne peut pas s'en servir.
Ces trois conditions pèsent sur le système de dépôt, pas sur Odoo. C'est pourquoi les quatre voies — portail, fichier, courriel, papier — sont ici à parts égales.
Le format
Non trouvé. Aucun format d'échange normalisé n'existe. 29 CFR 5.5(a)(3)(ii)(B) admet « Optional Form WH-347 or in any other format desired » sans normaliser de format de fichier, et les portails du marché (LCPtracker, eMars, Points North) définissent chacun le leur sans le publier.
Le fichier produit est un CSV dont les colonnes reprennent, dans l'ordre, les cases du WH-347. Il se relit et se retaille ; il ne prétend être attendu par aucun portail. Vérifiez-le contre les exigences de votre destinataire avant le premier dépôt réel.
Le module n'invente aucune référence de dépôt : il refuse d'enregistrer un accusé sans la référence que le destinataire a rendue. Et un refus exige son motif écrit — sans lui, la correction se ferait de mémoire.
7. Où lire ce qui n'a pas été trouvé
Il donne pour chaque valeur la citation verbatim de sa source et la date de consultation, et il ouvre neuf points « non trouvé » avec le détail des recherches menées — dont le ratio d'apprentis, la grille des paliers, le format de dépôt, et la qualification des « 7 jours » du 29 CFR 3.4(a) en jours ouvrables ou calendaires.
Il donne aussi les commandes pour revérifier les sources à une date ultérieure.
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.