diff --git a/leave/forms.py b/leave/forms.py index 062e6a3ef..11a0dd86f 100644 --- a/leave/forms.py +++ b/leave/forms.py @@ -297,12 +297,13 @@ class LeaveRequestCreationForm(ModelForm): if f"{today.month}-{today.year}" in unique_dates: unique_dates.remove(f"{today.strftime('%m')}-{today.year}") forcasted_leaves = available_leave.forcasted_leaves() - if f"{today.year}-{today.strftime('%m')}" not in unique_dates: - for item in unique_dates: - total_leave_days += forcasted_leaves[item] + if leave_type_id.reset_based == "monthly": + if f"{today.year}-{today.strftime('%m')}" not in unique_dates: + for item in unique_dates: + total_leave_days += forcasted_leaves[item] if not effective_requested_days <= total_leave_days: raise forms.ValidationError(_("Employee doesn't have enough leave days..")) - + return cleaned_data def __init__(self, *args, **kwargs): diff --git a/leave/models.py b/leave/models.py index ced8f7704..7a51e3bf4 100644 --- a/leave/models.py +++ b/leave/models.py @@ -297,9 +297,9 @@ class AvailableLeave(models.Model): today = datetime.now() for i in range(1, 7): # Calculate for the next 6 months next_month = today + relativedelta(months=i) - forecasted_leave[next_month.strftime("%Y-%m")] = self.available_days + ( + forecasted_leave[next_month.strftime("%Y-%m")] = self.available_days + min(self.leave_type_id.carryforward_max,( self.leave_type_id.total_days * i - ) + )) return forecasted_leave # Resetting carryforward days