Quatre domaines RH fonctionnent mal dans Odoo Community, et pour la même raison : ils comparent des données qui ne sont pas comparables. Le temps pointé sans le temps théorique, une note de frais sans circuit de visa, un congé sans les jours fériés, une paie sans postes de travail.
Trente-quatre modules communautaires y remédient, et terminent cinq dépôts RH.
Résumé
Neuf modules traitent les présences : la comparaison temps théorique / temps réel, une vue calendrier, le pointage par badge RFID, des motifs de présence avec le temps de pause inclus, l'historique complet accessible à l'employé, la traçabilité des modifications, le lien aux horaires multiples, et la mise à jour des heures supplémentaires depuis le contrat.
Dix modules traitent les notes de frais : un visa par paliers, des règles d'exception bloquantes, une séquence avec son option, la traçabilité des paiements, l'annulation intégrale, le rattachement d'une facture fournisseur, un reçu d'achat au lieu d'une facture, une petite caisse, et l'avance sur frais avec sa séquence.
Huit modules traitent les congés : des demandes périodiques en une saisie, un filtre par type sur la vue d'ensemble, la période naturelle, les villes dans les jours fériés, des réglages, l'exclusion du week-end d'un calendrier flexible, les congés géographiques, et le lien aux horaires multiples.
Sept modules enfin traitent la paie et les postes : un moteur de paie avec ses règles, ses structures et ses registres de cotisations, sa comptabilisation, ses avantages contractuels, ses jours fériés, ses paramètres datés, un module de bulletins par employé, et des postes de travail avec leur planning.
L'essentiel
- Le temps théorique comparé au temps réellement pointé.
- Le pointage par badge RFID.
- Un visa par paliers sur les notes de frais.
- Des règles d'exception bloquant une note de frais non conforme.
- Une petite caisse avec son détenteur.
- L'avance sur frais et son apurement.
- Des demandes de congé périodiques en une saisie.
- Un moteur de paie avec règles, structures et registres.
Ce que ces modules ajoutent à l'instance
| Dépôt | Modules | Nombre |
|---|---|---|
hr-attendance | hr_attendance_report_theoretical_time, hr_attendance_calendar_view, hr_attendance_rfid, hr_attendance_reason, hr_attendance_rest_time_included, hr_attendance_full_history, hr_attendance_modification_tracking, hr_attendance_employee_calendar_planning, hr_contract_update_overtime | 9 |
hr-expense | hr_expense_tier_validation, hr_expense_exception, hr_expense_sequence, hr_expense_sequence_option, hr_expense_payment, hr_expense_cancel, hr_expense_invoice, hr_expense_vendor_receipt, hr_expense_petty_cash, hr_expense_advance_clearing, hr_expense_advance_clearing_sequence | 11 |
hr-holidays | hr_holidays_leave_repeated, hr_holidays_leave_report_calendar_type, hr_holidays_natural_period, hr_holidays_public_city, hr_holidays_settings, hr_holidays_calendar_planning, resource_calendar_flexible_exclude_weekend, resource_leaves_geographic | 8 |
payroll | payroll, payroll_account, payroll_contract_advantages, payroll_hr_public_holidays, payroll_rule_time_parameter, hr_payroll_document | 6 |
shift-planning | hr_shift, hr_shift_holidays_public | 2 |
Les menus : Présences ▸ Analyse ▸ Durée théorique / Durée réelle et ses trois écrans, Présences ▸ Configuration ▸ Raisons, Dépenses ▸ Configuration ▸ Expense Report Exception Rules, Facturation ▸ Comptabilité ▸ Petty Cash, une application Paie avec ses règles et structures, Employés ▸ Payrolls, et une application Shifts avec son planning.
Les présences : théorique contre réel
Un relevé de pointage seul ne dit rien : vingt-sept heures pointées cette semaine est un chiffre inutile sans savoir que le contrat prévoit trente-cinq heures et que lundi était férié. La comparaison théorique/réel est la seule lecture exploitable.
hr_attendance_report_theoretical_time (version 18.0.2.1.3) compare la durée théorique à la durée pointée, avec quatre écrans — analyse des présences, rapport comparatif, sélection d'employés, tous les employés. Il dépend du référentiel de jours fériés.
hr_attendance_rfidpermet le pointage par badge RFID — le seul mode acceptable sur un site de production ou un entrepôt.hr_attendance_calendar_viewajoute une vue calendrier des présences.hr_attendance_reasonajoute des motifs de présence avec leur référentiel, ethr_attendance_rest_time_includedfait inclure le temps de pause dans les heures travaillées.hr_attendance_full_historydonne à l'employé l'accès à son historique complet.hr_attendance_modification_trackingtrace les modifications de présence dans la conversation.hr_attendance_employee_calendar_planningrelie les présences aux horaires multiples, ethr_contract_update_overtimemet à jour les heures supplémentaires depuis le contrat.
La traçabilité des modifications de pointage est un garde-fou de contrôle interne : un relevé de présence qu'un responsable peut corriger sans trace n'est pas une preuve, et le temps de travail est une donnée dont la fiabilité est contrôlée.
L'accès de l'employé à son historique complet relève du même principe, côté salarié : il peut vérifier ce qui est enregistré à son sujet.
Les notes de frais
hr_expense_tier_validation remplace le circuit d'approbation standard par un visa par paliers, et hr_expense_exception définit des règles d'exception — par code, par domaine ou par méthode — bloquant une note non conforme. Référentiel sous Dépenses ▸ Configuration ▸ Expense Report Exception Rules.
Les règles d'exception sont ce qui déplace le contrôle au bon endroit : plutôt qu'un responsable qui vérifie à la main que chaque repas est sous le plafond et que chaque justificatif est joint, une règle bloque la soumission. Le contrôle devient systématique au lieu d'être aléatoire.
hr_expense_petty_cashgère une petite caisse avec son détenteur désigné, sous Facturation ▸ Comptabilité ▸ Petty Cash.hr_expense_advance_clearing(version 18.0.1.1.1) gère les avances sur frais et leur apurement, avec sa séquence dédiée.hr_expense_paymenttrace le lien entre la note de frais et les paiements, ethr_expense_cancelpermet d'annuler intégralement une note déjà traitée.hr_expense_invoicerattache une facture fournisseur à une ligne payée par l'employé, ethr_expense_vendor_receipt(LGPL-3) génère un reçu d'achat plutôt qu'une facture.hr_expense_sequenceattribue une référence séquentielle à chaque note, avec son option de séquence alternative.
L'avance sur frais et la petite caisse répondent au même besoin et par deux voies : l'argent remis avant la dépense. L'avance est nominative et s'apure ; la petite caisse est détenue et se reconstitue.
Les congés
hr_holidays_leave_repeatedpermet des demandes périodiques en une seule saisie — un mercredi après-midi récurrent, par exemple.hr_holidays_natural_periodtraite la période naturelle d'un congé.hr_holidays_leave_report_calendar_typeajoute un filtre par type de congé sur la vue d'ensemble.hr_holidays_public_cityajoute les villes au référentiel des jours fériés.hr_holidays_settingsajoute des réglages.resource_calendar_flexible_exclude_weekendexclut le week-end d'un calendrier de travail flexible.resource_leaves_geographictraite les congés géographiques.hr_holidays_calendar_planningrelie les congés aux horaires multiples.
Les villes dans les jours fériés ne sont pas une subtilité administrative : en France, l'Alsace-Moselle a deux jours fériés supplémentaires, et plusieurs territoires d'outre-mer ont leurs propres dates. Un calcul de congés qui l'ignore est faux pour ces salariés.
La demande périodique est le module qui supprime une saisie absurde : un temps partiel à jour fixe génère cinquante-deux demandes de congé par an dans le standard.
Les horaires multiples par employé sont traités dans la fiche employé étendue.
La paie et les postes de travail
payroll (LGPL-3, version 18.0.1.4.0) fournit un moteur de paie communautaire : des règles salariales avec leurs catégories, des structures de salaire, des registres de cotisations, et les bulletins des employés, dans une application Paie.
Le moteur de paie communautaire existe, et c'est une information en soi — mais une paie française demande un paramétrage conventionnel, déclaratif et légal considérable, que ce moteur ne fournit pas. La plupart des PME françaises externalisent la paie, et l'importent ensuite dans Odoo.
payroll_account(LGPL-3) comptabilise la paie.payroll_contract_advantages(LGPL-3) définit des avantages contractuels avec leurs gabarits.payroll_hr_public_holidaysrelie la paie aux jours fériés.payroll_rule_time_parameter(LGPL-3) permet des paramètres datés dans les règles — un taux qui change au 1er janvier.hr_payroll_documentgère des bulletins par employé, sous Employés ▸ Payrolls.
Les paramètres datés sont la pièce indispensable d'une paie : les taux de cotisation changent chaque année, et une règle sans version dans le temps réécrit l'histoire.
L'import de la paie externalisée est traité dans encaissements, exercices et plan comptable.
Les postes de travail
hr_shift (version 18.0.1.1.3) définit des postes de travail pour les employés, avec une application Shifts et son planning. hr_shift_holidays_public les relie aux jours fériés.
C'est le besoin d'une activité à horaires tournants — commerce, santé, production en continu — que le calendrier de travail unique ne couvre pas.
Limites connues
- Huit modules ont un README réduit à leur catégorie, répartis sur les cinq dépôts.
- Le moteur de paie communautaire ne fournit aucun paramétrage conventionnel français : conventions collectives, taux, déclarations sociales et éditions légales restent à construire. La plupart des PME externalisent la paie.
- La comparaison théorique/réel dépend du référentiel de jours fériés : sans lui, elle compte les fériés comme du temps dû.
- Le pointage RFID suppose un matériel compatible et son protocole.
- Les règles d'exception bloquent la soumission : une règle trop stricte paralyse le processus, une règle trop souple ne contrôle rien.
- Le visa par paliers dépend de
base_tier_validation: installer le moteur avec son extension de transfert, sinon un congé bloque les remboursements. - La petite caisse est un compte de tiers détenu par une personne : son contrôle est un acte comptable, pas une fonctionnalité.
resource_calendar_flexible_exclude_weekendetresource_leaves_geographictouchent les calendriers de ressources : à éprouver, car ils modifient tous les calculs de temps.
Identité technique
Les trente-quatre modules viennent de cinq dépôts OCA, branche 18.0 — hr-attendance, hr-expense, hr-holidays, payroll et shift-planning —, désormais tous documentés ici. Vingt-six sont en AGPL-3, huit en LGPL-3. Les dépendances externes : hr_attendance, hr_expense, hr_holidays, hr_contract, hr_work_entry_holidays, hr_holidays_public et calendar_public_holiday pour les jours fériés, base_tier_validation pour le visa, base_exception pour les règles, base_sequence_option et base_time_parameter pour les séquences et les paramètres datés, account_receipt_journal pour le reçu d'achat, hr_employee_calendar_planning pour les horaires multiples.
Voir aussi la fiche employé étendue et contrats de travail, conventions collectives et formation.
Questions fréquentes
Comment savoir si un salarié a fait ses heures ?
Avec hr_attendance_report_theoretical_time, qui compare la durée théorique à la durée pointée, en quatre écrans. Un relevé de pointage seul ne dit rien : vingt-sept heures pointées est un chiffre inutile sans savoir que le contrat prévoit trente-cinq heures et que lundi était férié. Le module dépend du référentiel de jours fériés.
Peut-on bloquer une note de frais non conforme automatiquement ?
Oui : hr_expense_exception définit des règles d'exception — par code, domaine ou méthode — qui bloquent la soumission. Le contrôle devient systématique au lieu d'être aléatoire. Une règle trop stricte paralyse le processus, une règle trop souple ne contrôle rien.
Odoo Community gère-t-il la paie française ?
Le moteur payroll existe — règles salariales, structures, registres de cotisations, bulletins — mais il ne fournit aucun paramétrage conventionnel français : conventions, taux, déclarations sociales et éditions légales restent à construire. La plupart des PME françaises externalisent la paie et l'importent ensuite dans Odoo.
Peut-on saisir un congé récurrent en une fois ?
Oui, avec hr_holidays_leave_repeated : des demandes périodiques en une seule saisie. Sans lui, un temps partiel à jour fixe génère cinquante-deux demandes de congé par an.
Les jours fériés locaux sont-ils pris en compte ?
Avec hr_holidays_public_city, oui : il ajoute les villes au référentiel des jours fériés. Ce n'est pas une subtilité — en France, l'Alsace-Moselle a deux jours fériés supplémentaires, et plusieurs territoires d'outre-mer ont leurs propres dates. Un calcul qui l'ignore est faux pour ces salariés.
Se faire accompagner
Ces quatre domaines ont en commun d'être contrôlés : le temps de travail, les remboursements de frais, les congés et la paie sont des sujets où un relevé sans trace, un contrôle aléatoire ou un calcul faux se paient lors d'un contentieux.
Nous posons donc d'abord les référentiels qui rendent les calculs justes — jours fériés avec leurs particularités locales, horaires réels — puis les garde-fous : traçabilité des modifications de pointage, règles d'exception sur les frais, visa par paliers. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
En résumé
Quatre domaines RH fonctionnent mal dans Odoo Community pour la même raison : ils comparent des données qui ne sont pas comparables. Le temps pointé sans le temps théorique, une note de frais sans visa, un congé sans les jours fériés locaux. Trente-quatre modules y remédient. Parlons de votre gestion RH.