diff --git a/odex25_hr/attendances/views/hr_attendance_view.xml b/odex25_hr/attendances/views/hr_attendance_view.xml index 43627f9d9..16f3fabb5 100644 --- a/odex25_hr/attendances/views/hr_attendance_view.xml +++ b/odex25_hr/attendances/views/hr_attendance_view.xml @@ -423,4 +423,6 @@ + + diff --git a/odex25_hr/attendances/wizard/attendances_report_wiz.py b/odex25_hr/attendances/wizard/attendances_report_wiz.py index a2339b978..f0bef33bd 100644 --- a/odex25_hr/attendances/wizard/attendances_report_wiz.py +++ b/odex25_hr/attendances/wizard/attendances_report_wiz.py @@ -245,13 +245,15 @@ class ReportAttendancePublic(models.AbstractModel): all_days = {l.date for l in lines} absent = {l.date for l in lines if l.is_absent} vacation = {l.date for l in lines if l.normal_leave} + holidays = {l.date for l in lines if l.public_holiday} iq = getattr(emp, 'iqama_number', False) or getattr(emp, 'saudi_number', '') + calendar_name = lines[0].calendar_id.name if lines and lines[0].calendar_id else '' summary_rows.append({ 'employee_number': emp.emp_no or '', 'name': emp.name, - 'seq': seq if seq else '', + 'seq': f"{seq} - {calendar_name}" if seq else '', 'iqama': iq.display_name or '', 'department': emp.department_id.name, 'job': emp.sudo().job_id.name, @@ -489,10 +491,11 @@ class ReportAttendancegeneral(models.AbstractModel): holidays = {l.date for l in lines if l.public_holiday} iq = getattr(emp, 'iqama_number', False) or getattr(emp, 'saudi_number', '') + calendar_name = lines[0].calendar_id.name if lines and lines[0].calendar_id else '' summary_rows.append({ 'employee_number': emp.emp_no or '', 'name': emp.name, - 'seq': seq if seq else '', + 'seq': f"{seq} - {calendar_name}" if seq else '', 'iqama': iq.display_name or '', 'department': emp.department_id.name, 'job': emp.sudo().job_id.name, @@ -701,11 +704,12 @@ class AttendancesReportXls(models.AbstractModel): total_absent += len(absent) iq = getattr(emp, 'iqama_number', False) or getattr(emp, 'saudi_number', '') + calendar_name = lines[0].calendar_id.name if lines and lines[0].calendar_id else '' sheet.write_row(row, 1, [ emp.emp_no or '', emp.name, - seq if seq else '', + f"{seq} - {calendar_name}" if seq else '', iq.display_name, emp.department_id.name, diff --git a/odex25_hr/employee_requests/i18n/ar_001.po b/odex25_hr/employee_requests/i18n/ar_001.po index 8f29f13c8..d52d21a9d 100644 --- a/odex25_hr/employee_requests/i18n/ar_001.po +++ b/odex25_hr/employee_requests/i18n/ar_001.po @@ -1412,10 +1412,9 @@ msgid "Expiration date" msgstr "تاريخ الانتهاء" #. module: employee_requests -#: model:ir.model.fields,field_description:employee_requests.field_hr_employee__date_of_expiry #: model:ir.model.fields,field_description:employee_requests.field_hr_employee__expiration_date_passport -msgid "Expiry Date" -msgstr "تاريخ النهاية" +msgid "Passport Expiry Date" +msgstr "تاريخ انتهاء الجواز" #. module: employee_requests #: model_terms:ir.ui.view,arch_db:employee_requests.view_employee_form_leave_inherit_001 @@ -1792,10 +1791,20 @@ msgstr "" msgid "Is Last Record?" msgstr "أخر سجل؟" + #. module: employee_requests #: model:ir.model.fields,field_description:employee_requests.field_hr_employee__date_issuance_passport -msgid "Issue Date" -msgstr "تاريخ الاصدار" +msgid "Passport Issue Date" +msgstr "تاريخ اصدار الجواز" + + + +#. module: employee_requests +#: model:ir.model.fields,field_description:employee_requests.field_hr_employee__date_issuance_saudi_id +msgid "Saudi Issue Date" +msgstr "تاريخ اصدار الهوية الوطنية " + + #. module: employee_requests #: model:ir.model.fields,field_description:employee_requests.field_hr_clearance_form__it_mg diff --git a/odex25_hr/employee_requests/models/employee.py b/odex25_hr/employee_requests/models/employee.py index 9897f7778..2566a46d4 100644 --- a/odex25_hr/employee_requests/models/employee.py +++ b/odex25_hr/employee_requests/models/employee.py @@ -16,8 +16,8 @@ class HrEmployee(models.Model): _inherit = "hr.employee" # passport fields to private information page - date_issuance_passport = fields.Date() - expiration_date_passport = fields.Date() + date_issuance_passport = fields.Date(string="Passport Issue Date") + expiration_date_passport = fields.Date(string="Passport Expiry Date") place_issuance_passport = fields.Char() own_license = fields.Boolean() diff --git a/odex25_hr/employee_requests/views/customize_hr_employee.xml b/odex25_hr/employee_requests/views/customize_hr_employee.xml index 6641e26c8..62d1dd365 100644 --- a/odex25_hr/employee_requests/views/customize_hr_employee.xml +++ b/odex25_hr/employee_requests/views/customize_hr_employee.xml @@ -33,10 +33,16 @@ domain="[('employee_ref','=',id),('document_type','=','saudi')]" context="{'default_employee_ref':id,'default_document_type':'saudi'}" attrs="{'invisible':[('check_nationality','=',False)],'required':[('check_nationality','=',True)],'readonly':[('state','!=','draft')]}"/> - - + + + + + + + + @@ -47,9 +53,12 @@ domain="[('employee_ref','=',id),('document_type','=','Iqama')]" attrs="{'invisible':[('check_nationality','=',True)],'required':[('check_nationality','=',False)],'readonly':[('state','!=','draft')]}" context="{'default_employee_ref':id,'default_document_type':'Iqama'}"/> - - @@ -58,28 +67,24 @@ - - - - - diff --git a/odex25_hr/employee_requests/views/hr_personal_permission.xml b/odex25_hr/employee_requests/views/hr_personal_permission.xml index 47ddff062..272f7f5e2 100644 --- a/odex25_hr/employee_requests/views/hr_personal_permission.xml +++ b/odex25_hr/employee_requests/views/hr_personal_permission.xml @@ -156,8 +156,12 @@ + + + + diff --git a/odex25_hr/exp_ticket_request/i18n/ar_001.po b/odex25_hr/exp_ticket_request/i18n/ar_001.po index a43eb1155..8a69c290b 100644 --- a/odex25_hr/exp_ticket_request/i18n/ar_001.po +++ b/odex25_hr/exp_ticket_request/i18n/ar_001.po @@ -511,7 +511,7 @@ msgstr "تاريخ انتهاء الجواز" #. module: exp_ticket_request #: model:ir.model.fields,field_description:exp_ticket_request.field_hr_ticket_request__passport_expiry_date -msgid "Passport Expiry Date." +msgid "Passport Expiry Date" msgstr "تاريخ انتهاء الجواز" #. module: exp_ticket_request diff --git a/odex25_hr/exp_ticket_request/models/hr_ticketing.py b/odex25_hr/exp_ticket_request/models/hr_ticketing.py index 4b3719bc6..88d0b09e6 100644 --- a/odex25_hr/exp_ticket_request/models/hr_ticketing.py +++ b/odex25_hr/exp_ticket_request/models/hr_ticketing.py @@ -48,8 +48,8 @@ class HrTicketing(models.Model): state = fields.Selection(STATE_SELECTION, string='Status', default='draft', tracking=True) leave_ticket = fields.Boolean(string='Leave Ticket') passport_issue_place = fields.Char(related='employee_id.place_issuance_passport', string='Passport Issue Place') - passport_issue_date = fields.Date(related='employee_id.date_issuance_passport', string='Passport Issue Date.') - passport_expiry_date = fields.Date(related='employee_id.expiration_date_passport', string='Passport Expiry Date.') + passport_issue_date = fields.Date(related='employee_id.date_issuance_passport', string='Passport Issue Date') + passport_expiry_date = fields.Date(related='employee_id.expiration_date_passport', string="Passport Expiry Date") position_type = fields.Selection([('Consultant_director', _('Managerial')), ('normal', _('Normal Job'))], _('Position Type'), ) request_date = fields.Date(string='Request Date', default=fields.Date.today) diff --git a/odex25_hr/hr_base/i18n/ar_001.po b/odex25_hr/hr_base/i18n/ar_001.po index ad9635a9d..79db58f3d 100644 --- a/odex25_hr/hr_base/i18n/ar_001.po +++ b/odex25_hr/hr_base/i18n/ar_001.po @@ -2081,8 +2081,6 @@ msgstr "" #: model:ir.model.fields,field_description:hr_base.field_employee_card__expiry_date #: model:ir.model.fields,field_description:hr_base.field_employee_family_iqama__expiry_date #: model:ir.model.fields,field_description:hr_base.field_employee_iqama__expiry_date -#: model:ir.model.fields,field_description:hr_base.field_hr_employee__expiration_date_passport -#: model:ir.model.fields,field_description:hr_base.field_hr_employee__expiration_date_saudi_id #: model:ir.model.fields,field_description:hr_base.field_hr_employee__expiry #: model:ir.model.fields,field_description:hr_base.field_hr_employee__iqama_expiy_date #: model:ir.model.fields,field_description:hr_base.field_res_company_tree__expiry_date @@ -2090,6 +2088,21 @@ msgstr "" msgid "Expiry Date" msgstr "تاريخ النهاية" + + +#. module: hr_base +#: model:ir.model.fields,field_description:hr_base.field_hr_employee__expiration_date_passport +msgid "Passport Expiry Date" +msgstr "تاريخ انتهاء الجواز" + + + +#. module: hr_base +#: model:ir.model.fields,field_description:hr_base.field_hr_employee__expiration_date_saudi_id +#: model_terms:ir.ui.view,arch_db:hr_base.employee__iqama_document_form_view +msgid "Saudi Expiry Date" +msgstr " تاريخ انتهاء الهوية الوطنية" + #. module: hr_base #: model_terms:ir.ui.view,arch_db:hr_base.eos_form_view #: model_terms:ir.ui.view,arch_db:hr_base.leaving_form_view @@ -2615,15 +2628,30 @@ msgstr "هل مواطن؟" #: model:ir.model.fields,field_description:hr_base.field_employee_card__issue_date #: model:ir.model.fields,field_description:hr_base.field_employee_family_iqama__issue_date #: model:ir.model.fields,field_description:hr_base.field_employee_iqama__issue_date -#: model:ir.model.fields,field_description:hr_base.field_hr_employee__date_issuance_passport -#: model:ir.model.fields,field_description:hr_base.field_hr_employee__date_issuance_saudi_id -#: model:ir.model.fields,field_description:hr_base.field_hr_employee__iqama_creat_date #: model:ir.model.fields,field_description:hr_base.field_hr_employee__issue #: model:ir.model.fields,field_description:hr_base.field_res_company_tree__issue_date #: model_terms:ir.ui.view,arch_db:hr_base.employee__iqama_document_form_view msgid "Issue Date" msgstr "تاريخ الإصدار" + + +#. module: hr_base +#: model:ir.model.fields,field_description:hr_base.field_hr_employee__date_issuance_passport +msgid "Passport Issue Date" +msgstr "تاريخ اصدار الجواز " + +#. module: hr_base +#: model:ir.model.fields,field_description:hr_base.field_hr_employee__date_issuance_saudi_id +msgid "Saudi Issue Date" +msgstr "تاريخ اصدار الهوية الوطنية" + + +module: hr_base +#: model:ir.model.fields,field_description:hr_base.field_hr_employee__iqama_creat_date +msgid "Iqama Issue Date" +msgstr "تاريخ اصدار الاقامة" + #. module: hr_base #: model:ir.model.fields,field_description:hr_base.field_hr_dependent__issue_place msgid "Issue Place" diff --git a/odex25_hr/hr_base/models/hr_base.py b/odex25_hr/hr_base/models/hr_base.py index e73f723fe..99731446e 100644 --- a/odex25_hr/hr_base/models/hr_base.py +++ b/odex25_hr/hr_base/models/hr_base.py @@ -29,7 +29,7 @@ class HrEmployee(models.Model): # iqama fields in employee view identity_number = fields.Char(compute_sudo=True, compute='_compute_identity_number', string='Identity Number',store=True) - iqama_creat_date = fields.Date(related="iqama_number.issue_date", readonly=True) + iqama_creat_date = fields.Date(related="iqama_number.issue_date", readonly=True,string="Iqama Issue Date") iqama_expiy_date = fields.Date(related="iqama_number.expiry_date", readonly=True) iqama_job = fields.Many2one(related="iqama_number.job_id", readonly=True) emp_iqama_job = fields.Char(related="iqama_number.emp_iqama_job", readonly=True) @@ -57,12 +57,12 @@ class HrEmployee(models.Model): issue = fields.Date("Issue Date") expiry = fields.Date("Expiry Date") # passport fields to private information page - date_issuance_passport = fields.Date(related="passport_id.issue_date", readonly=True) - expiration_date_passport = fields.Date(related="passport_id.expiry_date", readonly=True) + date_issuance_passport = fields.Date(related="passport_id.issue_date", readonly=True,string="Passport Issue Date") + expiration_date_passport = fields.Date(related="passport_id.expiry_date", readonly=True,string="Passport Expiry Date") place_issuance_passport = fields.Char(related="passport_id.place_issue_id", readonly=True) # related fields if employee is saudi - date_issuance_saudi_id = fields.Date(related="saudi_number.issue_date", readonly=True) + date_issuance_saudi_id = fields.Date(related="saudi_number.issue_date",string="Saudi Issue Date", readonly=True) expiration_date_saudi_id = fields.Date(related="saudi_number.expiry_date") place_issuance_saudi_id = fields.Char(related="saudi_number.place_issue_id", readonly=True) diff --git a/odex25_hr/hr_base/views/hr_base_view.xml b/odex25_hr/hr_base/views/hr_base_view.xml index 350e1c8a3..371d62c48 100644 --- a/odex25_hr/hr_base/views/hr_base_view.xml +++ b/odex25_hr/hr_base/views/hr_base_view.xml @@ -45,19 +45,19 @@ @@ -271,7 +271,8 @@ - + @@ -409,15 +410,19 @@ - + + + + - + + @@ -433,7 +438,7 @@ - + @@ -444,81 +449,81 @@ - + - - hr employee kanban - hr.employee - - - - - - + + hr employee kanban + hr.employee + + + + + + - - - + + + - - - + + + - - view.users.simple.form.inherit.hr - res.users - - + + view.users.simple.form.inherit.hr + res.users + + - - Login - + + Login + - - - - - - + + + + + + - - Create User - - - form - - code - - action = records.action_create_user() - - + + Create User + + + form + + code + + action = records.action_create_user() + + - + - + - - hr employee public kanban - hr.employee.public - - - - - - - - - - + + hr employee public kanban + hr.employee.public + + + - - - - - + + + + + + + + + + + + hr.job.form.inherit diff --git a/odex25_hr/hr_docs_expiry/i18n/ar_001.po b/odex25_hr/hr_docs_expiry/i18n/ar_001.po index 0bce34a91..b9d7964d6 100644 --- a/odex25_hr/hr_docs_expiry/i18n/ar_001.po +++ b/odex25_hr/hr_docs_expiry/i18n/ar_001.po @@ -168,9 +168,8 @@ msgstr "مستند خروج" #. module: hr_docs_expiry #: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee__expiry_license -#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__expiry_date -msgid "Expiry Date" -msgstr "تاريخ النهاية" +msgid "License Expiry Date" +msgstr " تاريخ انتهاء الرخصة" #. module: hr_docs_expiry #: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__file_examination diff --git a/odex25_hr/hr_docs_expiry/models/employee_documents.py b/odex25_hr/hr_docs_expiry/models/employee_documents.py index 6061bf20d..151c33596 100644 --- a/odex25_hr/hr_docs_expiry/models/employee_documents.py +++ b/odex25_hr/hr_docs_expiry/models/employee_documents.py @@ -183,6 +183,7 @@ class HrEmployee(models.Model): related="license_number_id.expiry_date", readonly=True, default=fields.date.today(), + string="License Expiry Date" ) document_count = fields.Integer(compute="_document_count", string="# Documents") diff --git a/odex25_hr/hr_holidays_public/models/hr_holidays.py b/odex25_hr/hr_holidays_public/models/hr_holidays.py index a404d0247..b3cce984f 100644 --- a/odex25_hr/hr_holidays_public/models/hr_holidays.py +++ b/odex25_hr/hr_holidays_public/models/hr_holidays.py @@ -1813,11 +1813,27 @@ class HRHolidays(models.Model): current_date = (datetime.utcnow() + timedelta(hours=3)) date_from_value = datetime.strptime(str(item.date_from), "%Y-%m-%d %H:%M:%S") date_to_value = datetime.strptime(str(item.date_to), "%Y-%m-%d %H:%M:%S") - if date_to_value < date_from_value: - raise exceptions.Warning(_('Sorry Date TO must be bigger than Date From')) - if (date_from_value - current_date).days + 1 < item.holiday_status_id.request_before: - raise exceptions.Warning(_('Sorry your request must be before %s Days of your leave') \ - % item.holiday_status_id.request_before) + + user = self.env.user + + # Check if user is **NOT** in the HR group + if not user.has_group("hr.group_hr_user"): + if date_to_value < date_from_value: + raise exceptions.Warning(_('Sorry, Date TO must be later than Date FROM')) + + if (date_from_value - current_date).days + 1 < item.holiday_status_id.request_before: + raise exceptions.Warning( + _('Sorry, your leave request must be submitted at least %s days in advance.') + % item.holiday_status_id.request_before + ) + + # if date_to_value < date_from_value: + # raise exceptions.Warning(_('Sorry Date TO must be bigger than Date From')) + # if (date_from_value - current_date).days + 1 < item.holiday_status_id.request_before: + # raise exceptions.Warning(_('Sorry your request must be before %s Days of your leave') \ + # % item.holiday_status_id.request_before) + + self.number_of_days_temp = self._get_number_of_days(item.date_from, item.date_to, self.employee_id.id, self.holiday_status_id.official_holidays, self.holiday_status_id.working_days)