Configuration régionale des salaires
Configuration régionale des salaires
HRMS marque certaines fonctions avec le décorateur @hrms.allow_regional. Une application peut remplacer ces fonctions pour un pays, avec le hook regional_overrides de son fichier hooks.py. Cette page décrit le mécanisme et son usage sur le bulletin de paie.
Le hook regional_overrides
Le hook associe un pays à un dictionnaire. Chaque clé est le chemin de la fonction d'origine. Chaque valeur est le chemin de la fonction de remplacement.
# mon_app/hooks.py
regional_overrides = {
"France": {
"hrms.payroll.doctype.salary_slip.salary_slip.apply_regional_deductions": "mon_app.paie.deductions_france",
},
}
- Le chemin d'origine est le module suivi du nom de la fonction. Pour une méthode de classe, n'écrivez pas le nom de la classe.
- Le nom du pays est le nom du document Pays, par exemple
France. - Si plusieurs applications remplacent la même fonction, la dernière application installée l'emporte.
HRMS déclare lui-même des remplacements pour la France dans son fichier hooks.py : jours de congé, chevauchement des congés, acquisition des congés.
Pays utilisé
hrms.get_region() choisit le pays dans cet ordre :
- Le pays de la société de
frappe.local.flags.company, si ce drapeau est défini. frappe.flags.country.- Le pays des Paramètres système.
Le pays ne vient pas de la société du bulletin ni de la fiche de l'employé.
Déductions régionales du bulletin de paie
Le bulletin de paie appelle apply_regional_deductions après le calcul des gains, des déductions de la structure salariale et des remboursements de prêt. L'appel a lieu avant l'arrondi des montants et le calcul du net à payer. Les lignes ajoutées entrent donc dans le total des déductions et dans le net.
La fonction de remplacement reçoit le bulletin de paie comme seul argument :
# mon_app/paie.py
def deductions_france(salary_slip):
# Exemple fictif : composant « Mutuelle salarié » de 45 € pour les cadres
if salary_slip.designation == "Cadre":
salary_slip.append(
"deductions",
{"salary_component": "Mutuelle salarié", "amount": 45},
)
Le composant de salaire doit exister. La fonction ne renvoie rien : elle modifie le bulletin.
Exemple fictif : un cadre a un brut de 3 000 € et 650 € de déductions de structure. Avec cette fonction, le total des déductions passe à 695 € et le net à 2 305 €.
Pour les cotisations employeur, le bulletin appelle aussi apply_regional_employer_contributions. Voir Hook régional pour les cotisations employeur.
Vérifier le remplacement
Si la fonction n'est pas appelée :
- Vérifiez le pays des Paramètres système ou de la société de
frappe.local.flags.company. - Vérifiez que le nom du pays dans
regional_overridesest identique au nom du document Pays. - Vérifiez le chemin de la fonction d'origine, sans le nom de la classe.
- Lancez
bench --site <site> clear-cacheaprès une modification dehooks.py.