Merge pull request #344 from expsa/dev_odex25_hr

Dev odex25 hr
This commit is contained in:
bakry 2024-07-21 15:27:04 +03:00 committed by GitHub
commit 60d6d7ca6d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 151 additions and 54 deletions

View File

@ -3807,3 +3807,16 @@ msgstr "للأسف، لموافقة المدير المباشر '%s' فقط او
#, python-format
msgid "Sorry, The Approval For The Department Manager '%s' Only OR HR Manager!"
msgstr "للأسف، لموافقة مدير الإدارة '%s' فقط او مدير الموارد البشرية !"
#. module: hr_holidays_public
#: code:addons/employee_requests/models/employee_overtime_request.py:0
#: code:addons/employee_requests/models/hr_personal_permission.py:0
#, python-format
msgid "Sorry, The Refuse For The Direct Manager '%s' Only OR HR Manager!"
msgstr "للأسف، لرفض المدير المباشر '%s' فقط او مدير الموارد البشرية !"
#. module: hr_holidays_public
#: code:addons/employee_requests/models/employee_overtime_request.py:0
#, python-format
msgid "Sorry, The Refuse For The Department Manager '%s' Only !"
msgstr "للأسف، لرفض مدير الإدارة '%s' فقط او مدير الموارد البشرية !"

View File

@ -146,28 +146,30 @@ class employee_overtime_request(models.Model):
self.state = "submit"
def direct_manager(self):
self.chick_not_mission()
#self.state = "direct_manager"
for rec in self:
if rec.employee_id.parent_id:
if rec.employee_id.parent_id.user_id.id == rec.env.uid or rec.env.company.hr_manager_id.user_id.id == rec.env.uid:
rec.write({'state': 'direct_manager'})
else:
rec.chick_not_mission()
manager = rec.sudo().employee_id.parent_id
hr_manager = rec.sudo().employee_id.user_id.company_id.hr_manager_id
if manager:
if manager.user_id.id == rec.env.uid or hr_manager.user_id.id == rec.env.uid:
rec.write({'state': 'direct_manager'})
else:
raise exceptions.Warning(_("Sorry, The Approval For The Direct Manager '%s' Only OR HR Manager!")%(rec.employee_id.parent_id.name))
else:
rec.write({'state': 'direct_manager'})
else:
rec.write({'state': 'direct_manager'})
def financial_manager(self):
self.chick_not_mission()
#self.state = "financial_manager"
for rec in self:
if rec.employee_id.coach_id:
if rec.employee_id.coach_id.user_id.id == rec.env.uid or rec.env.company.hr_manager_id.user_id.id == rec.env.uid:
rec.write({'state': 'financial_manager'})
else:
raise exceptions.Warning(_("Sorry, The Approval For The Department Manager '%s' Only OR HR Manager!")%(rec.employee_id.coach_id.name))
else:
rec.write({'state': 'financial_manager'})
rec.chick_not_mission()
manager = rec.sudo().employee_id.coach_id
hr_manager = rec.sudo().employee_id.user_id.company_id.hr_manager_id
if manager:
if manager.user_id.id == rec.env.uid or hr_manager.user_id.id == rec.env.uid:
rec.write({'state': 'financial_manager'})
else:
raise exceptions.Warning(_("Sorry, The Approval For The Department Manager '%s' Only OR HR Manager!")%(rec.employee_id.coach_id.name))
else:
rec.write({'state': 'financial_manager'})
def hr_aaproval(self):
self.chick_not_mission()
@ -236,6 +238,32 @@ class employee_overtime_request(models.Model):
def refused(self):
self.state = "refused"
#Refuse For The Direct Manager Only
def direct_manager_refused(self):
for rec in self:
manager = rec.sudo().employee_id.parent_id
hr_manager = rec.sudo().employee_id.user_id.company_id.hr_manager_id
if manager:
if manager.user_id.id == rec.env.uid or hr_manager.user_id.id == rec.env.uid:
rec.refused()
else:
raise exceptions.Warning(_("Sorry, The Refuse For The Direct Manager '%s' Only OR HR Manager!") % (manager.name))
else:
rec.refused()
#Refuse For The Department Manager Only
def dep_manager_refused(self):
for rec in self:
manager = rec.sudo().employee_id.coach_id
hr_manager = rec.sudo().employee_id.user_id.company_id.hr_manager_id
if manager:
if manager.user_id.id == rec.env.uid or hr_manager.user_id.id == rec.env.uid:
rec.refused()
else:
raise exceptions.Warning(_("Sorry, The Refuse For The Department Manager '%s' Only !")%(rec.employee_id.coach_id.name))
else:
rec.refused()
def unlink(self):
for i in self:
if i.state != 'draft':

View File

@ -129,7 +129,8 @@ class HrPersonalPermission(models.Model):
number_of_per = item.employee_id.contract_id.working_hours.permission_number
employee_permissions = self.search([
('employee_id', '=', item.employee_id.id),
('state', '=', 'approve'),
('state', 'in', ('send','approve') ),
#('state', '=', 'approve'),
('date_from', '>=', date_from),
('date_to', '<=', date_to)])
@ -166,7 +167,8 @@ class HrPersonalPermission(models.Model):
# number_of_per = item.employee_id.contract_id.working_hours.permission_number
# employee_permissions = self.search([
# ('employee_id', '=', item.employee_id.id),
# ('state', '=', 'approve'),
# ('state', 'in', ('send','approve') ),
# #('state', '=', 'approve'),
# ('date_from', '>=', date_from),
# ('date_to', '<=', date_to)])
@ -331,15 +333,16 @@ class HrPersonalPermission(models.Model):
self.state = "send"
def direct_manager(self):
#self.state = "direct_manager"
for rec in self:
if rec.employee_id.parent_id:
if rec.employee_id.parent_id.user_id.id == rec.env.uid or rec.env.company.hr_manager_id.user_id.id == rec.env.uid:
rec.write({'state': 'direct_manager'})
else:
raise exceptions.Warning(_("Sorry, The Approval For The Direct Manager '%s' Only OR HR Manager!")%(rec.employee_id.parent_id.name))
else:
rec.write({'state': 'direct_manager'})
manager = rec.sudo().employee_id.parent_id
hr_manager = rec.sudo().employee_id.user_id.company_id.hr_manager_id
if manager:
if manager.user_id.id == rec.env.uid or hr_manager.user_id.id == rec.env.uid:
rec.write({'state': 'direct_manager'})
else:
raise exceptions.Warning(_("Sorry, The Approval For The Direct Manager '%s' Only OR HR Manager!")%(rec.employee_id.parent_id.name))
else:
rec.write({'state': 'direct_manager'})
def approve(self):
self.state = "approve"
@ -348,6 +351,19 @@ class HrPersonalPermission(models.Model):
def refused(self):
self.state = "refused"
#Refuse For The Direct Manager
def direct_manager_refused(self):
for rec in self:
manager = rec.sudo().employee_id.parent_id
hr_manager = rec.sudo().employee_id.user_id.company_id.hr_manager_id
if manager:
if manager.user_id.id == rec.env.uid or hr_manager.user_id.id == rec.env.uid:
rec.refused()
else:
raise exceptions.Warning(_("Sorry, The Refuse For The Direct Manager '%s' Only OR HR Manager!") % (manager.name))
else:
rec.refused()
def get_user_id(self):
employee_id = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
if employee_id:

View File

@ -30,12 +30,12 @@
<button name="direct_manager" string="Direct Manager Approve" class="oe_highlight" type="object"
states="submit" groups="hr_base.group_division_manager"/>
<button name="refused" string="Refuse" class="oe_highlight" type="object"
<button name="direct_manager_refused" string="Refuse" class="oe_highlight" type="object"
states="submit" groups="hr_base.group_division_manager"/>
<button name="financial_manager" string="Department Manager" class="oe_highlight" type="object"
states="direct_manager" groups="hr_base.group_department_manager"/>
<button name="refused" string="Refuse" class="oe_highlight" type="object"
<button name="dep_manager_refused" string="Refuse" class="oe_highlight" type="object"
states="direct_manager" groups="hr_base.group_department_manager"/>
<button name="hr_aaproval" string="HR Approval" class="oe_highlight" type="object"

View File

@ -7,7 +7,7 @@
<field name="view_mode">tree,form,calendar</field>
</record>
<record model="ir.ui.view" id="view_permission_calendar">
<record model="ir.ui.view" id="view_permission_calendar">
<field name="name">hr.personal.permission.calendar</field>
<field name="model">hr.personal.permission</field>
<field name="arch" type="xml">
@ -25,21 +25,30 @@
<field name="arch" type="xml">
<form>
<header>
<button name="send" string="Submit" class="oe_highlight" type="object" states="draft" groups="base.group_user"/>
<button name="send" string="Submit" class="oe_highlight" type="object"
states="draft" groups="base.group_user"/>
<button name="direct_manager" string="Direct Manager Approve" class="oe_highlight" type="object" states="send" groups="hr_base.group_division_manager"/>
<button name="refused" string="Refuse" class="oe_highlight" type="object" states="send" groups="hr_base.group_division_manager"/>
<button name="direct_manager" string="Direct Manager Approve" class="oe_highlight" type="object"
states="send" groups="hr_base.group_division_manager"/>
<button name="direct_manager_refused" string="Refuse" class="oe_highlight" type="object"
states="send" groups="hr_base.group_division_manager"/>
<button name="approve" string="HR Approve" class="oe_highlight" type="object" states="direct_manager" groups="hr.group_hr_user"/>
<button name="refused" string="Refuse" class="oe_highlight" type="object" states="direct_manager" groups="hr.group_hr_user"/>
<button name="draft_state" string="RE-Draft" class="oe_highlight" type="object" states="approve" groups="hr.group_hr_user"/>
<button name="draft_state" string="RE-Draft" class="oe_highlight" type="object" states="refused" groups="hr.group_hr_user" confirm="Are you sure to Reset To Draft This Record?"/>
<button name="approve" string="HR Approve" class="oe_highlight" type="object"
states="direct_manager" groups="hr.group_hr_user"/>
<button name="refused" string="Refuse" class="oe_highlight" type="object"
states="direct_manager" groups="hr.group_hr_user"/>
<button name="draft_state" string="RE-Draft" class="oe_highlight" type="object"
states="approve" groups="hr.group_hr_user"/>
<button name="draft_state" string="RE-Draft" class="oe_highlight" type="object"
states="refused" groups="hr.group_hr_user" confirm="Are you sure to Reset To Draft This Record?"/>
<field name="state" widget="statusbar"/>
</header>
<sheet>
<group>
<group string="Permission Info">
<field name="date" string="Date Request" attrs="{'readonly':[('state','!=','draft')],'required':1}"/>
<field name="date" string="Date Request"
attrs="{'readonly':[('state','!=','draft')],'required':1}"/>
<!-- <label for='time_permission_from' string="Time"/>
<div class="row">
<div class="col-6">
@ -51,28 +60,36 @@
<field name="time_permission_to" widget="float_time" attrs="{'readonly':[('state' , '!=' , 'draft')],'required':1}"/>
</div>
</div> -->
<field name="date_from" string="Date From" attrs="{'readonly':[('state' , '!=' , 'draft')],'required':1}"/>
<field name="date_to" string="Date To" attrs="{'readonly':[('state' , '!=' , 'draft')],'required':1}"/>
<field name="date_from" string="Date From"
attrs="{'readonly':[('state' , '!=' , 'draft')],'required':1}"/>
<field name="date_to" string="Date To"
attrs="{'readonly':[('state' , '!=' , 'draft')],'required':1}"/>
<field name="duration" string="Duration" attrs="{'readonly':1}" widget="float_time"/>
<field name="balance" string="Permission Limit" readonly="1" widget="float_time"/>
<field name="permission_number" force_save="True" string="Permission Per Month" widget="float_time"/>
<field name="type_exit" string="Type Exit" attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="type_exit" string="Type Exit"
attrs="{'readonly':[('state','!=','draft')]}"/>
</group>
<group string="Employee Info">
<field name="company_id" groups="base.group_multi_company" readonly="1"/>
<field name="from_hr_department" string="Another Employee" attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="employee_id" string="Employee" attrs="{'readonly': ['|',('from_hr_department','=',False),('state','!=','draft')],'required':True}"/>
<field name="company_id" groups="base.group_multi_company" readonly="1"/>
<field name="from_hr_department" string="Another Employee"
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="job_id" string="Job Title" readonly="1"/>
<field name="department_id" string="Department" readonly="1"/>
</group>
</group>
<group>
<field name="mission_purpose" string="Reasons" attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="mission_purpose" string="Reasons"
attrs="{'readonly':[('state','!=','draft')]}"/>
</group>
<!--notebook>
<page string="Attachments" name="attachments">
<field name="attach_ids" string="Attachments" attrs="{'readonly':[('state','!=','draft')]}">
<field name="attach_ids" string="Attachments"
attrs="{'readonly':[('state','!=','draft')]}">
<tree editable="bottom">
<field name="name" string="attachment Name"/>
<field name="datas" string="file content"/>
@ -80,12 +97,15 @@
</field>
</page>
<page string="Refusal Causes" name="refusal_causes">
<field name="refuse_cause" placeholder="Refuse Cause .........." attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="refuse_cause" placeholder="Refuse Cause .........."
attrs="{'readonly':[('state','!=','draft')]}"/>
</page>
<page string="Information" name="information">
<group>
<field name="approved_by" string="Approved By" attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="refused_by" string="Refused By" attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="approved_by" string="Approved By"
attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="refused_by" string="Refused By"
attrs="{'readonly':[('state','!=','draft')]}"/>
</group>
</page>
</notebook-->
@ -109,7 +129,7 @@
<!--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"/>
<field name="duration" string="Duration" widget="float_time"/>
<field name="state" string="Status"/>
</tree>
</field>

View File

@ -875,7 +875,7 @@ msgstr "نوع الموظف"
#. module: hr_holidays_public
#: model:ir.model.fields,field_description:hr_holidays_public.field_hr_holidays__emp_number
msgid "Employee number"
msgstr ""
msgstr "رقم الموظف"
#. module: hr_holidays_public
#: model_terms:ir.ui.view,arch_db:hr_holidays_public.edit_holiday_status_form
@ -3589,3 +3589,9 @@ msgstr ""
#, python-format
msgid "Sorry, The Approval For The Direct Manager '%s' Only OR HR Manager!"
msgstr "للأسف، لموافقة المدير المباشر '%s' فقط او مدير الموارد البشرية !"
#. module: hr_holidays_public
#: code:addons/hr_holidays_public/models/hr_holidays.py:0
#, python-format
msgid "Sorry, The Refuse For The Direct Manager '%s' Only OR HR Manager!"
msgstr "للأسف، لرفض المدير المباشر '%s' فقط او مدير الموارد البشرية !"

View File

@ -983,8 +983,10 @@ class HRHolidays(models.Model):
_('Sorry This %s requires a Documents To Be Attached To Approve') % (self.holiday_status_id.name))
#The Approval For The Direct Manager only
for rec in self:
if rec.employee_id.parent_id:
if rec.employee_id.parent_id.user_id.id == rec.env.uid or rec.env.company.hr_manager_id.user_id.id == rec.env.uid:
manager = rec.sudo().employee_id.parent_id
hr_manager = rec.sudo().employee_id.user_id.company_id.hr_manager_id
if manager:
if manager.user_id.id == rec.env.uid or hr_manager.user_id.id == rec.env.uid:
rec._chick_leave_balance()
rec.write({'state': 'validate'})
else:
@ -1224,6 +1226,18 @@ class HRHolidays(models.Model):
self.check_allocation_balance_annual('addition')
item.write({'state': 'refuse'})
def direct_manager_refused(self):
for rec in self:
manager = rec.sudo().employee_id.parent_id
hr_manager = rec.sudo().employee_id.user_id.company_id.hr_manager_id
if manager:
if manager.user_id.id == rec.env.uid or hr_manager.user_id.id == rec.env.uid:
rec.refuse()
else:
raise exceptions.Warning(_("Sorry, The Refuse For The Direct Manager '%s' Only OR HR Manager!") % (manager.name))
else:
rec.refuse()
@api.onchange('holiday_status_id')
def _get_holiday_related_date(self):
for item in self:

View File

@ -128,7 +128,7 @@
<button string="Direct Manager Approve" name="hr_manager" states="confirm" type="object"
groups="hr_base.group_division_manager" class="oe_highlight"/>
<button string="Refuse" name="refuse" states="confirm" type="object"
<button string="Refuse" name="direct_manager_refused" states="confirm" type="object"
groups="hr_base.group_division_manager" class="oe_highlight"/>
<button string="HR Manager Approve" name="financial_manager" type="object"