This commit is contained in:
root 2022-09-29 12:26:56 +05:30
commit e012131063
1 changed files with 31 additions and 34 deletions

View File

@ -8,13 +8,14 @@ class EmployeeInherit(models.Model):
_inherit = 'hr.employee'
permission_block_history = fields.One2many(comodel_name="timesheet.block.history", inverse_name="employee_id",
string="History", required=False )
string="History", required=False)
class EmployeePublicInherit(models.Model):
_inherit = 'hr.employee.public'
permission_block_history = fields.One2many(comodel_name="timesheet.block.history", inverse_name="employee_id",
string="History", required=False )
string="History", required=False)
class TimesheetBlock(models.Model):
@ -32,60 +33,57 @@ class TimehseetBlock(models.Model):
@api.model
def create(self, values):
entry_start_date = datetime.strptime(str(values['start_datetime']),"%Y-%m-%d %H:%M:%S").date()
entry_end_date = datetime.strptime(values['end_datetime'],"%Y-%m-%d %H:%M:%S").date()
employee_object = self.env['hr.employee'].search([('user_id', '=', self.env.uid)])
format = "%Y-%m-%d %H:%M:%S"
entry_start_date = datetime.strptime(str(values['start_datetime']), format).date()
entry_end_date = datetime.strptime(values['end_datetime'], format).date()
emp_obj = self.env['hr.employee'].search([('user_id', '=', self.env.uid)])
# project_manager_group = self.env.ref('hr_timesheet.group_timesheet_manager')
permission_block_object = employee_object.permission_block_history.search(
[('employee_id', '=', employee_object.id)], order='create_date desc', limit=1)
if permission_block_object:
if (permission_block_object.start_date <= entry_start_date and permission_block_object.end_date >= entry_start_date) or (
permission_block_object.start_date <= entry_end_date and permission_block_object.end_date >= entry_end_date) or (
permission_block_object.start_date >= entry_start_date and permission_block_object.end_date <= entry_end_date
block_obj = emp_obj.permission_block_history.search(
[('employee_id', '=', emp_obj.id)], order='create_date desc', limit=1)
if block_obj:
if (block_obj.start_date <= entry_start_date and block_obj.end_date >= entry_start_date) or (
block_obj.start_date <= entry_end_date and block_obj.end_date >= entry_end_date) or (
block_obj.start_date >= entry_start_date and block_obj.end_date <= entry_end_date
) or (
permission_block_object.end_date >= entry_start_date and permission_block_object.end_date <= entry_end_date
block_obj.end_date >= entry_start_date and block_obj.end_date <= entry_end_date
):
raise AccessError('You are not allowed to create entry for this date!')
else:
pass
return super(TimehseetBlock, self).create(values)
def write(self, record):
format = "%Y-%m-%d %H:%M:%S"
if 'start_datetime' in record or 'end_datetime' in record or 'project_id' in record or 'sub_project' in record or 'task_id' in record or 'description' in record:
if 'start_datetime' in record and 'end_datetime' not in record:
entry_start_date = datetime.strptime(str(record['start_datetime']),"%Y-%m-%d %H:%M:%S").date()
entry_end_date = datetime.strptime(str(self.end_datetime),"%Y-%m-%d %H:%M:%S").date()
entry_start_date = datetime.strptime(str(record['start_datetime']), format).date()
entry_end_date = datetime.strptime(str(self.end_datetime), format).date()
elif 'start_datetime' not in record and 'end_datetime' in record:
entry_start_date = datetime.strptime(str(self.start_datetime), "%Y-%m-%d %H:%M:%S").date()
entry_end_date = datetime.strptime(str(record['end_datetime']), "%Y-%m-%d %H:%M:%S").date()
entry_start_date = datetime.strptime(str(self.start_datetime), format).date()
entry_end_date = datetime.strptime(str(record['end_datetime']), format).date()
elif 'start_datetime' in record and 'end_datetime' in record:
entry_start_date = datetime.strptime(str(record['start_datetime']),"%Y-%m-%d %H:%M:%S").date()
entry_end_date = datetime.strptime(str(record['end_datetime']), "%Y-%m-%d %H:%M:%S").date()
entry_start_date = datetime.strptime(str(record['start_datetime']), format).date()
entry_end_date = datetime.strptime(str(record['end_datetime']), format).date()
else:
res_start_date = str(self.start_datetime).split('.', 1)[0]
res_end_date = str(self.end_datetime).split('.', 1)[0]
entry_start_date = datetime.strptime(str(res_start_date), '%Y-%m-%d %H:%M:%S').date()
entry_end_date = datetime.strptime(str(res_end_date), '%Y-%m-%d %H:%M:%S').date()
employee_object = self.env['hr.employee'].search([('user_id', '=', self.env.uid)])
entry_start_date = datetime.strptime(str(res_start_date), format).date()
entry_end_date = datetime.strptime(str(res_end_date), format).date()
emp_obj = self.env['hr.employee'].search([('user_id', '=', self.env.uid)])
# project_manager_group = self.env.ref('hr_timesheet.group_timesheet_manager')
if self.user_id.id == self.env.uid:
permission_block_object = employee_object.permission_block_history.search(
[('employee_id', '=', employee_object.id)], order='create_date desc', limit=1)
if permission_block_object:
if (
permission_block_object.start_date <= entry_start_date and permission_block_object.end_date >= entry_start_date) or (
permission_block_object.start_date <= entry_end_date and permission_block_object.end_date >= entry_end_date) or (
permission_block_object.start_date >= entry_start_date and permission_block_object.end_date <= entry_end_date
) or (
permission_block_object.end_date >= entry_start_date and permission_block_object.end_date <= entry_end_date
):
block_obj = emp_obj.permission_block_history.search(
[('employee_id', '=', emp_obj.id)], order='create_date desc', limit=1)
if block_obj:
if (block_obj.start_date <= entry_start_date and block_obj.end_date >= entry_start_date) or (
block_obj.start_date <= entry_end_date and block_obj.end_date >= entry_end_date) or (
block_obj.start_date >= entry_start_date and block_obj.end_date <= entry_end_date) or (
block_obj.end_date >= entry_start_date and block_obj.end_date <= entry_end_date):
raise AccessError('You are not allowed to edit entry for this date!')
else:
pass
return super(TimehseetBlock, self).write(record)
# @api.constrains('unit_amount')
# def _check_unit_amount(self):
# for rec in self:
@ -100,4 +98,3 @@ class TimehseetBlock(models.Model):
end_date = datetime.strptime(str(self.end_datetime), "%Y-%m-%d %H:%M:%S").date()
if end_date > current_date:
raise AccessError('End date cannot be a future date!')