[UPDT] PAYROLL: Additional validations for approve and delete reimbursement

This commit is contained in:
Horilla
2024-04-08 15:13:16 +05:30
parent 409737dea0
commit e3130c2e0d
2 changed files with 28 additions and 7 deletions

View File

@@ -1744,9 +1744,22 @@ class Reimbursement(HorillaModel):
self.allowance_id.delete()
def delete(self, *args, **kwargs):
if self.allowance_id:
self.allowance_id.delete()
return super().delete(*args, **kwargs)
request = getattr(thread_local_middleware._thread_locals, "request", None)
if self.status == 'approved':
message=messages.info(
request,
_(
f"{self.title} is in approved state,\
it cannot be deleted"
),
)
else:
if self.allowance_id:
self.allowance_id.delete()
super().delete(*args, **kwargs)
message=messages.success(request, "Reimbursement deleted")
return message
def __str__(self):
return f"{self.title}"

View File

@@ -1401,6 +1401,8 @@ def approve_reimbursements(request):
"""
ids = request.GET.getlist("ids")
status = request.GET["status"]
if status =='canceled':
status = 'rejected'
amount = eval(request.GET.get("amount")) if request.GET.get("amount") else 0
amount = max(0, amount)
reimbursements = Reimbursement.objects.filter(id__in=ids)
@@ -1414,9 +1416,15 @@ def approve_reimbursements(request):
emp = reimbursement.employee_id
reimbursement.status = status
reimbursement.save()
messages.success(
request, f"Request {reimbursement.get_status_display()} successfully"
)
if reimbursement.status == 'requested' :
if not (messages.get_messages(request)._queued_messages):
messages.info(
request, _("Please check the data you provided.")
)
else:
messages.success(
request,_(f"Request {reimbursement.get_status_display()} successfully")
)
if status == "rejected":
notify.send(
request.user.employee_get,
@@ -1455,7 +1463,7 @@ def delete_reimbursements(request):
for reimbursement in reimbursements:
user = reimbursement.employee_id.employee_user_id
reimbursement.delete()
messages.success(request, "Reimbursements deleted")
# messages.success(request, "Reimbursements deleted")
notify.send(
request.user.employee_get,
recipient=user,