From e3130c2e0d2705606de76409310ae6a961ad4d10 Mon Sep 17 00:00:00 2001 From: Horilla Date: Mon, 8 Apr 2024 15:13:16 +0530 Subject: [PATCH] [UPDT] PAYROLL: Additional validations for approve and delete reimbursement --- payroll/models/models.py | 19 ++++++++++++++++--- payroll/views/component_views.py | 16 ++++++++++++---- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/payroll/models/models.py b/payroll/models/models.py index accfe39b1..585c8f3a8 100644 --- a/payroll/models/models.py +++ b/payroll/models/models.py @@ -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}" diff --git a/payroll/views/component_views.py b/payroll/views/component_views.py index 6159c0773..fa88efcee 100644 --- a/payroll/views/component_views.py +++ b/payroll/views/component_views.py @@ -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,