[FIX]leave module bug fix

This commit is contained in:
Horilla
2023-07-07 11:06:16 +05:30
parent 81a38dd29a
commit 55b47ae97b
3 changed files with 51 additions and 15 deletions

View File

@@ -123,6 +123,8 @@ class LeaveRequestCreationForm(ModelForm):
end_date = cleaned_data.get('end_date')
employee_id = cleaned_data.get('employee_id')
leave_type_id = cleaned_data.get('leave_type_id')
start_date_breakdown = cleaned_data.get('start_date_breakdown')
end_date_breakdown = cleaned_data.get('end_date_breakdown')
overlapping_requests = LeaveRequest.objects.filter(employee_id=employee_id,
start_date__lte=end_date, end_date__gte=start_date
)
@@ -138,8 +140,20 @@ class LeaveRequestCreationForm(ModelForm):
available_leave = AvailableLeave.objects.get(employee_id=employee_id, leave_type_id=leave_type_id)
total_leave_days = available_leave.available_days + available_leave.carryforward_days
requested_days = (end_date - start_date).days + 1
if start_date == end_date:
if start_date_breakdown == 'full_day' and end_date_breakdown == 'full_day':
requested_days = 1
else:
requested_days = 0.5
else:
start_days = 0
end_days = 0
if start_date_breakdown != 'full_day':
start_days = 0.5
if end_date_breakdown != 'full_day':
end_days = 0.5
requested_days = (end_date - start_date).days + start_days + end_days - 1
if not requested_days <= total_leave_days:
raise forms.ValidationError(_("Employee doesn't have enough leave days.."))

View File

@@ -121,9 +121,9 @@ class AvailableLeave(models.Model):
LeaveType, on_delete=models.CASCADE, related_name='employee_available_leave', blank=True, null=True)
employee_id = models.ForeignKey(
Employee, on_delete=models.DO_NOTHING, related_name='available_leave')
available_days = models.IntegerField(default=0)
carryforward_days = models.IntegerField(default=0)
total_leave_days = models.IntegerField(default=0)
available_days = models.FloatField(default=0)
carryforward_days = models.FloatField(default=0)
total_leave_days = models.FloatField(default=0)
assigned_date = models.DateField(default=timezone.now)
class Meta:
@@ -156,8 +156,8 @@ class LeaveRequest(models.Model):
null=True, blank=True, upload_to='leave/leave_attachment')
status = models.CharField(
max_length=30, choices=LEAVE_STATUS, default='requested')
approved_available_days = models.IntegerField(default=0)
approved_carryforward_days = models.IntegerField(default=0)
approved_available_days = models.FloatField(default=0)
approved_carryforward_days = models.FloatField(default=0)
created_at = models.DateTimeField(auto_now="True")
@@ -235,12 +235,22 @@ class LeaveRequest(models.Model):
def save(self, *args, **kwargs):
self.requested_days = (self.end_date - self.start_date).days + 1
if self.start_date_breakdown in ["first_half", "second_half"]:
self.requested_days = self.requested_days - 0.5
if self.start_date == self.end_date:
if self.start_date_breakdown == 'full_day' and self.end_date_breakdown == 'full_day':
self.requested_days = 1
else:
self.requested_days = 0.5
else:
start_days = 0
end_days = 0
if self.start_date_breakdown != 'full_day':
start_days = 0.5
if self.end_date_breakdown != 'full_day':
end_days = 0.5
self.requested_days = (self.end_date - self.start_date).days + start_days + end_days
if self.end_date_breakdown in ["first_half", "second_half"]:
self.requested_days = self.requested_days - 0.5
if self.leave_type_id.exclude_company_leave == 'yes' and self.leave_type_id.exclude_holiday == 'yes':
self.exclude_all_leaves()

View File

@@ -869,13 +869,10 @@ def company_leave_filter(request):
Returns:
GET : return company leave view template
"""
print(request.GET)
queryset = CompanyLeave.objects.all()
previous_data = request.environ["QUERY_STRING"]
page_number = request.GET.get("page")
print('queryset', queryset)
company_leave_filter = CompanyLeavefilter(request.GET, queryset).qs
print('company_leave_filter', company_leave_filter)
page_obj = paginator_qry(company_leave_filter, page_number)
return render(
request,
@@ -965,7 +962,22 @@ def user_leave_request(request, id):
start_date = datetime.strptime(
request.POST.get('start_date'), "%Y-%m-%d")
end_date = datetime.strptime(request.POST.get('end_date'), "%Y-%m-%d")
requested_days = (end_date - start_date).days + 1
start_date_breakdown = request.POST.get('start_date_breakdown')
end_date_breakdown = request.POST.get('end_date_breakdown')
if start_date == end_date:
if start_date_breakdown == 'full_day' and end_date_breakdown == 'full_day':
requested_days = 1
else:
requested_days = 0.5
else:
start_days = 0
end_days = 0
if start_date_breakdown != 'full_day':
start_days = 0.5
if end_date_breakdown != 'full_day':
end_days = 0.5
requested_days = (end_date - start_date).days + start_days + end_days
leave_type = LeaveType.objects.get(id=id)
available_leave = AvailableLeave.objects.get(
employee_id=employee, leave_type_id=leave_type)