[UPDT] PAYROLL: Added Allowance and deduction condition for range

This commit is contained in:
Horilla
2024-07-15 15:24:02 +05:30
parent 91d137ed78
commit db21d38fd6
4 changed files with 105 additions and 5 deletions

View File

@@ -72,6 +72,11 @@ class AllowanceForm(forms.ModelForm):
}
kwargs["initial"] = initial
super().__init__(*args, **kwargs)
self.fields["if_condition"].widget.attrs.update(
{
"onchange": "rangeToggle($(this))",
}
)
reload_queryset(self.fields)
self.fields["style"].widget = widget.StyleWidget(form=self)
@@ -83,6 +88,36 @@ class AllowanceForm(forms.ModelForm):
table_html = render_to_string("common_form.html", context)
return table_html
def clean(self, *args, **kwargs):
cleaned_data = super().clean(*args, **kwargs)
if cleaned_data.get("if_condition") == "range":
cleaned_data["if_amount"] = 0
start_range = cleaned_data.get("start_range")
end_range = cleaned_data.get("end_range")
if start_range and end_range and end_range <= start_range:
raise forms.ValidationError(
{"end_range": "End range cannot be less than start range."}
)
if not start_range and not end_range:
raise forms.ValidationError(
{
"start_range": 'This field is required when condition is "range".',
"end_range": 'This field is required when condition is "range".',
}
)
elif not start_range:
raise forms.ValidationError(
{"start_range": 'This field is required when condition is "range".'}
)
elif not end_range:
raise forms.ValidationError(
{"end_range": 'This field is required when condition is "range".'}
)
else:
cleaned_data["start_range"] = None
cleaned_data["end_range"] = None
def save(self, commit: bool = ...) -> Any:
super().save(commit)
other_conditions = self.data.getlist("other_conditions")
@@ -140,10 +175,44 @@ class DeductionForm(forms.ModelForm):
}
kwargs["initial"] = initial
super().__init__(*args, **kwargs)
self.fields["if_condition"].widget.attrs.update(
{
"onchange": "rangeToggle($(this))",
}
)
reload_queryset(self.fields)
self.fields["style"].widget = widget.StyleWidget(form=self)
def clean(self):
def clean(self, *args, **kwargs):
cleaned_data = super().clean(*args, **kwargs)
if cleaned_data.get("if_condition") == "range":
cleaned_data["if_amount"] = 0
start_range = cleaned_data.get("start_range")
end_range = cleaned_data.get("end_range")
if start_range and end_range and int(end_range) <= int(start_range):
raise forms.ValidationError(
{"end_range": "End range cannot be less than start range."}
)
if not start_range and not end_range:
raise forms.ValidationError(
{
"start_range": 'This field is required when condition is "range".',
"end_range": 'This field is required when condition is "range".',
}
)
elif not start_range:
raise forms.ValidationError(
{"start_range": 'This field is required when condition is "range".'}
)
elif not end_range:
raise forms.ValidationError(
{"end_range": 'This field is required when condition is "range".'}
)
else:
cleaned_data["start_range"] = None
cleaned_data["end_range"] = None
if (
self.data.get("update_compensation") is not None
and self.data.get("update_compensation") != ""
@@ -165,7 +234,7 @@ class DeductionForm(forms.ModelForm):
)
if self.data.get("amount") is None and self.data.get("amount") == "":
raise forms.ValidationError({"amount": _("This field is required.")})
return super().clean()
return cleaned_data
def as_p(self):
"""