update code for timesheet block entry
This commit is contained in:
parent
793d2c75ad
commit
ba92caa646
|
@ -11,6 +11,7 @@ class EmployeeInherit(models.Model):
|
|||
allow_to_create = fields.Selection(selection=[('always', 'Always'), ('specific', 'Specific')] )
|
||||
permission_history = fields.One2many(comodel_name="timesheet.block.history", inverse_name="employee_id",
|
||||
string="History", required=False )
|
||||
|
||||
class EmployeePublicInherit(models.Model):
|
||||
_inherit = 'hr.employee.public'
|
||||
|
||||
|
@ -37,84 +38,58 @@ class TimehseetBlock(models.Model):
|
|||
@api.model
|
||||
def create(self, values):
|
||||
current_date = datetime.today().date()
|
||||
config = self.env['ir.config_parameter'].sudo()
|
||||
config_days_limit = float(config.get_param('timesheet_block.timesheet_edit_create_limit'))
|
||||
entry_date = datetime.strptime(values['start_datetime'],"%Y-%m-%d %H:%M:%S").date()
|
||||
months_diff = current_date.month - entry_date.month
|
||||
employee_object = self.env['hr.employee'].sudo().search([('user_id', '=', self.env.uid)])
|
||||
days = (current_date - entry_date).days
|
||||
employee_object = self.env['hr.employee'].search([('user_id', '=', self.env.uid)])
|
||||
project_manager_group = self.env.ref('hr_timesheet.group_timesheet_manager')
|
||||
config = self.env['ir.config_parameter'].sudo()
|
||||
config_days_limit = float(config.get_param('timesheet_block.timesheet_edit_create_limit'))
|
||||
if entry_date <= current_date:
|
||||
if self.env.uid not in project_manager_group.users.ids:
|
||||
if employee_object.allow_to_create == False:
|
||||
if months_diff == 0:
|
||||
res = super(TimehseetBlock, self).create(values)
|
||||
return res
|
||||
if self.env.uid not in project_manager_group.users.ids:
|
||||
if days >= config_days_limit:
|
||||
permission_list = []
|
||||
if employee_object.allow_to_create != 'always' or employee_object.allow_to_create == False:
|
||||
permission_object = employee_object.permission_history.search([('permission_type', '=', 'create'),('employee_id', '=', employee_object.id)])
|
||||
for permission in permission_object:
|
||||
permission_list.append(permission.date)
|
||||
permission_untill = False
|
||||
if len(permission_list) != 0:
|
||||
permission_untill = datetime.strptime(str(max(permission_list)), "%Y-%m-%d").date()
|
||||
# permission_untill = datetime.strptime(max(permission_list), "%Y-%m-%d").date()
|
||||
if permission_untill:
|
||||
if permission_untill < entry_date:
|
||||
raise AccessError('You can not create the backdate entry please contact to HR')
|
||||
else:
|
||||
raise AccessError('You can not create your backdate entry')
|
||||
elif employee_object.allow_to_create == 'always':
|
||||
res = super(TimehseetBlock, self).create(values)
|
||||
return res
|
||||
else:
|
||||
if months_diff == 0:
|
||||
res = super(TimehseetBlock, self).create(values)
|
||||
return res
|
||||
if months_diff == 1:
|
||||
if current_date.day <= config_days_limit:
|
||||
res = super(TimehseetBlock, self).create(values)
|
||||
return res
|
||||
else:
|
||||
raise AccessError('You can not create your backdate entry ')
|
||||
else:
|
||||
raise AccessError('You can not create your backdate entry ')
|
||||
else:
|
||||
res = super(TimehseetBlock, self).create(values)
|
||||
return res
|
||||
else:
|
||||
raise AccessError('You can not create future entry')
|
||||
raise AccessError('You can not create the backdate entry please contact to HR')
|
||||
return super(TimehseetBlock, self).create(values)
|
||||
|
||||
|
||||
|
||||
def write(self, values):
|
||||
def write(self, record):
|
||||
current_date = datetime.today().date()
|
||||
if 'date' in values:
|
||||
entry_date = datetime.strptime(values['start_datetime'],"%Y-%m-%d %H:%M:%S").date()
|
||||
if 'start_datetime' in record:
|
||||
entry_date = datetime.strptime(record['start_datetime'],"%Y-%m-%d %H:%M:%S").date()
|
||||
else:
|
||||
res_date = str(self.date).split('.', 1)[0]
|
||||
entry_date = datetime.strptime(str(res_date), '%Y-%m-%d').date()
|
||||
months_diff = current_date.month - entry_date.month
|
||||
employee_object = self.env['hr.employee'].sudo().search([('user_id', '=', self.env.uid)])
|
||||
project_manager_group = self.env.ref('hr_timesheet.group_timesheet_manager')
|
||||
config = self.env['ir.config_parameter'].sudo()
|
||||
config_days_limit = float(config.get_param('timesheet_block.timesheet_edit_create_limit'))
|
||||
if entry_date <= current_date:
|
||||
if self.env.uid not in project_manager_group.users.ids:
|
||||
if employee_object.allow_to_edit == False:
|
||||
if months_diff == 0:
|
||||
res = super(TimehseetBlock, self).write(values)
|
||||
return res
|
||||
else:
|
||||
raise AccessError('You can not edit your backdate entry ')
|
||||
elif employee_object.allow_to_edit == 'always':
|
||||
res = super(TimehseetBlock, self).write(values)
|
||||
return res
|
||||
else:
|
||||
if months_diff == 0:
|
||||
res = super(TimehseetBlock, self).write(values)
|
||||
return res
|
||||
if months_diff == 1:
|
||||
if current_date.day <= config_days_limit:
|
||||
res = super(TimehseetBlock, self).write(values)
|
||||
return res
|
||||
else:
|
||||
res_date = str(self.start_datetime).split('.', 1)[0]
|
||||
entry_date = datetime.strptime(str(res_date), '%Y-%m-%d %H:%M:%S').date()
|
||||
|
||||
if current_date != entry_date:
|
||||
employee_object = self.env['hr.employee'].search([('user_id', '=', self.env.uid)])
|
||||
if employee_object.allow_to_edit != 'always' or employee_object.allow_to_edit == False:
|
||||
permission_list = []
|
||||
permission_object = employee_object.permission_history.search([('permission_type', '=', 'edit'),('employee_id', '=', employee_object.id)])
|
||||
for permission in permission_object:
|
||||
permission_list.append(permission.date)
|
||||
permission_untill =False
|
||||
if len(permission_list) != 0:
|
||||
permission_untill = datetime.strptime(str(max(permission_list)), "%Y-%m-%d").date()
|
||||
# project = False
|
||||
if self.user_id.id == self.env.uid:
|
||||
if permission_untill:
|
||||
if permission_untill < entry_date:
|
||||
raise AccessError(
|
||||
'You can not edit your backdate entry ')
|
||||
'You can not edit your backdate entry please connect to HR/Department Head/Project Manager')
|
||||
else:
|
||||
raise AccessError('You can not edit your backdate entry ')
|
||||
else:
|
||||
res = super(TimehseetBlock, self).write(values)
|
||||
return res
|
||||
else:
|
||||
raise AccessError('You can not create future entry')
|
||||
raise AccessError(
|
||||
'You can not edit your backdate entry please connect to HR/Department Head/Project Manager')
|
||||
return super(TimehseetBlock, self).write(record)
|
||||
|
||||
|
||||
@api.onchange('end_datetime')
|
||||
|
|
Loading…
Reference in New Issue