From eb5af2188a1e57ab26292d2112f5e055c5ff3b73 Mon Sep 17 00:00:00 2001 From: Bakry Date: Sun, 29 Dec 2024 16:55:05 +0300 Subject: [PATCH] fix --- .../hr_permission_holidays/__manifest__.py | 9 +- .../hr_permission_holidays/i18n/ar_001.po | 84 ++++++----- .../hr_permission_holidays/i18n/ar_EG.po | 112 --------------- .../hr_permission_holidays/i18n/ar_SY.po | 129 ----------------- .../hr_permission_holidays/models/__init__.py | 1 - .../models/hr_holiday.py | 2 +- .../models/permission.py | 131 ++++++++++++------ .../views/permission_view.xml | 38 ++++- 8 files changed, 184 insertions(+), 322 deletions(-) delete mode 100644 odex25_hr/hr_permission_holidays/i18n/ar_EG.po delete mode 100644 odex25_hr/hr_permission_holidays/i18n/ar_SY.po diff --git a/odex25_hr/hr_permission_holidays/__manifest__.py b/odex25_hr/hr_permission_holidays/__manifest__.py index 4f7d9f0b5..023d6ca5e 100644 --- a/odex25_hr/hr_permission_holidays/__manifest__.py +++ b/odex25_hr/hr_permission_holidays/__manifest__.py @@ -1,17 +1,16 @@ # -*- coding: utf-8 -*- { - 'name': 'Hr Holiday Permission', + 'name': 'HR Holiday Permission', 'version': '1.0', - 'summary': """Hr Holiday Permission""", - 'description': """Hr Holiday Permission. + 'summary': """HR Holiday Permission""", + 'description': """HR Holiday Permission. This module gives Feature of deduct Permissions from holidays""", - 'category': 'Odex25-HR/Odex25-HR', + 'category': 'HR-Odex', 'author': 'Expert Co. Ltd.', 'website': 'http://exp-sa.com', 'depends': ['hr_holidays_public', 'employee_requests'], 'license': 'LGPL-3', 'data': [ - 'views/resource_view.xml', 'views/permission_view.xml', 'views/hr_holiday_view.xml', ], diff --git a/odex25_hr/hr_permission_holidays/i18n/ar_001.po b/odex25_hr/hr_permission_holidays/i18n/ar_001.po index 12c5a1986..c0753f02f 100644 --- a/odex25_hr/hr_permission_holidays/i18n/ar_001.po +++ b/odex25_hr/hr_permission_holidays/i18n/ar_001.po @@ -17,8 +17,9 @@ msgstr "" #. module: hr_permission_holidays #: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_personal_permission__deduct_from_holiday -msgid "Deduct From Holiday" -msgstr "الخصم من رصيد الاجازة" +#: model_terms:ir.ui.view,arch_db:hr_permission_holidays.hr_view_tree_inherit_permissions_holiday +msgid "Half Day Off" +msgstr "نصف يوم من الإجازة السنوية" #. module: hr_permission_holidays #: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_holidays__display_name @@ -71,8 +72,8 @@ msgstr "رقم الإذن" #. module: hr_permission_holidays #: model:ir.model.fields,field_description:hr_permission_holidays.field_resource_calendar__holiday_permission_deducted -msgid "Permission to Deduct From holiday" -msgstr "خصم الاذن من الاجازة" +msgid "Number Permission Holiday" +msgstr "عدد إستئذانات الاجازة" #. module: hr_permission_holidays #: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_holidays__permission_ids @@ -81,8 +82,8 @@ msgstr "الاذونات" #. module: hr_permission_holidays #: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_holidays_status__permission_annual_holiday -msgid "Permissions Deduct From Holiday" -msgstr "خصم الإذن من الاجازة السنوية" +msgid "Permissions Half Day Off" +msgstr "نصف يوم من الإجازة السنوية" #. module: hr_permission_holidays #: model:ir.model,name:hr_permission_holidays.model_resource_calendar @@ -95,31 +96,35 @@ msgstr "فترة عمل المورد" msgid "Sorry You Have No annual Leave To Deduct Permission" msgstr "عذرا ليس هنالك اجازة سنوية لخصم الاذن" +#. module: hr_permission_holidays +#: code:addons/hr_permission_holidays/models/permission.py:0 +#, python-format +msgid "Sorry You Have Used All Your Permission In This Day you have one permission per a Day" +msgstr "لايمكن طلب اذن مره أخرى في نفس اليوم" + #. module: hr_permission_holidays #: code:addons/hr_permission_holidays/models/permission.py:0 #, python-format msgid "Sorry You Have Used All Your Permission Hours In This Month" -msgstr "تم استخدام كل الاذونات المسموح بها خلال هذا الشهر" +msgstr "تم استخدام كل ساعات الإستئذانات المسموح بها خلال هذا الشهر" #. module: hr_permission_holidays #: code:addons/hr_permission_holidays/models/permission.py:0 #, python-format -msgid "" -"Sorry You Have Used All Your Permission In This Day you have one permission " -"per a Day" -msgstr "عذرًا ، لقد استخدمت كل الأذونات الخاصة بك في هذا اليوم ، لديك إذن واحد لكل يوم" +msgid "This Duration Must Be Greater Than Zero" +msgstr "فترة الاذن يجب ان تكون اكبر من الصفر" #. module: hr_permission_holidays #: code:addons/hr_permission_holidays/models/permission.py:0 #, python-format -msgid "Sorry You Have Used All Your Permission To Deduct From Holidays" +msgid "Sorry You Have Used All Your Permission To Half Day Off" msgstr "تم استخدام كل الاذونات المسموح بخصمها من الاجازة السنوية!" #. module: hr_permission_holidays #: code:addons/hr_permission_holidays/models/permission.py:0 #, python-format msgid "Sorry You Need To use Basic Permission Before Use Holidays" -msgstr "عذرا لايمكنك طلب خصم من اجازة وانت ﻻتمتلك رصيد إذن غير مستخدم" +msgstr "عذرا لايمكنك طلب خصم من اجازة وانت لديك رصيد إذن غير مستخدم " #. module: hr_permission_holidays #: code:addons/hr_permission_holidays/models/permission.py:0 @@ -128,11 +133,6 @@ msgstr "عذرا لايمكنك طلب خصم من اجازة وانت ﻻتمت msgid "Sorry you Have No leave balance" msgstr "لايوجد رصيد اجازة سنوية للخصم منه" -#. module: hr_permission_holidays -#: model:ir.model.fields,help:hr_permission_holidays.field_resource_calendar__holiday_permission_deducted -msgid "The Number of permission deducted From The Annual Holiday balance" -msgstr "عدد الإذن المقتطع من رصيد الإجازة السنوية" - #. module: hr_permission_holidays #: model:ir.model.fields,help:hr_permission_holidays.field_hr_personal_permission__permission_number msgid "The Remaining Number of Hours permission This Month" @@ -141,30 +141,50 @@ msgstr "إذن العدد المتبقي من الساعات هذا الشهر" #. module: hr_permission_holidays #: code:addons/hr_permission_holidays/models/permission.py:0 #, python-format -msgid "This Duration Must Be Greater Than Zero" -msgstr "يجب أن تكون هذه المدة أكبر من الصفر" +msgid "This Duration must be Greater than or equal to the Permission Limit" +msgstr "فترة الاذن يجب ان تكون اكبر من او يساوي فترة الإستئذانات المسموح بها" #. module: hr_permission_holidays #: code:addons/hr_permission_holidays/models/permission.py:0 #, python-format -msgid "This Duration must be less than or equal to the Permission Limit" -msgstr "يجب أن تكون هذه المدة أقل من أو تساوي حد الإذن" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:0 -#, python-format -msgid "" -"This Duration not Allowed it must be Less Than or equal Permission Hours in " -"Month" -msgstr "هذه المدة غير مسموح بها يجب أن تكون أقل من أو تساوي ساعات الإذن في الشهر" +msgid "This Duration not Allowed it must be Less Than or equal Permission Hours in Month" +msgstr "فترة الإذن يجب ان تكون اقل من او يساوي فترة الإستئذانات المسموح بها خلال الشهر" #. module: hr_permission_holidays #: code:addons/hr_permission_holidays/models/permission.py:0 #, python-format msgid "You can not Request Permission The Employee have Not First Hiring Date" -msgstr "لا يمكنك طلب الإذن ليس للموظف تاريخ التعيين الأول" +msgstr "لا يمكنك طلب إستئذان لموظف وليس لديه تاريخ مباشرة عمل" #. module: hr_permission_holidays #: model:ir.model,name:hr_permission_holidays.model_hr_personal_permission msgid "hr.personal.permission" -msgstr "" +msgstr "الإستئذانات" + +#. module: hr_permission_holidays +#: code:addons/hr_permission_holidays/models/permission.py:0 +#, python-format +msgid "The Number Of Hours should Be %s Hours For the Half Day Leave" +msgstr "يجب ان تكون ساعات طلب نصف يوم من الاجازة السنوية %s ساعات" + +#. module: hr_permission_holidays +#: code:addons/hr_permission_holidays/models/permission.py:0 +#, python-format +msgid "Sorry, Must Be a Half Day Period Within Working Hours" +msgstr "يجب ان تكون فترة نصف يوم خلال ساعات العمل" + +#. module: hr_permission_holidays +#: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_personal_permission_type__half_holiday +#: model_terms:ir.ui.view,arch_db:hr_permission_holidays.hr_personal_permission_type_view_form_inherit +msgid "Half Holiday" +msgstr "نصف إجازة" + +#. module: hr_permission_holidays +#: model:ir.model.fields,help:hr_permission_holidays.field_hr_personal_permission_type__half_holiday +msgid "The permission deducted From The Annual Holiday balance" +msgstr "يتم خصم نص يوم من رصيد الاجازة السنوية" + +#. module: employee_requests +#: model:ir.model.fields,field_description:employee_requests.field_hr_personal_permission_type__monthly_hours +msgid "Monthly Hours" +msgstr "ساعات/مرات شهرية" diff --git a/odex25_hr/hr_permission_holidays/i18n/ar_EG.po b/odex25_hr/hr_permission_holidays/i18n/ar_EG.po deleted file mode 100644 index bf9b2f600..000000000 --- a/odex25_hr/hr_permission_holidays/i18n/ar_EG.po +++ /dev/null @@ -1,112 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * hr_permission_holidays -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-20 14:09+0000\n" -"PO-Revision-Date: 2020-04-20 14:09+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_personal_permission_deduct_from_holiday -msgid "Deduct From Holiday" -msgstr "الخصم من رصيد الاجازة" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_personal_permission_holiday -msgid "Holiday" -msgstr "يوم الاجازة" - -#. module: hr_permission_holidays -#: model:ir.model,name:hr_permission_holidays.model_hr_holidays -msgid "Leave" -msgstr "الاجازات" - -#. module: hr_permission_holidays -#: model:ir.model,name:hr_permission_holidays.model_hr_holidays_status -msgid "Leave Type" -msgstr "نوع الإجازة" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_personal_permission_permission_amount -msgid "Permission Amount" -msgstr "مقدار الاذن" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_resource_calendar_holiday_permission_deducted -msgid "Permission to Deduct From holiday" -msgstr "خصم الاذن من الاجازة" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_holidays_permission_ids -msgid "Permissions" -msgstr "الاذونات" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_holidays_status_permission_annual_holiday -msgid "Permissions Deduct From Holiday" -msgstr "خصم الإذن من الاجازة السنوية" - -#. module: hr_permission_holidays -#: model:ir.model,name:hr_permission_holidays.model_resource_calendar -msgid "Resource Calendar" -msgstr "تقويم المورد" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:68 -#, python-format -msgid "Sorry You Have No annual Leave To Deduct Permission" -msgstr "عذرا ليس هنالك اجازة سنوية لخصم الاذن" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:108 -#, python-format -msgid "Sorry You Have Used All Your Permission In This Day you have one permission per a Day" -msgstr "لايمكن طلب اذن مره اخرى في نفس اليوم" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:47 -#: code:addons/hr_permission_holidays/models/permission.py:66 -#, python-format -msgid "Sorry You Have Used All Your Permission In This Month" -msgstr "تم استخدام كل الاذونات المسموح بها خلال هذا الشهر!" - - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:47 -#: code:addons/hr_permission_holidays/models/permission.py:66 -#, python-format -msgid "Sorry You Have Used All Your Permission To Deduct From Holidays" -msgstr "تم استخدام كل الاذونات المسموح بخصمها من الاجازة السنوية!" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:70 -#, python-format -msgid "Sorry You Need To use Basic Permission Before Use Holidays" -msgstr "عذرا لايمكنك طلب خصم من اجازة وانت ﻻتمتلك رصيد إذن غير مستخدم " - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:64 -#: code:addons/hr_permission_holidays/models/permission.py:78 -#, python-format -msgid "Sorry you Have No leave balance" -msgstr "لايوجد رصيد اجازة سنوية للخصم منه" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:116 -#, python-format -msgid "This Duration not Allowed it must be Less Than or equal to Balance And Not Equal Zero" -msgstr "فترة الاذن يجب ان تكون اكبر من الصفر واقل من او يساوي فترة الاذن المسموح بها" - -#. module: hr_permission_holidays -#: model:ir.model,name:hr_permission_holidays.model_hr_personal_permission -msgid "hr.personal.permission" -msgstr "اذن الخروج" diff --git a/odex25_hr/hr_permission_holidays/i18n/ar_SY.po b/odex25_hr/hr_permission_holidays/i18n/ar_SY.po deleted file mode 100644 index ffaadb7d6..000000000 --- a/odex25_hr/hr_permission_holidays/i18n/ar_SY.po +++ /dev/null @@ -1,129 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * hr_permission_holidays -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-20 14:09+0000\n" -"PO-Revision-Date: 2020-04-20 14:09+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_personal_permission_deduct_from_holiday -msgid "Deduct From Holiday" -msgstr "الخصم من رصيد الاجازة" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_personal_permission_holiday -msgid "Holiday" -msgstr "يوم الاجازة" - -#. module: hr_permission_holidays -#: model:ir.model,name:hr_permission_holidays.model_hr_holidays -msgid "Leave" -msgstr "الاجازات" - -#. module: hr_permission_holidays -#: model:ir.model,name:hr_permission_holidays.model_hr_holidays_status -msgid "Leave Type" -msgstr "نوع الإجازة" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_personal_permission_permission_amount -msgid "Permission Amount" -msgstr "مقدار الاذن" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_resource_calendar_holiday_permission_deducted -msgid "Permission to Deduct From holiday" -msgstr "خصم الاذن من الاجازة" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_holidays_permission_ids -msgid "Permissions" -msgstr "الاذونات" - -#. module: hr_permission_holidays -#: model:ir.model.fields,field_description:hr_permission_holidays.field_hr_holidays_status_permission_annual_holiday -msgid "Permissions Deduct From Holiday" -msgstr "خصم الإذن من الاجازة السنوية" - -#. module: hr_permission_holidays -#: model:ir.model,name:hr_permission_holidays.model_resource_calendar -msgid "Resource Calendar" -msgstr "تقويم المورد" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:68 -#, python-format -msgid "Sorry You Have No annual Leave To Deduct Permission" -msgstr "عذرا ليس هنالك اجازة سنوية لخصم الاذن" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:108 -#, python-format -msgid "Sorry You Have Used All Your Permission In This Day you have one permission per a Day" -msgstr "لايمكن طلب اذن مره أخرى في نفس اليوم" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:47 -#, python-format -msgid "Sorry You Have Used All Your Permission In This Month" -msgstr "تم استخدام كل الاذونات المسموح بها خلال هذا الشهر!" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:47 -#: code:addons/hr_permission_holidays/models/permission.py:66 -#, python-format -msgid "Sorry You Have Used All Your Permission To Deduct From Holidays" -msgstr "تم استخدام كل الاذونات المسموح بخصمها من الاجازة السنوية!" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:70 -#, python-format -msgid "Sorry You Need To use Basic Permission Before Use Holidays" -msgstr "عذرا لايمكنك طلب خصم من اجازة وانت لديك رصيد إذن غير مستخدم " - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:64 -#: code:addons/hr_permission_holidays/models/permission.py:78 -#, python-format -msgid "Sorry you Have No leave balance" -msgstr "لايوجد رصيد اجازة سنوية للخصم منه" - - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:49 -#, python-format -msgid "Sorry You Have Used All Your Permission Hours In This Month" -msgstr "تم استخدام كل ساعات الإذن المسموح بها خلال هذا الشهر" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:116 -#, python-format -msgid "This Duration Must Be Greater Than Zero" -msgstr "فترة الاذن يجب ان تكون اكبر من الصفر" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:117 -#, python-format -msgid "This Duration must be less than or equal to the Permission Limit" -msgstr "فترة الاذن يجب ان تكون اقل من او يساوي فترة الاذن المسموح بها" - -#. module: hr_permission_holidays -#: code:addons/hr_permission_holidays/models/permission.py:118 -#, python-format -msgid "This Duration not Allowed it must be Less Than or equal Permission Hours in Month" -msgstr "فترة الإذن يجب ان تكون اقل من او يساوي فترة الاذن المسموح بها خلال الشهر" - -#. module: hr_permission_holidays -#: model:ir.model,name:hr_permission_holidays.model_hr_personal_permission -msgid "hr.personal.permission" -msgstr "اذن الخروج" diff --git a/odex25_hr/hr_permission_holidays/models/__init__.py b/odex25_hr/hr_permission_holidays/models/__init__.py index 2a6de9096..ee4b9acd5 100644 --- a/odex25_hr/hr_permission_holidays/models/__init__.py +++ b/odex25_hr/hr_permission_holidays/models/__init__.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -from . import resource from . import permission from . import hr_holiday diff --git a/odex25_hr/hr_permission_holidays/models/hr_holiday.py b/odex25_hr/hr_permission_holidays/models/hr_holiday.py index 6e7f8e549..2aa022059 100644 --- a/odex25_hr/hr_permission_holidays/models/hr_holiday.py +++ b/odex25_hr/hr_permission_holidays/models/hr_holiday.py @@ -5,7 +5,7 @@ from odoo import fields, models class HrHolidaysStatus(models.Model): _inherit = 'hr.holidays.status' - permission_annual_holiday = fields.Boolean(string="Permissions Deduct From Holiday") + permission_annual_holiday = fields.Boolean(string="Permissions Half Day Off") class HRHolidays(models.Model): diff --git a/odex25_hr/hr_permission_holidays/models/permission.py b/odex25_hr/hr_permission_holidays/models/permission.py index 5f7014386..75ed0f7be 100644 --- a/odex25_hr/hr_permission_holidays/models/permission.py +++ b/odex25_hr/hr_permission_holidays/models/permission.py @@ -1,19 +1,28 @@ # -*- coding: utf-8 -*- -from odoo import models, fields, api, _ -from datetime import datetime -from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT +from odoo import models, fields, api,_ +from datetime import datetime,timedelta +import time +from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT,DEFAULT_SERVER_DATE_FORMAT from odoo.exceptions import ValidationError class HrPersonalPermission(models.Model): _inherit = 'hr.personal.permission' - deduct_from_holiday = fields.Boolean(string="Deduct From Holiday") - holiday = fields.Many2one('hr.holidays', string="Holiday") + deduct_from_holiday = fields.Boolean(related='permission_type_id.half_holiday', string="Half Day Off") + holiday = fields.Many2one('hr.holidays',string="Holiday") permission_amount = fields.Float(string="Permission Amount") permission_number = fields.Float(compute="get_permission_number", store=True) + + def send(self): + res = super(HrPersonalPermission,self).send() + self.get_permission_number() + #self._get_date_constrains(employee_permissions) + self.permission_number_decrement() + return res + def get_date_to_constrains_value(self): current_date = datetime.strptime(str(self.date_to), DEFAULT_SERVER_DATETIME_FORMAT) current_month = datetime.strptime(str(self.date_to), DEFAULT_SERVER_DATETIME_FORMAT).month @@ -24,7 +33,7 @@ class HrPersonalPermission(models.Model): employee_permissions = self.search([ ('employee_id', '=', self.employee_id.id), ('permission_type_id', '=', self.permission_type_id.id), - ('state', '=', 'approve'), + ('state', 'in', ('send', 'approve')), ('date_from', '>=', date_from), ('date_to', '<=', date_to)]) return date_from, date_to, employee_permissions @@ -37,8 +46,9 @@ class HrPersonalPermission(models.Model): basic = employee_permissions.filtered(lambda r: r.deduct_from_holiday == False) permission_type_id = rec.permission_type_id all_perission = 0.0 - for item in employee_permissions: - all_perission += item.duration + for item in employee_permissions.filtered(lambda r: r.id != self.id): + if item.deduct_from_holiday == False: + all_perission += item.duration if permission_type_id.monthly_hours - all_perission > 0: rec.permission_number = round(permission_type_id.monthly_hours - all_perission, 2) @@ -51,38 +61,47 @@ class HrPersonalPermission(models.Model): raise ValidationError(_('You can not Request Permission The Employee have Not First Hiring Date')) if rec.date_to: rec.check_holiday_mission() + date_from, date_to, employee_permissions = rec.get_date_to_constrains_value() calender = rec.employee_id.resource_calendar_id day_hours = calender.work_hour - rec.permission_amount = rec.duration / day_hours - basic = employee_permissions.filtered(lambda r: r.deduct_from_holiday == False) + rec.permission_amount = rec.duration/day_hours + basic = employee_permissions.filtered(lambda r:r.deduct_from_holiday == False and r.id != self.id) - employee_permissions_holiday = employee_permissions.filtered(lambda r: r.deduct_from_holiday == True) + for item in employee_permissions.filtered(lambda r:r.id != self.id): + + if item.date_to and rec.date_to: + permission_date1 = datetime.strptime(str(item.date_to),DEFAULT_SERVER_DATETIME_FORMAT).date() + date_to_value1 = datetime.strptime(str(rec.date_to), DEFAULT_SERVER_DATETIME_FORMAT).date() + if permission_date1 == date_to_value1: + raise ValidationError(_('Sorry You Have Used All Your Permission In This Day you have one permission per a Day')) + + employee_permissions_holiday = employee_permissions.filtered(lambda r: r.deduct_from_holiday == True and r.id != self.id) if rec.deduct_from_holiday: - if rec.permission_number <= 0.0: + if rec.permission_number >= 0.0: rec._get_date_constrains(employee_permissions_holiday) - annual = rec.env['hr.holidays.status'].search( - [('leave_type', '=', 'annual'), ('permission_annual_holiday', '=', True)]) + annual = rec.env['hr.holidays.status'].search([('leave_type', '=', 'annual') + ,('permission_annual_holiday', '=',True),]) for itm in annual: if rec.employee_id and itm: - holiday = rec.env['hr.holidays'].search( - [('employee_id', '=', rec.employee_id.id), ('type', '=', 'add'), - ('holiday_status_id', '=', itm.id), - ('check_allocation_view', '=', 'balance') - ], order='id desc', limit=1) - if holiday: + holiday = rec.env['hr.holidays'].search([('employee_id', '=', rec.employee_id.id),('type', '=', 'add'), + ('holiday_status_id', '=', itm.id), + ('check_allocation_view', '=', 'balance') + ], order='id desc', limit=1) + if holiday: rec.holiday = holiday.id balance = holiday.remaining_leaves or 0.0 - if len(employee_permissions_holiday) < calender.holiday_permission_deducted: + if len(employee_permissions_holiday) < rec.permission_type_id.monthly_hours: if balance < rec.permission_amount: raise ValidationError(_('Sorry you Have No leave balance')) else: - raise ValidationError( - _('Sorry You Have Used All Your Permission To Deduct From Holidays')) + raise ValidationError(_ + ('Sorry You Have Used All Your Permission To Half Day Off')) + else: raise ValidationError(_('Sorry You Have No annual Leave To Deduct Permission')) - else: - raise ValidationError(_('Sorry You Need To use Basic Permission Before Use Holidays')) + #else: + #raise ValidationError(_('Sorry You Need To use Basic Permission Before Use Holidays')) else: rec._get_date_constrains(basic) @@ -100,25 +119,26 @@ class HrPersonalPermission(models.Model): self.holiday.leaves_taken -= self.permission_amount def approve(self): - res = super(HrPersonalPermission, self).approve() + res = super(HrPersonalPermission,self).approve() self.leave_balance_process() + self.get_permission_number() return res def draft_state(self): if self.state == 'approve' and self.deduct_from_holiday: self.cancel_leave_balance_process() - res = super(HrPersonalPermission, self).draft_state() + res = super(HrPersonalPermission,self).draft_state() return res def _get_date_constrains(self, employee_permissions): for item in self: number_of_per = item.permission_type_id.monthly_hours - if employee_permissions: - # employee_permissions_to = employee_permissions.mapped('date_to') + if employee_permissions.filtered(lambda r: r.id != self.id): + employee_permissions_to = employee_permissions.mapped('date_to') date_to_value = datetime.strptime(str(item.date_to), DEFAULT_SERVER_DATETIME_FORMAT).date() - for employee_permission in employee_permissions: - permission_date = datetime.strptime(str(employee_permission.date_to), DEFAULT_SERVER_DATETIME_FORMAT).date() - if permission_date == date_to_value and item.id != employee_permission.id: + for emp_date in employee_permissions_to: + permission_date = datetime.strptime(str(emp_date), DEFAULT_SERVER_DATETIME_FORMAT).date() + if permission_date == date_to_value: raise ValidationError( _('Sorry You Have Used All Your Permission In This Day you have one permission per a Day')) start_date_value = datetime.strptime(str(item.date_from), "%Y-%m-%d %H:%M:%S") @@ -127,19 +147,48 @@ class HrPersonalPermission(models.Model): days = (end_date - start_date_value).days seconds_diff = (end_date - start_date_value).seconds item.duration = (days * 24) + seconds_diff / 3600 - all_perission = 0 - for rec in employee_permissions: - all_perission += rec.duration - if number_of_per < all_perission: + all_perission=0 + for rec in employee_permissions: + if rec.deduct_from_holiday == False: + all_perission += rec.duration + + if number_of_per < all_perission : raise ValidationError(_('Sorry You Have Used All Your Permission Hours In This Month')) if item.duration <= 0.0: raise ValidationError(_('This Duration Must Be Greater Than Zero')) + if not item.deduct_from_holiday: + if item.duration < item.balance and item.duration < item.permission_number: + raise ValidationError(_('This Duration must be Greater than or equal to the Permission Limit')) - if item.duration < item.balance: - raise ValidationError(_('This Duration must be less than or equal to the Permission Limit')) + if item.duration > item.permission_number and item.deduct_from_holiday== False: + raise ValidationError(_('This Duration not Allowed it must be Less Than or equal Permission Hours in Month')) - if item.duration > item.permission_number and not item.deduct_from_holiday: - raise ValidationError( - _('This Duration not Allowed it must be Less Than or equal Permission Hours in Month')) +#################### Half day holiday 4 hours ########## + if item.deduct_from_holiday: + date_from = datetime.strptime(str(item.date_from), "%Y-%m-%d %H:%M:%S") + date_to = datetime.strptime(str(item.date_to), "%Y-%m-%d %H:%M:%S") + date_from_time = (date_from + timedelta(hours=3)).time() + date_to_time = (date_to + timedelta(hours=3)).time() + hour_from = date_from_time.hour + date_from_time.minute / 60.0 + hour_to = date_to_time.hour + date_to_time.minute / 60.0 + #print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>',hour_from,hour_to) + + if item.duration != item.permission_type_id.daily_hours: + raise ValidationError(_('The Number Of Hours should Be %s Hours For the Half Day Leave') % item.permission_type_id.daily_hours) + + if item.employee_id.contract_id.working_hours.is_full_day== True: + hour_sign = item.employee_id.contract_id.working_hours.full_min_sign_in + hour_sign_out = item.employee_id.contract_id.working_hours.full_max_sign_out + #print('######################################',hour_sign,hour_sign_out) + if hour_from < hour_sign or hour_to > hour_sign_out: + raise ValidationError(_('Sorry, Must Be a Half Day Period Within Working Hours')) + + +class HrPersonalPermissionType(models.Model): + _inherit = 'hr.personal.permission.type' + + half_holiday = fields.Boolean(string="Half Holiday", + help='The permission deducted From The Annual Holiday balance') + diff --git a/odex25_hr/hr_permission_holidays/views/permission_view.xml b/odex25_hr/hr_permission_holidays/views/permission_view.xml index f7b81ede4..93f018ca5 100644 --- a/odex25_hr/hr_permission_holidays/views/permission_view.xml +++ b/odex25_hr/hr_permission_holidays/views/permission_view.xml @@ -8,10 +8,46 @@ 100 - + + + + {'invisible':[('deduct_from_holiday','=',True)]} + + + + {'invisible':[('deduct_from_holiday','=',True)]} + + + + + + + + + + Permission Types + hr.personal.permission.type + + + + + + +