[{"data":1,"prerenderedAt":291},["ShallowReactive",2],{"\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Fconfiguration_regionale_salaires":3,"section:\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Fconfiguration_regionale_salaires":290},{"id":4,"title":5,"body":6,"description":276,"extension":277,"meta":278,"navigation":280,"path":286,"seo":287,"stem":288,"__hash__":289},"docs\u002F2.next\u002F3.dodock\u002F10.developpeurs\u002Fconfiguration_regionale_salaires.md","Configuration régionale des salaires",{"type":7,"value":8,"toc":269},"minimark",[9,13,30,37,40,87,109,115,119,125,146,149,153,160,163,210,213,216,228,232,235,265],[10,11,5],"h1",{"id":12},"configuration-régionale-des-salaires",[14,15,16,17,21,22,25,26,29],"p",{},"HRMS marque certaines fonctions avec le décorateur ",[18,19,20],"code",{},"@hrms.allow_regional",". Une application peut remplacer ces fonctions pour un pays, avec le hook ",[18,23,24],{},"regional_overrides"," de son fichier ",[18,27,28],{},"hooks.py",". Cette page décrit le mécanisme et son usage sur le bulletin de paie.",[31,32,34,35],"h2",{"id":33},"le-hook-regional_overrides","Le hook ",[18,36,24],{},[14,38,39],{},"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.",[41,42,47],"pre",{"className":43,"code":44,"language":45,"meta":46,"style":46},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# mon_app\u002Fhooks.py\nregional_overrides = {\n    \"France\": {\n        \"hrms.payroll.doctype.salary_slip.salary_slip.apply_regional_deductions\": \"mon_app.paie.deductions_france\",\n    },\n}\n","python","",[18,48,49,57,63,69,75,81],{"__ignoreMap":46},[50,51,54],"span",{"class":52,"line":53},"line",1,[50,55,56],{},"# mon_app\u002Fhooks.py\n",[50,58,60],{"class":52,"line":59},2,[50,61,62],{},"regional_overrides = {\n",[50,64,66],{"class":52,"line":65},3,[50,67,68],{},"    \"France\": {\n",[50,70,72],{"class":52,"line":71},4,[50,73,74],{},"        \"hrms.payroll.doctype.salary_slip.salary_slip.apply_regional_deductions\": \"mon_app.paie.deductions_france\",\n",[50,76,78],{"class":52,"line":77},5,[50,79,80],{},"    },\n",[50,82,84],{"class":52,"line":83},6,[50,85,86],{},"}\n",[88,89,90,94,106],"ul",{},[91,92,93],"li",{},"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.",[91,95,96,97,101,102,105],{},"Le nom du pays est le nom du document ",[98,99,100],"strong",{},"Pays",", par exemple ",[18,103,104],{},"France",".",[91,107,108],{},"Si plusieurs applications remplacent la même fonction, la dernière application installée l'emporte.",[14,110,111,112,114],{},"HRMS déclare lui-même des remplacements pour la France dans son fichier ",[18,113,28],{}," : jours de congé, chevauchement des congés, acquisition des congés.",[31,116,118],{"id":117},"pays-utilisé","Pays utilisé",[14,120,121,124],{},[18,122,123],{},"hrms.get_region()"," choisit le pays dans cet ordre :",[126,127,128,135,140],"ol",{},[91,129,130,131,134],{},"Le pays de la société de ",[18,132,133],{},"frappe.local.flags.company",", si ce drapeau est défini.",[91,136,137,105],{},[18,138,139],{},"frappe.flags.country",[91,141,142,143,105],{},"Le pays des ",[98,144,145],{},"Paramètres système",[14,147,148],{},"Le pays ne vient pas de la société du bulletin ni de la fiche de l'employé.",[31,150,152],{"id":151},"déductions-régionales-du-bulletin-de-paie","Déductions régionales du bulletin de paie",[14,154,155,156,159],{},"Le bulletin de paie appelle ",[18,157,158],{},"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.",[14,161,162],{},"La fonction de remplacement reçoit le bulletin de paie comme seul argument :",[41,164,166],{"className":43,"code":165,"language":45,"meta":46,"style":46},"# mon_app\u002Fpaie.py\ndef deductions_france(salary_slip):\n    # Exemple fictif : composant « Mutuelle salarié » de 45 € pour les cadres\n    if salary_slip.designation == \"Cadre\":\n        salary_slip.append(\n            \"deductions\",\n            {\"salary_component\": \"Mutuelle salarié\", \"amount\": 45},\n        )\n",[18,167,168,173,178,183,188,193,198,204],{"__ignoreMap":46},[50,169,170],{"class":52,"line":53},[50,171,172],{},"# mon_app\u002Fpaie.py\n",[50,174,175],{"class":52,"line":59},[50,176,177],{},"def deductions_france(salary_slip):\n",[50,179,180],{"class":52,"line":65},[50,181,182],{},"    # Exemple fictif : composant « Mutuelle salarié » de 45 € pour les cadres\n",[50,184,185],{"class":52,"line":71},[50,186,187],{},"    if salary_slip.designation == \"Cadre\":\n",[50,189,190],{"class":52,"line":77},[50,191,192],{},"        salary_slip.append(\n",[50,194,195],{"class":52,"line":83},[50,196,197],{},"            \"deductions\",\n",[50,199,201],{"class":52,"line":200},7,[50,202,203],{},"            {\"salary_component\": \"Mutuelle salarié\", \"amount\": 45},\n",[50,205,207],{"class":52,"line":206},8,[50,208,209],{},"        )\n",[14,211,212],{},"Le composant de salaire doit exister. La fonction ne renvoie rien : elle modifie le bulletin.",[14,214,215],{},"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 €.",[14,217,218,219,222,223,105],{},"Pour les cotisations employeur, le bulletin appelle aussi ",[18,220,221],{},"apply_regional_employer_contributions",". Voir ",[224,225,227],"a",{"href":226},"\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Fhook-regional-cotisations-employeur","Hook régional pour les cotisations employeur",[31,229,231],{"id":230},"vérifier-le-remplacement","Vérifier le remplacement",[14,233,234],{},"Si la fonction n'est pas appelée :",[126,236,237,245,253,256],{},[91,238,239,240,242,243,105],{},"Vérifiez le pays des ",[98,241,145],{}," ou de la société de ",[18,244,133],{},[91,246,247,248,250,251,105],{},"Vérifiez que le nom du pays dans ",[18,249,24],{}," est identique au nom du document ",[98,252,100],{},[91,254,255],{},"Vérifiez le chemin de la fonction d'origine, sans le nom de la classe.",[91,257,258,259,262,263,105],{},"Lancez ",[18,260,261],{},"bench --site \u003Csite> clear-cache"," après une modification de ",[18,264,28],{},[266,267,268],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":46,"searchDepth":53,"depth":59,"links":270},[271,273,274,275],{"id":33,"depth":59,"text":272},"Le hook regional_overrides",{"id":117,"depth":59,"text":118},{"id":151,"depth":59,"text":152},{"id":230,"depth":59,"text":231},"Remplacer une fonction de HRMS selon le pays avec le hook regional_overrides, par exemple pour ajouter des déductions au bulletin de paie.","md",{"badge":279,"reviewed":280,"last_verified":281,"sources":282},"développeur",true,"2026-11-03",[283,284,285],"hrms@develop:hrms\u002F__init__.py","hrms@develop:hrms\u002Fhooks.py","hrms@develop:hrms\u002Fpayroll\u002Fdoctype\u002Fsalary_slip\u002Fsalary_slip.py","\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Fconfiguration_regionale_salaires",{"title":5,"description":276},"2.next\u002F3.dodock\u002F10.developpeurs\u002Fconfiguration_regionale_salaires","HR_fknlxDYUQVUIWCfTQ-V2BmSf1_UsJHhK1rdxYKoQ",{},1793871742679]