Merge branch 'dev_odex25_hr' of github.com:expsa/odex25-standard-modules into abuzar_hr_task

This commit is contained in:
odex 2024-08-12 13:21:41 +03:00
commit 351da89130
19 changed files with 345 additions and 124 deletions

View File

@ -884,9 +884,10 @@ msgid "Lateness"
msgstr "التأخيرات"
#. module: attendances
#: model:ir.actions.act_window,name:attendances.hr_lateness_reasons_action
#: model:ir.ui.menu,name:attendances.employee_lateness_reasons_menu_item
msgid "Lateness Reasons"
msgstr "اسباب التاخير"
msgid "Lateness/Exit Reasons"
msgstr "تبرير التأخير والخروج"
#. module: attendances
#: model:ir.ui.menu,name:attendances.employee_lateness_absence_overtime_menu_item
@ -1800,11 +1801,6 @@ msgstr "التأخيرات"
msgid "lateness Date"
msgstr "تاريخ التأخير"
#. module: attendances
#: model:ir.actions.act_window,name:attendances.hr_lateness_reasons_action
msgid "lateness Reasons"
msgstr "اسباب التاخير"
#. module: attendances
#: code:addons/attendances/models/hr_attendance.py:0
#, python-format
@ -2045,6 +2041,7 @@ msgstr ""
#. module: attendances
#: model:ir.model.fields,field_description:attendances.field_hr_attendance_transaction__company_id
#: model:ir.model.fields,field_description:attendances.field_attendance_attendance__company_id
msgid "Company"
msgstr "الشركة"

View File

@ -380,6 +380,7 @@ class Attendance(models.Model):
action_reason = fields.Many2one('attendance.action.reason', string='Action Reason')
employee_number = fields.Char(related='employee_id.emp_no', string='Employee Number',store=True)
company_id = fields.Many2one(related='employee_id.company_id', string='Company')
@api.depends('name')
def compute_date(self):

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--###################################### attendance register start ##### -->
<record id="hr_attendance_register_emp_rule" model="ir.rule">
<field name="name">Employee: views its own attendance register</field>
<field name="model_id" ref="model_hr_attendance_register"/>
@ -11,9 +11,8 @@
<record id="hr_attendance_register_manager_rule" model="ir.rule">
<field name="name">Manager: views attendance register of its subordinates</field>
<field name="model_id" ref="model_hr_attendance_register"/>
<field name="domain_force">['|','|',('department_id.manager_id','=',False),
('department_id.manager_id.user_id','child_of', [user.id]),
('department_id.parent_id.manager_id.user_id','child_of', [user.id])]
<field name="domain_force">['|',('employee_id.department_id.manager_id.user_id','child_of', [user.id]),
('employee_id.department_id.parent_id.manager_id.user_id','child_of', [user.id])]
</field>
<field name="groups"
eval="[(4, ref('hr_base.group_department_manager')),(4, ref('hr_base.group_division_manager'))]"/>
@ -23,9 +22,18 @@
<field name="name">Manager: views attendance registers of all employee</field>
<field name="model_id" ref="model_hr_attendance_register"/>
<field name="domain_force">[(1 ,'=', 1)]</field>
<field name="groups" eval="[(4, ref('hr_attendance.group_hr_attendance_user'))]"/>
<field name="groups" eval="[(4, ref('hr_attendance.group_hr_attendance_manager'))]"/>
</record>
<record id="hr_attendance_register_comp_rule" model="ir.rule">
<field name="name">attendance register company rule</field>
<field name="model_id" ref="model_hr_attendance_register"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<!--############## attendance register end /lateness reasons start##### -->
<record id="hr_reasons_lateness_emp_rule" model="ir.rule">
<field name="name">Employee: views its lateness reasons</field>
<field name="model_id" ref="model_hr_reasons_lateness"/>
@ -36,9 +44,8 @@
<record id="hr_reasons_lateness_manager_rule" model="ir.rule">
<field name="name">Manager: views lateness reasons of its subordinates</field>
<field name="model_id" ref="model_hr_reasons_lateness"/>
<field name="domain_force">['|','|',('department_id.manager_id','=',False),
('department_id.manager_id.user_id','child_of', [user.id]),
('department_id.parent_id.manager_id.user_id','child_of', [user.id])]
<field name="domain_force">['|',('employee_id.department_id.manager_id.user_id','child_of', [user.id]),
('employee_id.department_id.parent_id.manager_id.user_id','child_of', [user.id])]
</field>
<field name="groups"
eval="[(4, ref('hr_base.group_department_manager')),(4, ref('hr_base.group_division_manager'))]"/>
@ -48,9 +55,17 @@
<field name="name">Manager: views lateness reasons of all employees</field>
<field name="model_id" ref="model_hr_reasons_lateness"/>
<field name="domain_force">[(1 ,'=', 1)]</field>
<field name="groups" eval="[(4, ref('hr_attendance.group_hr_attendance_user'))]"/>
<field name="groups" eval="[(4, ref('hr_attendance.group_hr_attendance_manager'))]"/>
</record>
<record id="hr_reasons_lateness_comp_rule" model="ir.rule">
<field name="name">lateness reasons company rule</field>
<field name="model_id" ref="model_hr_reasons_lateness"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<!--################ lateness reasons end/ attendance transactions start ##### -->
<record id="hr_attendance_transaction_emp_rule" model="ir.rule">
<field name="name">Employee: views its attendance transactions</field>
<field name="model_id" ref="model_hr_attendance_transaction"/>
@ -61,8 +76,7 @@
<record id="hr_attendance_transaction_manager_rule" model="ir.rule">
<field name="name">Manager: views attendance transactions of its subordinates</field>
<field name="model_id" ref="model_hr_attendance_transaction"/>
<field name="domain_force">['|','|',('employee_id.department_id.manager_id','=',False),
('employee_id.department_id.manager_id.user_id','child_of', [user.id]),
<field name="domain_force">['|',('employee_id.department_id.manager_id.user_id','child_of', [user.id]),
('employee_id.department_id.parent_id.manager_id.user_id','child_of', [user.id])]
</field>
<field name="groups"
@ -73,21 +87,47 @@
<field name="name">Manager: views attendance transactions of all employees</field>
<field name="model_id" ref="model_hr_attendance_transaction"/>
<field name="domain_force">[(1 ,'=', 1)]</field>
<field name="groups" eval="[(4, ref('hr_attendance.group_hr_attendance_user'))]"/>
<field name="groups" eval="[(4, ref('hr_attendance.group_hr_attendance_manager'))]"/>
</record>
<record id="hr_attendance_transaction_comp_rule" model="ir.rule">
<field name="name">appraisal result line company rule</field>
<field name="name">attendance result line company rule</field>
<field name="model_id" ref="model_hr_attendance_transaction"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<!--###################################### attendance transactions end/attendance start ##### -->
<record id="hr_attendance_register_comp_rule" model="ir.rule">
<field name="name">attendance register company rule</field>
<field name="model_id" ref="model_hr_attendance_register"/>
<record id="attendance_attendance_emp_rule" model="ir.rule">
<field name="name">Employee: views its attendance attendance</field>
<field name="model_id" ref="model_attendance_attendance"/>
<field name="domain_force">[('employee_id.user_id','=',user.id)]</field>
<field name="groups" eval="[(4,ref('base.group_user'))]"/>
</record>
<record id="attendance_attendance_manager_rule" model="ir.rule">
<field name="name">Manager: views attendance attendance of its subordinates</field>
<field name="model_id" ref="model_attendance_attendance"/>
<field name="domain_force">['|',('employee_id.department_id.manager_id.user_id','child_of', [user.id]),
('employee_id.department_id.parent_id.manager_id.user_id','child_of', [user.id])]
</field>
<field name="groups"
eval="[(4, ref('hr_base.group_department_manager')),(4, ref('hr_base.group_division_manager'))]"/>
</record>
<record id="attendance_attendance_all_rule" model="ir.rule">
<field name="name">Manager: views attendance attendance of all employees</field>
<field name="model_id" ref="model_attendance_attendance"/>
<field name="domain_force">[(1 ,'=', 1)]</field>
<field name="groups" eval="[(4, ref('hr_attendance.group_hr_attendance_manager'))]"/>
</record>
<record id="attendance_attendance_comp_rule" model="ir.rule">
<field name="name">attendance result line company rule</field>
<field name="model_id" ref="model_attendance_attendance"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<!--###################################### attendance attendance end ##### -->
<record id="hr_attendance_report_comp_rule" model="ir.rule">
<field name="name">hr.attendance.report company rule</field>
@ -100,7 +140,7 @@
</record>
<record id="hr.group_hr_user" model="res.groups">
<field name="implied_ids" eval="[(4,ref('hr_attendance.group_hr_attendance_user'))]"/>
<field name="implied_ids" eval="[(4,ref('hr_attendance.group_hr_attendance_manager'))]"/>
</record>
<record id="hr_attendance.hr_attendance_rule_attendance_employee" model="ir.rule">

View File

@ -2,7 +2,7 @@
<odoo>
<data>
<record model="ir.actions.act_window" id="hr_lateness_reasons_action">
<field name="name">lateness Reasons</field>
<field name="name">Lateness/Exit Reasons</field>
<field name="res_model">hr.reasons.lateness</field>
<field name="view_mode">tree,form</field>
</record>
@ -27,7 +27,7 @@
<record model="ir.ui.view" id="employee_lateness_reasons_form_view">
<field name="name">Lateness Reasons</field>
<field name="name">Lateness/Exit Reasons</field>
<field name="model">hr.reasons.lateness</field>
<field name="arch" type="xml">
<form>

View File

@ -15,11 +15,6 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__print_type__no_salary
msgid " بدون راتب"
msgstr ""
#. module: employee_requests
#: model_terms:ir.ui.view,arch_db:employee_requests.clearance_report_template
msgid ""
@ -924,6 +919,11 @@ msgstr "تاريخ تسليم العمل"
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_personal_permission_form_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_request_effective_form_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_request_effective_tree_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_personal_permission_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_other_request_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_overtime_request_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_effective_form_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.hr_clearance_form_filter
#, python-format
msgid "Department"
msgstr "الهيكل الإداري"
@ -1134,6 +1134,28 @@ msgstr "نوع النموذج الفعال"
msgid "Emp No."
msgstr "رقم الموظف"
#. module: attendances
#: model:ir.model.fields,field_description:employee_requests.field_employee_overtime_request__employee_no
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_overtime_request_tree_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_overtime_request_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_overtime_request_form_view
#: model:ir.model.fields,field_description:employee_requests.field_employee_other_request__employee_no
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_other_request_tree_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_other_request_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_other_request_form_view
#: model:ir.model.fields,field_description:employee_requests.field_hr_personal_permission__employee_no
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_personal_permission_tree_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_personal_permission_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_personal_permission_form_view
#: model:ir.model.fields,field_description:employee_requests.field_employee_effective_form__employee_no
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_request_effective_tree_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_request_effective_form_view
#: model:ir.model.fields,field_description:employee_requests.field_hr_clearance_form__employee_no
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_clearance_form_form_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_clearance_form_tree_view
msgid "Employee Number"
msgstr "رقم الموظف"
#. module: employee_requests
#: model:ir.model,name:employee_requests.model_hr_employee
#: model:ir.model.fields,field_description:employee_requests.field_employee_department_jobs__employee_id
@ -1144,6 +1166,12 @@ msgstr "رقم الموظف"
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_personal_permission_tree_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_request_effective_form_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_request_effective_tree_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_personal_permission_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_other_request_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_overtime_request_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_department_jobs_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_effective_form_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.hr_clearance_form_filter
msgid "Employee"
msgstr "الموظف"
@ -1264,11 +1292,6 @@ msgstr "معلومات الموظف"
msgid "Employee Name"
msgstr "إسم الموظف"
#. module: employee_requests
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_personal_permission_form_view
msgid "Employee No"
msgstr "رقم الموظف"
#. module: employee_requests
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_clearance_details_template
msgid "Employee Number :"
@ -1322,11 +1345,6 @@ msgstr ""
msgid "Employee name"
msgstr "إسم الموظف"
#. module: employee_requests
#: model:ir.model.fields,field_description:employee_requests.field_hr_personal_permission__employee_no
msgid "Employee number"
msgstr "رقم الموظف"
#. module: employee_requests
#: model:ir.actions.act_window,name:employee_requests.employee_personal_permission_action
#: model_terms:ir.ui.view,arch_db:employee_requests.view_permission_calendar
@ -2459,13 +2477,11 @@ msgstr "مدير المشروع :"
#. module: employee_requests
#: model:ir.model.fields,field_description:employee_requests.field_employee_department_jobs__promotion_type
msgid "Promotion Type"
msgstr "نوع الاجراء"
#. module: employee_requests
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_department_jobs_form_view
msgid "Promotion type"
msgstr "نوع الاجراء"
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_department_jobs_tree_view
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_department_jobs_filter
msgid "Promotion Type"
msgstr "نوع الإجراء"
#. module: employee_requests
#: code:addons/employee_requests/models/other_request.py:0
@ -3390,27 +3406,11 @@ msgstr ""
msgid "اسم الموظف"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__qualification
msgid "اضافة مؤهل"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__suggestion
msgid "اقتراح"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__hr_employee__payment_method__bank
msgid "البنك"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__insurance
msgid "التأمينات الإجتماعية"
msgstr ""
#. module: employee_requests
#: model_terms:ir.ui.view,arch_db:employee_requests.report_employee_identification
#: model_terms:ir.ui.view,arch_db:employee_requests.report_employee_identify_2
@ -3451,12 +3451,6 @@ msgstr ""
msgid "الرجوع من الاجازة"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields,field_description:employee_requests.field_employee_other_request__certification_employee
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__certification
msgid "الشهادات"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__hr_clearance_form__state__admin_manager
msgid "القسم الإداري"
@ -3484,11 +3478,6 @@ msgstr ""
msgid "المعالـين"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__dependent
msgid "المعالين"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_effective_form__state__done
#: model:ir.model.fields.selection,name:employee_requests.selection__hr_clearance_form__state__direct_manager
@ -3577,11 +3566,6 @@ msgstr ""
msgid "انتظار المدير المباشر"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__print_type__detail
msgid "بتفاصيل"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_effective_form__effective_form_type__first_tim_job
msgid "بداية اول عمل"
@ -3597,16 +3581,6 @@ msgstr ""
msgid "بدل النقل"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__print_type__no_detail
msgid "بدون تفاصيل"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__card
msgid "بطاقة عمل"
msgstr ""
#. module: employee_requests
#: model_terms:ir.ui.view,arch_db:employee_requests.report_employee_identification
#: model_terms:ir.ui.view,arch_db:employee_requests.report_employee_identify_2
@ -3665,21 +3639,6 @@ msgstr ""
msgid "زمن خروج مبكر"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__complaint
msgid "شكوى"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__salary_define
msgid "طلب تعريف راتب"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__other_requests
msgid "طلبات اخرى"
msgstr ""
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__hr_employee__payment_method__cash
msgid "كاش"
@ -3785,12 +3744,6 @@ msgid ""
"Stopped"
msgstr ""
#. module: employee_requests
#: code:addons/employee_requests/models/other_request.py:0
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__salary_fixing
#, python-format
msgid "Salary Fixing"
msgstr "طلب تثبيت راتب"
#. module: employee_requests
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_other_request_form_view
@ -3822,3 +3775,88 @@ msgstr "للأسف، لرفض المدير المباشر '%s' فقط او مد
#, python-format
msgid "Sorry, The Refuse For The Department Manager '%s' Only !"
msgstr "للأسف، لرفض مدير الإدارة '%s' فقط او مدير الموارد البشرية !"
########################################################################################
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__dependent
msgid "Dependent"
msgstr "المعالين"
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__insurance
msgid "Insurance"
msgstr "طلب تأمين"
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__card
msgid "Business Card"
msgstr "بطاقة عمل"
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__qualification
msgid "Qualification"
msgstr "اضافة مؤهل"
#. module: employee_requests
#: model:ir.model.fields,field_description:employee_requests.field_employee_other_request__certification_employee
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__certification
msgid "Certification"
msgstr "الشهادات"
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__salary_define
msgid "Salary Define"
msgstr "طلب تعريف راتب"
#. module: employee_requests
#: code:addons/employee_requests/models/other_request.py:0
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__salary_fixing
#, python-format
msgid "Salary Fixing"
msgstr "طلب تثبيت راتب"
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__suggestion
msgid "Suggestion"
msgstr "اقتراح"
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__complaint
msgid "Complaint"
msgstr "شكوى"
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__request_type__other_requests
msgid "Other Requests"
msgstr "طلبات اخرى"
##############################
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__print_type__detail
msgid "With Details"
msgstr "بتفاصيل"
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__print_type__no_detail
msgid "Without Details"
msgstr "بدون تفاصيل"
#. module: employee_requests
#: model:ir.model.fields.selection,name:employee_requests.selection__employee_other_request__print_type__no_salary
msgid "Without Salary"
msgstr "بدون راتب"
#. module: employee_requests
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_personal_permission_filter
msgid "My Permissions"
msgstr "إستئذاناتي"
#. module: employee_requests
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_overtime_request_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_other_request_filter
#: model_terms:ir.ui.view,arch_db:employee_requests.employee_department_jobs_filter
msgid "My Requests"
msgstr "طلبـاتي"

View File

@ -24,6 +24,7 @@ class EmployeeDepartmentJobs(models.Model):
# relational fields
employee_id = fields.Many2one(comodel_name="hr.employee", tracking=True, domain=[('state', '=', 'open')])
employee_no = fields.Char(related='employee_id.emp_no', readonly=True,string='Employee Number', store=True)
# old_department_id = fields.Many2one(comodel_name='hr.department', related='employee_id.department_id')
old_department_2_id = fields.Many2one(comodel_name='hr.department')
# old_job_id = fields.Many2one(comodel_name='hr.job', related='employee_id.job_id')

View File

@ -11,11 +11,12 @@ class EmployeeEffectiveForm(models.Model):
contract_id = fields.Many2one(related='employee_id.contract_id', readonly=True, string='Contract')
job_id = fields.Many2one(related='employee_id.job_id', readonly=True)
department_id = fields.Many2one(related='employee_id.department_id', readonly=True)
department_id = fields.Many2one(related='employee_id.department_id', readonly=True, store=True)
employee_salary = fields.Float(related='employee_id.contract_id.salary', readonly=True, tracking=True)
remarks = fields.Text()
employee_id = fields.Many2one('hr.employee', 'Employee Id', default=lambda item: item.get_user_id(),
domain=[('state', '=', 'open')])
employee_no = fields.Char(related='employee_id.emp_no', readonly=True,string='Employee Number', store=True)
effective_form_type = fields.Selection([('first_tim_job', _('First Time Job')),
('return_from_leave', _('Return From Leave'))], default="first_tim_job")

View File

@ -43,6 +43,7 @@ class employee_overtime_request(models.Model):
department_id = fields.Many2one('hr.department')
employee_id = fields.Many2one('hr.employee', 'Responsible', default=lambda item: item.get_user_id(),
domain=[('state', '=', 'open')])
employee_no = fields.Char(related='employee_id.emp_no', readonly=True,string='Employee Number', store=True)
exception = fields.Boolean(string="Exception Hours", default=False,
help='Exceeding The Limit Of Overtime Hours Per Month')

View File

@ -13,9 +13,10 @@ class HrClearanceForm(models.Model):
date = fields.Date(default=lambda self: fields.Date.today())
date_deliver_work = fields.Date()
job_id = fields.Many2one(related='employee_id.job_id', readonly=True)
department_id = fields.Many2one(related='employee_id.department_id', readonly=True)
department_id = fields.Many2one(related='employee_id.department_id', readonly=True, store=True)
employee_id = fields.Many2one('hr.employee', 'Employee Id', default=lambda item: item.get_user_id(),
domain=[('state', '=', 'open')])
employee_no = fields.Char(related='employee_id.emp_no', readonly=True,string='Employee Number', store=True)
clearance_type = fields.Selection(selection=[("vacation", _("Vacation Clearance")),
("final", _("Final Clearance"))], default='final')

View File

@ -25,17 +25,20 @@ class HrPersonalPermission(models.Model):
permission_number = fields.Float(store=True, readonly=True, help='The Remaining Number of Hours permission This Month')
early_exit = fields.Boolean()
mission_purpose = fields.Text()
employee_no = fields.Char(related='employee_id.emp_no', readonly=True)
employee_no = fields.Char(related='employee_id.emp_no', readonly=True,string='Employee Number', store=True)
job_id = fields.Many2one(related='employee_id.job_id', readonly=True)
department_id = fields.Many2one(related='employee_id.department_id', readonly=True)
department_id = fields.Many2one(related='employee_id.department_id', readonly=True,store=True)
refuse_cause = fields.Text()
attach_ids = fields.One2many('ir.attachment', 'personal_permission_id')
approved_by = fields.Many2one(comodel_name='res.users')
refused_by = fields.Many2one(comodel_name='res.users')
employee_id = fields.Many2one('hr.employee', 'Employee Id', default=lambda item: item.get_user_id(),domain=[('state', '=', 'open')])
state = fields.Selection([('draft', _('Draft')), ('send', _('Waiting Direct Manager')), ('direct_manager', _('Wait HR Department')),('approve', _('Approved')), ('refused', _('Refused'))], default="draft", tracking=True)
state = fields.Selection([('draft', _('Draft')), ('send', _('Waiting Direct Manager')),
('direct_manager', _('Wait HR Department')),
('approve', _('Approved')), ('refused', _('Refused'))], default="draft", tracking=True)
type_exit = fields.Selection([('early_exit', _('Early Exit')), ('late entry', _('Late Entry')), ('during work', _('During Work'))],default="early_exit")
company_id = fields.Many2one('res.company',string="Company", default=lambda self: self.env.user.company_id)
# time_permission_from = fields.Float(string="Permission From (24h format)", help="Time in 24-hour format (e.g., 13.5 for 1:30 PM)")
# time_permission_to = fields.Float(string="Permission To (24h format)", help="Time in 24-hour format (e.g., 15.75 for 3:45 PM)")

View File

@ -32,7 +32,8 @@ class EmployeeOtherRequest(models.Model):
# relational fields
employee_id = fields.Many2one('hr.employee', default=lambda item: item.get_user_id(),
domain=[('state', '=', 'open')])
department_id = fields.Many2one(comodel_name='hr.department', related='employee_id.department_id', readonly=True)
employee_no = fields.Char(related='employee_id.emp_no', readonly=True,string='Employee Number', store=True)
department_id = fields.Many2one(comodel_name='hr.department', related='employee_id.department_id', readonly=True,store=True)
job_id = fields.Many2one(comodel_name='hr.job', related='employee_id.job_id', readonly=True)
contract_statuss = fields.Selection(related='employee_id.contract_id.contract_status', readonly=True)

View File

@ -6,6 +6,7 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">employee.department.jobs</field>
<field name="view_mode">tree,form,calendar</field>
<field name= "context">{"search_default_my_request":1}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Employee Departments and jobs
@ -63,11 +64,13 @@
<group>
<field name="employee_id" string="Employee Name" required="1"
attrs="{'readonly':[('state','!=','draft')]}" colspan="4"/>
<field name="employee_no" string="Employee Number" readonly="1"/>
</group>
<group>
<group>
<field name="company_id" groups="base.group_multi_company" readonly="1"/>
<field name="promotion_type" string="Promotion type" required="1"
<field name="employee_no" string="Employee Number" readonly="1"/>
<field name="promotion_type" string="Promotion Type" required="1"
attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="new_department_id" string="New Department"
attrs="{'readonly':[('state','!=','draft')],
@ -118,7 +121,9 @@
<field name="model">employee.department.jobs</field>
<field name="arch" type="xml">
<tree decoration-info="state == 'draft'" string="Employee Departments and jobs">
<field name="employee_no" string="Employee Number"/>
<field name="employee_id" string="Employee name"/>
<field name="promotion_type" string="Promotion Type"/>
<field name="new_department_id" string="New department"/>
<field name="new_job_id" string="New Job"/>
<field name="date" string="Date"/>
@ -127,5 +132,25 @@
</field>
</record>
<!--employee_department_jobs_filter -->
<record id="employee_department_jobs_filter" model="ir.ui.view">
<field name="name">employee.department.jobs</field>
<field name="model">employee.department.jobs</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search>
<field name="employee_id"/>
<field name="employee_no"/>
<group expand="0" string="Group By">
<filter name="group_employee" string="Employee" domain="[]" context="{'group_by': 'employee_id'}"/>
<filter name="group_type" string="Promotion Type" domain="[]" context="{'group_by': 'promotion_type'}"/>
</group>
<separator/>
<filter string="My Requests" name="my_request" domain="[('employee_id.user_id', '=', uid)]"/>
<separator/>
</search>
</field>
</record>
</data>
</odoo>

View File

@ -57,6 +57,7 @@
<field name="from_hr" string="Another Employee" attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="employee_id" string="Employee"
attrs="{'readonly': ['|',('from_hr','=',False),('state','!=','draft')],'required':True}"/>
<field name="employee_no" string="Employee Number" readonly="1"/>
<field name="contract_id" string="Contract" readonly="True" groups="hr.group_hr_user"/>
<field name="job_id" string="Job Name" readonly="True"/>
<field name="department_id" string="Department" readonly="True"/>
@ -94,6 +95,7 @@
<field name="model">employee.effective.form</field>
<field name="arch" type="xml">
<tree decoration-danger="state == 'refused'" decoration-info="state == 'draft'" string="Employee Request Effective">
<field name="employee_no" string="Employee Number"/>
<field name="employee_id" string="Employee"/>
<field name="department_id" string="Department"/>
<field name="contract_start" string="Contract Start Date"/>
@ -103,5 +105,24 @@
</field>
</record>
<!--employee_effective_form_filter -->
<record id="employee_effective_form_filter" model="ir.ui.view">
<field name="name">Employee Request Effective</field>
<field name="model">employee.effective.form</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search>
<field name="employee_id"/>
<field name="employee_no"/>
<group expand="0" string="Group By">
<filter name="group_employee" string="Employee" domain="[]" context="{'group_by': 'employee_id'}"/>
<filter name="group_department" string="Department" domain="[]" context="{'group_by': 'department_id'}"/>
</group>
</search>
</field>
</record>
</data>
</odoo>

View File

@ -6,6 +6,7 @@
<field name="name">Employee OverTime Request</field>
<field name="res_model">employee.overtime.request</field>
<field name="view_mode">tree,form,calendar</field>
<field name= "context">{"search_default_my_request":1}</field>
</record>
<record model="ir.ui.view" id="view_overtime_calendar">
@ -66,6 +67,7 @@
<group>
<field name="transfer_type" attrs="{'readonly':[('state','!=','financial_manager')], 'required': [('state', '=', 'financial_manager')]}"/>
<field name="employee_id" string="Responsible " required="1" attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="employee_no" string="Employee Number" readonly="1"/>
<field name="date_from" string="Date From"
attrs="{'readonly':[('state','not in',('financial_manager','draft','submit'))], 'required': [('state', 'in', ('financial_manager','draft','submit'))]}"/>
@ -127,6 +129,7 @@
<field name="model">employee.overtime.request</field>
<field name="arch" type="xml">
<tree decoration-danger="state == 'refused'" decoration-info="state == 'draft'" string="Employee Overtime Request">
<field name="employee_no" string="Employee Number"/>
<field name="employee_id" string="Responsible"/>
<field name="department_id" string="Department"/>
<field name="request_date" string="Request Date"/>
@ -137,5 +140,26 @@
</field>
</record>
<!--employee_overtime_filter -->
<record id="employee_overtime_request_filter" model="ir.ui.view">
<field name="name">Employee Overtime Request</field>
<field name="model">employee.overtime.request</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search>
<field name="employee_id"/>
<field name="employee_no"/>
<field name="department_id" />
<group expand="0" string="Group By">
<filter name="group_employee" string="Employee" domain="[]" context="{'group_by': 'employee_id'}"/>
<filter name="group_department" string="Department" domain="[]" context="{'group_by': 'department_id'}"/>
</group>
<separator/>
<filter string="My Requests" name="my_request" domain="[('employee_id.user_id', '=', uid)]"/>
<separator/>
</search>
</field>
</record>
</data>
</odoo>

View File

@ -65,6 +65,7 @@
attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="employee_id" string="Employee Name"
attrs="{'readonly':['|',('state','!=','draft'),('from_hr_department','!=',True)],'required':[('from_hr_department','=',True)]}"/>
<field name="employee_no" string="Employee Number" readonly="1"/>
<field name="date" string="Date Request" required="1"
attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="date_deliver_work" string="Delivering Work Date" required="1"
@ -155,6 +156,7 @@
<field name="model">hr.clearance.form</field>
<field name="arch" type="xml">
<tree decoration-danger="state == 'refuse'" decoration-info="state == 'draft'" string="Employee Clearance Form">
<field name="employee_no" string="Employee Number"/>
<field name="employee_id" string="Employee Name"/>
<field name="department_id" string="Department"/>
<field name="job_id" string="Job Title"/>
@ -164,5 +166,22 @@
</field>
</record>
<!--hr_clearance_form_filter -->
<record id="hr_clearance_form_filter" model="ir.ui.view">
<field name="name">Employee Clearance Form</field>
<field name="model">hr.clearance.form</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search>
<field name="employee_id"/>
<field name="employee_no"/>
<group expand="0" string="Group By">
<filter name="group_employee" string="Employee" domain="[]" context="{'group_by': 'employee_id'}"/>
<filter name="group_department" string="Department" domain="[]" context="{'group_by': 'department_id'}"/>
</group>
</search>
</field>
</record>
</data>
</odoo>

View File

@ -5,6 +5,7 @@
<field name="name">Employee permission</field>
<field name="res_model">hr.personal.permission</field>
<field name="view_mode">tree,form,calendar</field>
<field name= "context">{"search_default_my_permission":1}</field>
</record>
<record model="ir.ui.view" id="view_permission_calendar">
@ -76,7 +77,7 @@
attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="employee_id" string="Employee"
attrs="{'readonly': ['|',('from_hr_department','=',False),('state','!=','draft')],'required':True}"/>
<field name="employee_no" string="Employee No" readonly="1"/>
<field name="employee_no" string="Employee Number" readonly="1"/>
<field name="job_id" string="Job Title" readonly="1"/>
<field name="department_id" string="Department" readonly="1"/>
</group>
@ -124,8 +125,8 @@
<field name="arch" type="xml">
<tree decoration-danger="state == 'refused'" decoration-info="state == 'draft'" string="Employee personal permission">
<!--field name="date" string="Date Request"/-->
<field name="employee_no" string="Employee Number"/>
<field name="employee_id" string="Employee"/>
<!--field name="employee_no" string="Employee No"/-->
<field name="date_from" string="Date From"/>
<field name="date_to" string="Date To"/>
<field name="duration" string="Duration" widget="float_time"/>
@ -134,5 +135,28 @@
</field>
</record>
<!-- permission_filter -->
<record id="employee_personal_permission_filter" model="ir.ui.view">
<field name="name">Employee personal permission</field>
<field name="model">hr.personal.permission</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search>
<field name="employee_id"/>
<field name="employee_no"/>
<field name="department_id" />
<group expand="0" string="Group By">
<filter name="group_employee" string="Employee" domain="[]" context="{'group_by': 'employee_id'}"/>
<filter name="group_department" string="Department" domain="[]" context="{'group_by': 'department_id'}"/>
</group>
<separator/>
<filter string="My Permissions" name="my_permission" domain="[('employee_id.user_id', '=', uid)]"/>
<separator/>
</search>
</field>
</record>
</data>
</odoo>

View File

@ -6,6 +6,7 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">employee.other.request</field>
<field name="view_mode">tree,form,calendar</field>
<field name= "context">{"search_default_my_request":1}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Employee Other Request
@ -76,6 +77,7 @@
attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="employee_id" string="Employee Name"
attrs="{'readonly': ['|',('from_hr','=',False),('state','!=','draft')],'required':True}"/>
<field name="employee_no" string="Employee Number" readonly="1"/>
<field name="department_id" string="Department"/>
<field name="job_id" string="Job"/>
@ -219,6 +221,7 @@
<field name="model">employee.other.request</field>
<field name="arch" type="xml">
<tree decoration-info="state == 'draft'" string="Employee Other Request">
<field name="employee_no" string="Employee Number"/>
<field name="employee_id" string="Employee Name"/>
<field name="department_id" string="Department"/>
<field name="job_id" string="Job"/>
@ -229,5 +232,26 @@
</field>
</record>
<!-- Other_request_filter -->
<record id="employee_other_request_filter" model="ir.ui.view">
<field name="name">Employee Other Request</field>
<field name="model">employee.other.request</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search>
<field name="employee_id"/>
<field name="employee_no"/>
<field name="department_id" />
<group expand="0" string="Group By">
<filter name="group_employee" string="Employee" domain="[]" context="{'group_by': 'employee_id'}"/>
<filter name="group_department" string="Department" domain="[]" context="{'group_by': 'department_id'}"/>
</group>
<separator/>
<filter string="My Requests" name="my_request" domain="[('employee_id.user_id', '=', uid)]"/>
<separator/>
</search>
</field>
</record>
</data>
</odoo>

View File

@ -27,9 +27,9 @@ class HrContractSalaryScale(models.Model):
for rec in self:
localdict = dict(employee=rec.employee_id.id, contract=rec.env['hr.contract'].search([
('employee_id', '=', rec.employee_id.id)]))
if self.salary_group.gread_max > 0 and self.salary_group.gread_min > 0:
if self.salary > self.salary_group.gread_max or self.salary < self.salary_group.gread_min:
raise UserError(_('The Basic Salary Is Greater Than Group Gread Max Or less than Gread Min'))
if rec.salary_group.gread_max > 0 and rec.salary_group.gread_min > 0:
if rec.salary > rec.salary_group.gread_max or rec.salary < rec.salary_group.gread_min:
raise UserError(_('The Basic Salary Is Greater Than Group Gread Max Or less than Gread Min'))
for item in self.advantages:
item.to_get_contract_id()
if item.benefits_discounts._compute_rule(localdict)[0] < item.amount and item.type == 'exception':
@ -44,7 +44,7 @@ class HrContractSalaryScale(models.Model):
else:
self.required_condition = False
@api.depends('salary_scale', 'salary_level', 'salary_group', 'salary_degree','salary','advantages','house_allowance_temp','transport_allowance','total_deduction','salary_insurnce')
@api.depends('salary_scale', 'salary_level', 'salary_group', 'salary_degree','salary','advantages','house_allowance_temp','transport_allowance','total_deduction','salary_insurnce','total_allowance','state')
def compute_function(self):
for item in self:
item.house_allowance_temp = 0

View File

@ -44,7 +44,7 @@ msgstr "!مهم؛ حجم الخط: 8px؛ min-width: 18px \"& gt؛"
#: code:addons/hr_holidays_community/models/hr_holidays.py:0
#, python-format
msgid "%g remaining out of %g"
msgstr ""%g المتبقي من %g""
msgstr "%g المتبقي من %g"
#. module: hr_holidays_community
#: code:addons/hr_holidays_community/models/hr_holidays.py:0