Dokos HRMS permet de personnaliser le calcul des salaires en fonction des réglementations locales grâce à des hooks régionaux. Ces hooks permettent d'appliquer des déductions ou des ajustements spécifiques avant le calcul final du salaire.
Pour activer les hooks régionaux dans HRMS, vous devez d'abord configurer votre instance pour une région spécifique. Cela se fait via un fichier de configuration Python.
Créez un nouveau module dans votre application personnalisée (par exemple hrms_regional) avec la structure suivante :
hrms_regional/
├── __init__.py
├── hooks.py
└── payroll/
└── overrides.py
Dans le fichier hooks.py de votre module, déclarez les overrides régionaux :
# hrms_regional/hooks.py
from frappe import _
app_include_js = ["public/js/hrms_regional.js"]
regional_overrides = {
"France": "hrms_regional.payroll.overrides.france"
}
Dans le fichier overrides.py, implémentez la logique spécifique à votre région. Par exemple, pour la France :
# hrms_regional/payroll/overrides/france.py
def apply_regional_deductions(salary_slip):
"""Applique les déductions spécifiques à la France."""
# Exemple : Déduction pour frais professionnels
if salary_slip.get("designation") == "Cadre":
salary_slip.append("deductions", {
"salary_component": "Frais professionnels",
"amount": 100.0
})
return salary_slip
Le hook régional est automatiquement appelé avant le calcul final des totaux du bulletin de salaire. Voici comment cela fonctionne :
apply_regional_deductions (ou équivalente) est appelée.Scénario :
Résultat attendu :
regional_overrides correspond exactement au pays configuré.apply_regional_deductions est correctement implémentée.Pour illustrer, voici comment configurer un hook régional pour la Belgique :
hooks.pyregional_overrides = {
"Belgique": "hrms_regional.payroll.overrides.belgique"
}
belgique.py# hrms_regional/payroll/overrides/belgique.py
def apply_regional_deductions(salary_slip):
"""Applique les déductions spécifiques à la Belgique."""
# Exemple : Précompte professionnel
if salary_slip.get("monthly_salary") > 2500:
precompte = salary_slip.monthly_salary * 0.25
salary_slip.append("deductions", {
"salary_component": "Précompte professionnel",
"amount": precompte
})
return salary_slip
Pour un employé en Belgique avec un salaire mensuel de 3 000 €, une déduction de 750 € (25%) pour le précompte professionnel sera automatiquement appliquée.
::: tip Pour plus d'informations sur la personnalisation des salaires, consultez la documentation officielle de Frappe HRMS. :::