Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Développeurs

Hook régional pour les cotisations employeur

Le point d'extension apply_regional_employer_contributions permet à une application d'ajouter des cotisations employeur au bulletin de paie selon le pays.

Hook régional pour les cotisations employeur

Le bulletin de paie appelle la méthode apply_regional_employer_contributions après le calcul des cotisations employeur de la structure salariale. Par défaut, cette méthode ne fait rien. Une application régionale la remplace pour ajouter ses propres lignes au tableau employer_contributions.

La méthode porte le décorateur @hrms.allow_regional. Ce décorateur cherche une fonction de remplacement dans le hook regional_overrides, pour le pays courant.

Ordre d'exécution

Dans calculate_net_pay, le bulletin exécute ces étapes :

  1. Il calcule les gains et les déductions de la structure salariale.
  2. Il appelle apply_regional_deductions (déductions régionales).
  3. Il calcule les cotisations employeur de la structure (calculate_component_amounts("employer_contributions")), si le bulletin a une structure salariale.
  4. Il appelle apply_regional_employer_contributions.
  5. Il arrondit les montants (set_precision_for_component_amounts).
  6. Il calcule le net à payer (set_net_pay).

Les cotisations employeur s'affichent sur le bulletin. Elles n'entrent pas dans le brut, le total des déductions ou le net à payer.

Déclarer le remplacement

Dans le fichier hooks.py de votre application, associez le chemin de la méthode d'origine à votre fonction, sous le nom du pays :

# mon_app/hooks.py
regional_overrides = {
    "France": {
        "hrms.payroll.doctype.salary_slip.salary_slip.apply_regional_employer_contributions": "mon_app.paie.ajouter_cotisations_employeur",
    },
}

La clé est le module de la méthode suivi de son nom, sans le nom de la classe. Si plusieurs applications déclarent la même clé, la dernière application installée l'emporte.

Votre fonction reçoit le bulletin de paie (self) comme seul argument :

# mon_app/paie.py
def ajouter_cotisations_employeur(salary_slip):
    # Exemple fictif : composant de salaire « Prévoyance employeur » à 1,5 % du brut
    salary_slip.append(
        "employer_contributions",
        {
            "salary_component": "Prévoyance employeur",
            "amount": salary_slip.gross_pay * 0.015,
        },
    )

Le composant de salaire doit exister avant l'appel.

Pays utilisé

hrms.get_region() détermine le pays. Il prend le pays de la société de frappe.local.flags.company si ce drapeau est défini. Sinon, il prend frappe.flags.country, puis le pays des Paramètres système.

Le pays ne vient pas de la société du bulletin. Sur un site multi-pays, vérifiez la valeur de frappe.local.flags.company ou testez le pays dans votre fonction.