[FIX]leave module bug fix
This commit is contained in:
@@ -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.."))
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user