Odoo Payroll FR

Odoo Payroll — Paie pour Dolibarr

Résumé : gestion des règles et structures salariales, contrats de paie et bulletins pour les utilisateurs internes de Dolibarr.
Version du module : 1.0.0
Version minimale de Dolibarr déclarée : 18.0
Version minimale de PHP déclarée : 7.4
Versions effectivement vérifiées : aucune version de Dolibarr ou PHP n’a été testée pendant cette vérification documentaire.
Dernière vérification : 2026-09-29

Site officiel de l’éditeur : 01 Consulting

Vidéo de démonstration :

1. Présentation

Odoo Payroll est un module de paie natif pour Dolibarr, développé par 01 Consulting. Malgré son nom, il s’installe dans Dolibarr et ne nécessite pas d’instance Odoo. Il permet de configurer les catégories et règles de salaire, de les réunir dans des structures, de rattacher ces structures à des contrats d’employés et de calculer des bulletins de paie.

Le moteur fournit un cadre de calcul configurable ; il ne fournit pas une garantie de conformité à une législation, à une convention collective ou à un barème fiscal ou social. Les règles CNAS, IRG et autres obligations applicables doivent être conçues et approuvées par un spécialiste de la paie avant utilisation en production.

2. Fonctionnalités

  • Catégories de règles salariales, éventuellement hiérarchisées.
  • Structures salariales composées de règles et pouvant hériter d’une structure parente.
  • Règles conditionnelles à montant fixe, en pourcentage ou exprimées par une formule arithmétique contrôlée.
  • Contrats associés aux utilisateurs Dolibarr, avec salaire, heures hebdomadaires, période, type et département.
  • Calcul des lignes de bulletin, du brut et du net, avec validation et états de suivi.
  • Création individuelle de bulletins et génération en série à partir d’un lot.
  • Retour d’un bulletin validé au brouillon, annulation des bulletins validés et actions de masse, selon les permissions et réglages.
  • Génération d’un PDF de bulletin et association avec le paiement de salaire natif de Dolibarr.
  • Onglet Paie dans la fiche utilisateur, profils d’import et filtrage des données par entité active.

3. Prérequis et compatibilité

  • Dolibarr : le descripteur déclare Dolibarr 18.0 comme version minimale. La version réellement vérifiée dans le cadre de ce wiki est « aucune ».
  • PHP : le descripteur déclare PHP 7.4 comme version minimale ; aucune exécution n’a été testée pendant la rédaction.
  • Modules Dolibarr requis : Utilisateurs (modUser) et Salaires (modSalaries).
  • Base de données : l’initialisation crée des triggers avec une syntaxe MySQL/MariaDB. La compatibilité des triggers avec d’autres moteurs SQL n’est pas établie. Le compte de base de données doit pouvoir créer et supprimer des triggers.
  • Documents : le processus de génération doit pouvoir créer des fichiers dans le répertoire de sortie du module sous les documents Dolibarr.

4. Installation, mise à jour et désactivation

4.1. Installation et activation

  1. Vérifier que les modules Dolibarr Utilisateurs et Salaires sont disponibles.
  2. Installer le dossier du module dans htdocs/custom/payroll ou dans le répertoire personnalisé configuré pour les modules externes.
  3. Dans Dolibarr, ouvrir Accueil > Configuration > Modules/Applications, rechercher Payroll ou Paie, puis activer le module.
  4. À l’activation, le module charge ses tables SQL, complète certaines colonnes de contrat manquantes, ajoute le champ supplémentaire de liaison bulletin-salaire et tente de créer trois triggers sur les tables de salaires.
  5. Vérifier que le menu RH > Paie apparaît et que la page de configuration s’ouvre. Avant un traitement réel, réaliser un calcul complet avec des données de test et vérifier les PDF ainsi que les triggers de paiement.

L’activation met également en place les menus, les droits et les profils d’import. Si la création des triggers échoue, les changements d’état automatiques liés au paiement ne fonctionneront pas correctement ; consulter l’erreur de base de données et les journaux Dolibarr.

4.2. Mise à jour

  1. Sauvegarder la base Dolibarr et les documents avant de remplacer les fichiers du module.
  2. Installer les fichiers de la nouvelle version. Réactiver le module si l’initialisation des tables, des colonnes supplémentaires ou des triggers doit être rejouée.
  3. Contrôler les catégories, règles, contrats et bulletins existants ainsi que les triggers sur les tables de salaires.
  4. Générer un bulletin de test, ouvrir son PDF et vérifier le chemin d’enregistrement et les permissions utilisateur.

Le script d’activation vérifie et ajoute certaines colonnes de contrat et rend obligatoire la catégorie des règles après avoir essayé d’affecter une catégorie aux règles orphelines. Les migrations détaillées dépendent de la version précédente et du schéma déjà installé ; une sauvegarde est nécessaire avant l’opération.

4.3. Désactivation et suppression

La désactivation masque le champ supplémentaire de liaison sur les salaires et supprime les trois triggers créés par le module. Le traitement de désactivation ne supprime pas les tables de paie. Le comportement d’une suppression manuelle des tables ou du dossier du module n’est pas établi ; ne pas supprimer ces données sans sauvegarde et procédure de migration définie.

5. Configuration

Ouvrir la page Configuration du module depuis Dolibarr. L’accès est réservé aux administrateurs ou aux utilisateurs disposant du droit payroll->setup. Les valeurs indiquées ci-dessous sont les valeurs initiales déclarées par le module ou les replis utilisés par l’écran ; une valeur déjà enregistrée dans une entité peut être différente.

RéglageInitialisation ou repliEffet
Numérotation des bulletinsModèle standard ; masque déclaré PSL{00000}. L’écran utilise PAY{00000} comme valeur de repli si aucun masque n’est enregistré.Définit la référence générée pour les bulletins. Contrôler la valeur dans l’écran après installation.
Numérotation des contratsModèle standard, masque CTR{00000}.Définit la référence des contrats.
PAYROLL_ALLOW_CANCEL_CONFIRMED_PAYSLIPSDésactivé (0).Autorise le retour au brouillon et l’annulation d’un bulletin validé.
PAYROLL_CONFIRM_PAYSLIPS_WITHOUT_RECOMPUTINGActivé (1).Empêche le recalcul automatique lors de la validation. Quand l’option est désactivée, la validation recalcule le bulletin.
PAYROLL_ALLOW_EDIT_PAYSLIP_LINESDésactivé (0).Autorise, si activé, la modification manuelle de certains champs des lignes d’un brouillon.
Compte bancaire par défautAucun.Valeur proposée dans le parcours de paiement ; le réglage est affiché si le module Banque est activé.
Mode de paiement par défautAucun.Mode proposé dans le parcours de paiement des salaires.
Types de contrat et départementsDictionnaires gérés dans la configuration.Ajoutez des codes et libellés actifs ; une entrée utilisée par un contrat ne peut pas être supprimée.

Les masques de référence doivent contenir au moins quatre zéros entre accolades, par exemple PAY{00000}. Les modèles de numérotation disponibles peuvent être sélectionnés dans l’écran. Les constantes de configuration sont enregistrées pour l’entité Dolibarr courante.

6. Préparer la configuration de paie

6.1. Catégories

  1. Dans RH > Paie > Catégories de règles salariales, créer une catégorie avec un code et un libellé.
  2. Choisir éventuellement une catégorie parente pour organiser la hiérarchie.
  3. Activer ou désactiver la catégorie selon son usage.

Les codes sont utilisés dans les formules comme des variables de total préfixées par CAT_, par exemple CAT_BASIC. Un code utilisable dans une formule doit suivre les caractères acceptés par l’écran et les profils d’import.

6.2. Structures salariales

  1. Dans Structures, créer une structure avec une référence et un libellé.
  2. Associer les règles à la structure et définir leur ordre de séquence.
  3. Si nécessaire, choisir une structure parente. Le moteur récupère les règles liées à la structure et à sa chaîne de structures parentes.
  4. Enregistrer la structure, puis l’affecter à un contrat.

Une structure référencée par un contrat ou par une structure enfant est protégée contre la suppression par les contrôles du module.

6.3. Règles de salaire et calcul

Une règle possède un code, un libellé, une catégorie, un numéro de séquence, une condition et un type de calcul. Seules les règles actives liées à la structure sont chargées. Le calcul s’effectue par séquence croissante ; les règles déjà calculées sont accessibles sous leur code dans les règles suivantes.

  • Condition toujours vraie : applique la règle sans condition supplémentaire.
  • Plage : compare le salaire aux bornes minimale et maximale configurées ; les bornes sont inclusives.
  • Expression : évalue une condition comme WAGE >= 90000.
  • Montant fixe : montant configuré multiplié par l’expression de quantité ; la quantité par défaut dans les données du modèle est 1.
  • Pourcentage : applique un taux à une expression de base ; un pourcentage négatif peut représenter une retenue.
  • Formule : évalue une expression arithmétique configurée.
  • Afficher sur le bulletin : détermine si la ligne correspondante apparaît sur le PDF.

Le moteur accepte les nombres, variables, parenthèses et opérateurs + - * /. Les opérateurs de comparaison >, >=, <, <=, == et != sont acceptés dans une condition. Il n’exécute ni PHP ni Python ni des fonctions arbitraires. Une variable inconnue, un opérateur invalide ou une division par zéro interrompt le calcul avec une erreur.

VariableValeur utiliséeExemple
WAGESalaire du contrat associé au bulletin.WAGE
WORK_HOURSHeures hebdomadaires du contrat.WAGE / WORK_HOURS
WORKED_DAYSNombre de jours travaillés indiqué sur le bulletin.WAGE * WORKED_DAYS / MONTH_DAYS
MONTH_DAYSNombre de jours du lundi au vendredi dans la période du bulletin.WORKED_DAYS / MONTH_DAYS
Codes de règles antérieuresMontant calculé par une règle précédente dans l’ordre de séquence.BASIC + PRIME
CAT_CODETotal calculé pour une catégorie ; un total vide commence à zéro.CAT_BASIC + CAT_ALW + CAT_DED

MONTH_DAYS ne retire pas les jours fériés : seuls les samedis et dimanches sont exclus. Les exemples de formules sont des exemples de syntaxe et ne constituent pas des recommandations de barème.

Le brut et le net sont alimentés à partir des règles portant les codes GROSS et NET. Si ces règles ne fournissent pas les totaux, le moteur utilise les catégories portant ces codes comme solution de repli.

6.4. Contrats

  1. Dans Contrats, créer un contrat pour un utilisateur interne Dolibarr.
  2. Renseigner la structure, le salaire, le nombre d’heures hebdomadaires, la date de début et, si applicable, la date de fin.
  3. Choisir éventuellement un type de contrat et un département dans les dictionnaires configurés.
  4. Enregistrer et activer le contrat lorsqu’il doit être proposé pour la génération d’un lot.

Un contrat doit avoir un employé et une date de début. Les formulaires et classes du module empêchent de supprimer certains objets encore référencés, notamment un contrat associé à des bulletins.

7. Gérer les bulletins de paie

7.1. Créer et calculer un bulletin individuel

  1. Ouvrir RH > Paie > Bulletins salariés, puis créer un bulletin.
  2. Sélectionner l’employé, son contrat, la période et le nombre de jours travaillés. La création d’un bulletin nécessite le droit payroll->write.
  3. Enregistrer le bulletin ; il commence au statut Brouillon.
  4. Cliquer sur Calculer. Le calcul exige un contrat et une structure salariale disponible. Si la structure n’est pas encore enregistrée sur le bulletin, celle du contrat lui est affectée.
  5. Contrôler les lignes, le brut et le net. Tant que le bulletin est brouillon, corriger la configuration ou les données, puis recalculer.
  6. Valider avec un utilisateur disposant du droit payroll->validate. Vérifier le résultat avant validation, car le réglage initial empêche le recalcul pendant cette étape.

En cas de période inversée, de contrat ou structure manquant, de variable inconnue ou d’expression invalide, le calcul affiche une erreur et ne doit pas être considéré comme terminé.

7.2. Générer des bulletins par lot

  1. Ouvrir RH > Paie > Lots de bulletins et créer un lot avec un libellé et une période valide.
  2. Sur la fiche du lot, lancer Générer. Le module sélectionne les contrats actifs ayant une structure, dont les dates couvrent tout ou partie de la période du lot, et pour lesquels le lot ne contient pas encore de bulletin.
  3. Le module crée un brouillon par contrat éligible avec 22 jours travaillés, puis tente de calculer les bulletins brouillons du lot. Vérifier et corriger les jours travaillés lorsque la situation réelle diffère.
  4. Examiner les erreurs de calcul et corriger les contrats, structures ou règles concernés avant de valider.
  5. Valider les bulletins du lot. L’action est refusée si aucun brouillon n’est présent ou si un brouillon n’a aucune ligne calculée. Lorsque la validation réussit, le lot passe à l’état fermé.

Une génération répétée dans le même lot n’ajoute pas un second bulletin pour un contrat déjà présent dans ce lot. Cette vérification porte sur le contrat et le lot ; elle ne constitue pas une protection générale contre deux lots couvrant la même période.

7.3. États, retour au brouillon et annulation

  • Brouillon (0) : calculable et supprimable individuellement ; les lignes peuvent être modifiées si PAYROLL_ALLOW_EDIT_PAYSLIP_LINES est activé.
  • Validé (1) : état obtenu après validation. L’action de validation peut recalculer ou non selon le réglage mentionné ci-dessus.
  • Payé (2) : état associé au paiement Dolibarr lorsque le bulletin est relié au salaire correspondant.
  • Annulé (9) : état de bulletin annulé.

Avec PAYROLL_ALLOW_CANCEL_CONFIRMED_PAYSLIPS activé, un utilisateur ayant le droit de validation peut ramener un bulletin validé au brouillon, l’annuler, et utiliser l’action de masse Retourner au brouillon dans la liste des bulletins. L’action de masse ne traite que les bulletins validés sélectionnés. Le code de l’action individuelle ne vérifie que le droit et le réglage avant de changer l’état ; contrôler le bulletin et son éventuel salaire lié avant de l’utiliser.

Un bulletin payé ne doit pas être traité comme un bulletin validé ordinaire : la synchronisation du salaire peut modifier son état et le lot ne peut pas être rouvert ou supprimé s’il contient des bulletins payés. La suppression individuelle d’un bulletin est réservée aux brouillons et supprime aussi ses lignes de calcul.

7.4. Rouvrir ou supprimer un lot

Un lot fermé peut être rouvert par un utilisateur ayant le droit de validation si aucun de ses bulletins n’est payé. La réouverture remet les bulletins validés du lot au brouillon. La suppression d’un lot par un utilisateur ayant le droit de suppression supprime le lot, ses bulletins et leurs lignes ; elle est refusée en présence d’un bulletin payé. Cette suppression est définitive : vérifier la liste affichée dans la confirmation avant de poursuivre.

8. Fiche employé, paiement et PDF

8.1. Onglet Paie de l’employé

Le module ajoute un onglet Paie à la fiche utilisateur. Un utilisateur ayant le droit de lecture Paie peut consulter l’onglet ; l’employé peut également ouvrir sa propre fiche. L’onglet liste ses contrats et bulletins. Les boutons de création sont conditionnés par le droit d’écriture payroll->write. La page applique le filtrage de l’entité Dolibarr courante.

8.2. Lier un bulletin au paiement natif Dolibarr

Lors de l’activation, le module ajoute un champ supplémentaire au salaire Dolibarr pour sélectionner un bulletin payé du même employé. Une contrainte empêche de rattacher le même bulletin à plusieurs salaires. Le trigger SQL synchronise l’état du bulletin lié lorsque la valeur « payé » du salaire change : il passe le bulletin validé à payé lorsque le salaire est marqué payé, et le remet à validé lorsque le salaire est marqué non payé.

Le trigger Dolibarr associé à la création d’un paiement de salaire met également le bulletin lié au statut payé. Ces automatismes dépendent de la présence du champ supplémentaire, du lien sélectionné et des triggers installés avec succès.

8.3. Générer et consulter le PDF

  1. Ouvrir la fiche du bulletin et lancer la génération du document.
  2. Le module produit un PDF A4 qui présente la société, l’employé, le statut, le contrat, la structure, la période, les jours travaillés, les lignes visibles et les totaux brut/net.
  3. Les règles marquées « afficher sur le bulletin » sont incluses ; les autres règles sont omises du tableau détaillé.
  4. Le PDF est enregistré sous le répertoire de sortie du module pour l’entité courante, ou, à défaut, dans DOL_DATA_ROOT/payroll, dans un dossier portant la référence du bulletin. La fiche permet ensuite de l’afficher ou de le télécharger.

Une nouvelle génération écrit le PDF à la même référence de bulletin. Les documents existants ne sont pas automatiquement supprimés lors des changements d’état.

9. Menus, permissions et visibilité

Droit DolibarrUsage
payroll->readConsulter le tableau de bord, les bulletins, lots et documents, accéder à l’aide ; permet l’accès en lecture à plusieurs listes.
payroll->setupConfigurer les catégories, règles, structures, contrats et paramètres. Les administrateurs ont également accès à la configuration.
payroll->writeCréer et modifier les bulletins, contrats et lots selon les contrôles de chaque écran ; lancer des calculs.
payroll->validateValider les bulletins ; selon le réglage, remettre en brouillon ou annuler les bulletins validés ; valider/réouvrir les lots.
payroll->deleteSupprimer les enregistrements autorisés par leur état et leurs dépendances.

Les menus de catégories, règles, structures et contrats sont rattachés au menu RH > Paie et conditionnés au droit de configuration. Les accès aux bulletins et lots requièrent la lecture ; la création est réservée aux droits correspondants. Les droits natifs Dolibarr sur les utilisateurs et salaires restent également pertinents.

10. Données, imports, triggers et journaux

  • Données stockées : catégories, règles, structures, associations entre structures et règles, contrats, bulletins, lignes de calcul et lots dans des tables propres au module ; liaison du bulletin sur l’extrafield de l’objet Salaire.
  • Imports : des profils d’import sont déclarés pour les catégories, règles, structures et associations structure-règle. Les contrats et bulletins ne figurent pas parmi les profils déclarés dans le descripteur.
  • Triggers SQL : un trigger synchronise certains changements de statut entre le salaire payé et le bulletin lié. Deux autres triggers empêchent l’affectation d’un même bulletin à des salaires différents.
  • Trigger Dolibarr : à la création du paiement d’un salaire, le module met le bulletin relié au statut payé.
  • Journal technique observé : le trigger de paiement écrit dans /tmp/payroll_debug.log des horodatages, identifiants de salaires, résultats SQL et messages d’erreur. La rotation, la durée de conservation et les permissions de ce fichier ne sont pas gérées par le module ; l’administrateur du serveur doit les contrôler.
  • Fichiers : les PDF générés sont écrits sous le répertoire de documents de sortie du module décrit dans la section PDF. Aucune tâche planifiée ou règle de purge des PDF et données de paie n’est déclarée par le module.
  • Multi-entité : les opérations et listes sont filtrées sur l’entité Dolibarr active ; les constantes de configuration sont enregistrées avec cette entité.

11. Dépannage

SymptômeVérifications
Le menu ou une page Paie n’est pas accessible.Vérifier que le module est activé, que le rôle possède le droit Paie requis et que les modules Dolibarr Utilisateurs et Salaires sont activés.
Le calcul ne démarre pas ou retourne une erreur.Vérifier l’employé, le contrat, la structure, les dates, les règles actives, les séquences et la syntaxe des expressions. Une variable inconnue ou une division par zéro interrompt le calcul.
La validation ne met pas à jour les montants.Le réglage initial désactive le recalcul lors de la validation. Recalculer le brouillon avant validation ou modifier cette option selon la procédure de paie.
Le lot ne génère aucun bulletin.Vérifier la période du lot et l’existence de contrats actifs, associés à une structure et chevauchant la période. Vérifier aussi si un bulletin du contrat existe déjà dans ce lot.
La validation du lot est refusée.Chaque brouillon doit avoir au moins une ligne de calcul. Recalculer ou corriger les bulletins signalés avant de relancer la validation.
Le champ de sélection du bulletin est absent du salaire.Vérifier l’activation du module et l’existence/activation de l’extrafield ajouté à l’objet Salaire. Réactiver le module si nécessaire, avec les droits SQL adéquats.
Le statut payé ne suit pas le paiement Dolibarr.Vérifier que le bulletin est lié au bon salaire, que les triggers sont installés et consulter les journaux Dolibarr ainsi que /tmp/payroll_debug.log.
Le PDF est absent ou ne peut pas être ouvert.Contrôler les droits d’écriture du serveur sur le répertoire de sortie et l’existence du document. Examiner le message d’erreur et les journaux Dolibarr.

12. Limites et précautions

  • Faire valider toutes les formules de paie par un spécialiste connaissant la législation applicable avant de traiter des salaires réels.
  • Le calcul de MONTH_DAYS exclut les samedis et dimanches mais conserve les jours fériés ; il ne lit pas un calendrier de congés.
  • La validation d’un bulletin ne recalcule pas les montants avec la configuration initiale. Vérifier les lignes et recalculer explicitement avant confirmation si les données ont changé.
  • La génération par lot utilise initialement 22 jours travaillés pour chaque bulletin créé. Adapter cette valeur à la situation réelle avant validation.
  • Le retour au brouillon et l’annulation dépendent d’un réglage désactivé par défaut. Une modification d’état d’un bulletin relié à un salaire doit être coordonnée avec le suivi comptable et le paiement Dolibarr.
  • La suppression d’un lot supprime les bulletins et calculs qu’il contient, sauf si la présence d’un bulletin payé bloque la suppression. Cette opération doit être vérifiée avant confirmation.
  • La synchronisation automatique des statuts dépend de triggers MySQL/MariaDB et des permissions de création de triggers ; la compatibilité avec les autres moteurs de base de données reste à confirmer.

13. Assistance

Pour signaler un problème, fournir la version du module, les versions de Dolibarr et PHP, l’entité concernée, les étapes de reproduction et le message d’erreur expurgé des noms, salaires et autres données personnelles. Le module est édité par 01 Consulting. Aucun courriel de support n’est indiqué dans les fichiers du module consultés.