From 8ab00896593d0d5f8055877801ff1d5df53a80c8 Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Tue, 19 May 2026 15:49:19 +0700 Subject: [PATCH] feat: update res_partner_rule domain force to support multi-company employee access --- __pycache__/__manifest__.cpython-312.pyc | Bin 0 -> 811 bytes .../__pycache__/hr_employee.cpython-312.pyc | Bin 3298 -> 4429 bytes models/hr_employee.py | 10 ++++++++++ security/hr_security.xml | 4 ++++ 4 files changed, 14 insertions(+) create mode 100644 __pycache__/__manifest__.cpython-312.pyc diff --git a/__pycache__/__manifest__.cpython-312.pyc b/__pycache__/__manifest__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..495a6373da2a05274ac1385606a915f11c616c33 GIT binary patch literal 811 zcmb7C&5qMB5Kh|CmZnvJtwbgEV1$q;(l)!=6B0rciJz4gSkQ`V>*q-_P`J4IC>vbG7|ETftd(ClvRhx}<*UsVr zI-ecpFqhR>oi*6CbB8rAU7TB&E^D*vti!x7p6e9dVXxeMohOFxJyTRfF?pV5i7Wuf zIEp~)vVJhyFa1|}N(FfjTILFm%ctWckr$f4I$9GW$pi@1T1K22VB~_En4}eSmH?To z&?A{y3rs=Za3bDTZ}hi@>y=sX6+ir}O`P!UN6fy62uJPM**8<|qZq*(r9 z*#qIaRNFrVVTdio&#Jrzahlg%*ZtXjIP?3n8+T{^yLqkN jZ_nF~zia*d-?c`sIqx|A!E9$R^KUQi@3=K}3-kT}$LAA6 literal 0 HcmV?d00001 diff --git a/models/__pycache__/hr_employee.cpython-312.pyc b/models/__pycache__/hr_employee.cpython-312.pyc index 6b3bdc3f7b04b60fa2d36e4320bb60b891bdc086..e63e21cbde30229c7b4e84f01c7d6c0c5cbe15cf 100644 GIT binary patch delta 1383 zcmZ8hO=ufe5Pol0E3JN4(NA18jw377@`9rzuA7E7wdMXei99=;uKwV@(L5j z^}A2Qks8WjCA8|^qLCoe0rOLQ^qg%Dukz2$LJck9>EH)Qj9Q*czc2*`U>^^N zEQy#8`A?k3fs<3)33mYFKJ%>S%-hGP#YZ7U;WULa0G4xZQ6|@Qa*7hSBxMV-u1k{6 z1CQI1ULkhAVe^jX!>fH@&(cjh;sAw(XYUcfmv|GEJ1c07HP9CvLY*35WT08<|35KT zT+w4#VeYY8^d=xTv4P2m;<(8ec$POyd}LtmRXB12sJHEM7&{xx`s?3?XE=k&q`HbnmOxM7m7R!>B1CrI|OLDOyty&=peMo zmV@5O@)XrYshyFGfLW(yhjt$H@;tC=tUHCN<^OIpK|^GKXDjFr-oNJB;ro8(;|(Fa zzO=TqZmb!PdtZLU)r==Xrsnw7D>NDO;y7EI1dm-Iz9YnMPyQsN8o|h>yY4o#DtjQ$cFYqBVKy2&A5kkEk=SvR4b&t$|SrpG%Lq@!)|??O3;HRw~1Ipq~Y z0yT2;nxYoSFzDpGx$cdgu&+nEoo>%5om@hJPNn|9{NDTZTTLd$P2=V{Nb!%#m zadK(A$0DcDvQ_&Oc2E|Ao{RH9+q-~J{od=#6_?0c!EV{!TbL>2v(?a{S2$I&ZNv?s z)t*CrPIc!&ze?zLMr17)Q44ZeRY(Xpp_83~){jy$Mj=gMoC59NHS#7^X>snN_L1#3 z^D?zkcpo19C4g1b5KgXK`Yn{$7}yOZc0!2;A8iE1#*t`4h_&2Y*m>(pI|Gf&h`d?$ z4ajy9as@2i?ECx$C^^j3D9OMAEwoO*98DHu{1hdhpk&K2iE$cl9Np}#_qLEtS|2ey Rc5ZyOY1ECs5vX>?e*yo(QcM5< delta 474 zcmX@B^hlELG%qg~0}w3U!Iss}HIYw((QTr-J4+>tChNpGrmR1JQtgvB@>@?9WL#)2 z+`*8>m?G4|xf-Me2%`8p7%CW}_=6cVMQ(9<6uIUWv$=$mkC9P!ax<5KixfzN8${@W2t5#?4D{=&KK_(W<1BnmJ hjEs!;8PqQ`sDEK`WMqtDoFFz`W}?hj1~3O~005F7ZZH4< diff --git a/models/hr_employee.py b/models/hr_employee.py index 6fd8b4a..2bcc722 100644 --- a/models/hr_employee.py +++ b/models/hr_employee.py @@ -67,6 +67,16 @@ class HrEmployee(models.Model): domain = replace_company_leaf(domain) return super()._search(domain, offset=offset, limit=limit, order=order, **kwargs) + @api.model + def _register_hook(self): + super()._register_hook() + rule = self.env.ref('base.res_partner_rule', raise_if_not_found=False) + if rule: + new_domain = "['|', '|', '|', ('partner_share', '=', False), ('company_id', 'parent_of', company_ids), ('company_id', '=', False), ('employee_ids.company_ids', 'in', company_ids)]" + if rule.domain_force != new_domain: + rule.sudo().write({'domain_force': new_domain}) + + class HrEmployeePublic(models.Model): _inherit = 'hr.employee.public' diff --git a/security/hr_security.xml b/security/hr_security.xml index 886a635..d48f2d0 100644 --- a/security/hr_security.xml +++ b/security/hr_security.xml @@ -7,5 +7,9 @@ ['|', ('company_ids', 'in', company_ids), '&', ('company_ids', '=', False), ('company_id', 'in', company_ids)] + + + ['|', '|', '|', ('partner_share', '=', False), ('company_id', 'parent_of', company_ids), ('company_id', '=', False), ('employee_ids.company_ids', 'in', company_ids)] +