[{"data":1,"prerenderedAt":279},["ShallowReactive",2],{"\u002Fv5\u002Fdodock\u002Fdeveloppeurs\u002Fconfiguration_regionale_salaires":3,"section:\u002Fv5\u002Fdodock\u002Fdeveloppeurs\u002Fconfiguration_regionale_salaires":278},{"id":4,"title":5,"body":6,"description":264,"extension":265,"meta":266,"navigation":268,"path":274,"seo":275,"stem":276,"__hash__":277},"docs\u002F1.v5\u002F3.dodock\u002F10.developpeurs\u002Fconfiguration_regionale_salaires.md","Configuration régionale des salaires",{"type":7,"value":8,"toc":257},"minimark",[9,13,30,37,40,87,109,115,119,125,146,149,153,160,163,210,213,216,220,223,253],[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 €.",[31,217,219],{"id":218},"vérifier-le-remplacement","Vérifier le remplacement",[14,221,222],{},"Si la fonction n'est pas appelée :",[126,224,225,233,241,244],{},[91,226,227,228,230,231,105],{},"Vérifiez le pays des ",[98,229,145],{}," ou de la société de ",[18,232,133],{},[91,234,235,236,238,239,105],{},"Vérifiez que le nom du pays dans ",[18,237,24],{}," est identique au nom du document ",[98,240,100],{},[91,242,243],{},"Vérifiez le chemin de la fonction d'origine, sans le nom de la classe.",[91,245,246,247,250,251,105],{},"Lancez ",[18,248,249],{},"bench --site \u003Csite> clear-cache"," après une modification de ",[18,252,28],{},[254,255,256],"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":258},[259,261,262,263],{"id":33,"depth":59,"text":260},"Le hook regional_overrides",{"id":117,"depth":59,"text":118},{"id":151,"depth":59,"text":152},{"id":218,"depth":59,"text":219},"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":267,"reviewed":268,"last_verified":269,"sources":270},"développeur",true,"2026-11-03",[271,272,273],"hrms@v5:hrms\u002F__init__.py","hrms@v5:hrms\u002Fhooks.py","hrms@v5:hrms\u002Fpayroll\u002Fdoctype\u002Fsalary_slip\u002Fsalary_slip.py","\u002Fv5\u002Fdodock\u002Fdeveloppeurs\u002Fconfiguration_regionale_salaires",{"title":5,"description":264},"1.v5\u002F3.dodock\u002F10.developpeurs\u002Fconfiguration_regionale_salaires","on1aVgnZMsNCxrFbTOUibB11l_kPcM0r-bEm5J19JZ4",{},1793871961819]