From 6a13fef24dc379da010989cf8d48422345e4074c Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Wed, 13 May 2026 16:54:22 +0700 Subject: [PATCH] first commit --- __init__.py | 1 + __manifest__.py | 20 ++++++++++ models/__init__.py | 2 + models/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 259 bytes .../__pycache__/hr_employee.cpython-312.pyc | Bin 0 -> 1671 bytes models/__pycache__/pos_config.cpython-312.pyc | Bin 0 -> 1284 bytes models/hr_employee.py | 37 ++++++++++++++++++ models/pos_config.py | 19 +++++++++ security/hr_attendance_security.xml | 18 +++++++++ security/hr_security.xml | 11 ++++++ views/hr_employee_views.xml | 17 ++++++++ 11 files changed, 125 insertions(+) create mode 100644 __init__.py create mode 100644 __manifest__.py create mode 100644 models/__init__.py create mode 100644 models/__pycache__/__init__.cpython-312.pyc create mode 100644 models/__pycache__/hr_employee.cpython-312.pyc create mode 100644 models/__pycache__/pos_config.cpython-312.pyc create mode 100644 models/hr_employee.py create mode 100644 models/pos_config.py create mode 100644 security/hr_attendance_security.xml create mode 100644 security/hr_security.xml create mode 100644 views/hr_employee_views.xml diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/__manifest__.py b/__manifest__.py new file mode 100644 index 0000000..914f362 --- /dev/null +++ b/__manifest__.py @@ -0,0 +1,20 @@ +{ + 'name': 'Multi-Branch Employee Access', + 'version': '1.0', + 'category': 'Human Resources', + 'summary': 'Allows employees to be associated with multiple branch companies', + 'description': """ + This module overrides the standard Odoo restriction of one company per employee. + It allows an employee to be associated with multiple branch companies. + """, + 'author': 'Antigravity', + 'depends': ['hr', 'pos_hr', 'hr_attendance'], + 'data': [ + 'security/hr_security.xml', + 'security/hr_attendance_security.xml', + 'views/hr_employee_views.xml', + ], + 'installable': True, + 'application': False, + 'license': 'LGPL-3', +} diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000..5242a15 --- /dev/null +++ b/models/__init__.py @@ -0,0 +1,2 @@ +from . import hr_employee +from . import pos_config diff --git a/models/__pycache__/__init__.cpython-312.pyc b/models/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0863982224bebab2d9ecb04769e4dc9c4754b685 GIT binary patch literal 259 zcmX|5yKcfj5Ztvbk$~tyA|K!;CzL7@qNhP=p*bPnfsO8NtvkE8FX0>b7XAP!X;RT4 z(NSeB1*VvtS_#baLGX6lnx^8Nw%)k-yd^A;m>{IAT-8YVUdQ{(jGL{|bN|Yhx(CC6>6#+q MH;jK^UhgK`O*U+3AZgsB?8YeUDm^r!P^9t^0wpODm5>}F%j`^Qul%u{ z@q)YxQjj9Sp@;MoI3Xk?gf@Qwe*u?X2oZ`k7b0=umXdI(gv5;PO}0`P$#349_nY@U zeq1aT09)1fq}IO@0Dp3!zp^QFvc#BO009&n;0n6nX7r3J>Y^*@k^nN`T>vxN0E$Rx z#n$=;lD#J;yDo>4mi>zhnnY#ShsYsR-msAa2^Gz@O$DQwU=x~8g_BA1KnecF=C#2lyHt3}QeK;&@W3;f0-*MZHA0pHpvTz-p2^f)j(|6mZ7gFU- zYMcf>Oot$Cy?Z^usmVPX5jC)EqV|odj5i7Ko3O2H_SAlcbxp>6ZfGv`O0y*J zF`^1aCiFdrRRg039UCKvhZ(S&=auRZgh}@`Rvluo^6<)>7iM0at0g7ju@kPeJw^x4 zv~^9uL)`Dsz-cpWT--B0x%@l%fstLX3El?lcL4Z8*c4hZ;8}tz7oS66f&n)LODhhbp(UXwl6h7Wyz;nha7!@A>|kadPMENr+P zC$P^3rEjj0yl)QZAJy9-=FhNu<@^QIFPO9|3`3R~*#bwGC;tZ7{NmTkQR(@^((G@g z*{E7Stlr$O-u!uCzj|v&`F&(Is!SbL<_;=zN7a{qw7$0vt2g$mH)7S3A$I$O*#fIt zkt&AanJzL6S}+V2V8`M7uwgvtm`vTg%ue;N zJhNY(iIhrInutoTM8(^u`Rtgyb?3MY%2#*Bcc&js$J)!$$V<_sax^*~jaH)K#%W0@ z%UkasKL@7fzghb3?zeX%Wh^RvaGDjT2QJQ0Dc z##|C0k8M@UQHi%3^8n*Q#3^AugfzRtf89wE*SP*Hv8T%GNmbv#HKyR>PPp<|6a?W9 XP&)v%Q)xz6WI0Sen*0YaHop8H^lql7 literal 0 HcmV?d00001 diff --git a/models/__pycache__/pos_config.cpython-312.pyc b/models/__pycache__/pos_config.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a97d88ad25aacf05f49b28b0eb0952b7cbce578e GIT binary patch literal 1284 zcmZ`(&1(}u6rYdHHcir|Ej6eWZKm_=`Dji|*hFbE>zHnOgnO}lYF;%-t&NX0`B zIku-%yohd^rDT_Z1l2*Y?;e2SpHaQ-0$zkGs2nx~ut;$b z5u(jru>?P!2f%$)=4bkAua?vi5lDoHby&b;$ggIPoW(?#W1!jTqXR2MdogRw$=G8d zXQ2PbW;ex)D7?uEs-rtVie_m%?^q?xuBry{C^Br9cWD>a=}^VfUADUmFR*hd}%Hg%g$JkmTPuj*FGbgH_}^SHd96kp2DQ_R!u)5x-B=XLTIi%wdGZCIN5*RF)A z;OS<;<^7=|@h8XQ4?I0Ry}KYUIhHPal_lLJRrz+cyyVzTpMM!KwOkd-1ds;ahT>8eU&s>)hY zF*#1C>XV9Q_B>J5uvxQ>vU`9 0: + domain = Domain.AND([ + domain, + ['|', ('user_id', '=', user_id), ('id', 'in', self.basic_employee_ids.ids + self.advanced_employee_ids.ids + self.minimal_employee_ids.ids)] + ]) + return domain diff --git a/security/hr_attendance_security.xml b/security/hr_attendance_security.xml new file mode 100644 index 0000000..aba36f8 --- /dev/null +++ b/security/hr_attendance_security.xml @@ -0,0 +1,18 @@ + + + + + Attendance multi branch rule + + + ['|', ('employee_id.company_ids', '=', False), ('employee_id.company_ids', 'in', company_ids)] + + + + Overtime Line multi branch rule + + + ['|', ('employee_id.company_ids', '=', False), ('employee_id.company_ids', 'in', company_ids)] + + + diff --git a/security/hr_security.xml b/security/hr_security.xml new file mode 100644 index 0000000..c20b24b --- /dev/null +++ b/security/hr_security.xml @@ -0,0 +1,11 @@ + + + + + Employee multi branch rule + + + ['|', ('company_ids', '=', False), ('company_ids', 'in', company_ids)] + + + diff --git a/views/hr_employee_views.xml b/views/hr_employee_views.xml new file mode 100644 index 0000000..e543a9e --- /dev/null +++ b/views/hr_employee_views.xml @@ -0,0 +1,17 @@ + + + + hr.employee.form.inherit.multi.company + hr.employee + + + + + + + + 1 + + + +