PersonnaliserLInterface

Configuration régionale des salaires

Personnaliser le calcul des salaires selon les réglementations locales

Configuration régionale des salaires

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.

Concepts clés

  • Hook régional : Point d'extension dans le code permettant d'injecter une logique spécifique à une région ou un pays.
  • Override régional : Mécanisme permettant de remplacer ou d'étendre une fonctionnalité standard par une version adaptée à une région.

Configuration de base

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.

Étape 1 : Créer un module régional

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

Étape 2 : Déclarer le module régional

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"
}

Étape 3 : Implémenter les overrides

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

Utilisation des hooks régionaux dans les bulletins de salaire

Le hook régional est automatiquement appelé avant le calcul final des totaux du bulletin de salaire. Voici comment cela fonctionne :

  1. Un bulletin de salaire est généré pour un employé.
  2. Dokos vérifie si un override régional est configuré pour le pays de l'employé.
  3. Si un override existe, la fonction apply_regional_deductions (ou équivalente) est appelée.
  4. Les déductions ou ajustements régionaux sont appliqués.
  5. Le calcul final du salaire est effectué.

Exemple : Bulletin de salaire pour un employé en France

Scénario :

  • Employé : Jean Dupont (Cadre chez Maison Verte SARL)
  • Salaire de base : 3 000 €
  • Région : France

Résultat attendu :

  • Une déduction de 100 € pour frais professionnels est appliquée.

Bonnes pratiques

  1. Modularité : Gardez chaque override régional dans un fichier séparé pour faciliter la maintenance.
  2. Documentation : Documentez chaque déduction ou ajustement régional dans le code.
  3. Tests : Testez toujours vos overrides avec des données réelles avant de les déployer en production.
  4. Compatibilité : Assurez-vous que vos overrides n'entrent pas en conflit avec d'autres personnalisations.

Dépannage

Problème : Le hook régional n'est pas appelé

  1. Vérifiez que le pays de l'employé est correctement configuré dans son profil.
  2. Assurez-vous que le module régional est bien installé et activé.
  3. Vérifiez que le nom de la région dans regional_overrides correspond exactement au pays configuré.

Problème : Les déductions ne sont pas appliquées

  1. Vérifiez que la fonction apply_regional_deductions est correctement implémentée.
  2. Assurez-vous que les conditions dans votre code sont correctes (par exemple, la désignation de l'employé).
  3. Consultez les logs de Dokos pour identifier d'éventuelles erreurs.

Exemple complet : Configuration pour la Belgique

Pour illustrer, voici comment configurer un hook régional pour la Belgique :

Fichier hooks.py

regional_overrides = {
    "Belgique": "hrms_regional.payroll.overrides.belgique"
}

Fichier 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

Résultat

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. :::