[ADD] PAYROLL: Encashment unit
This commit is contained in:
@@ -330,6 +330,7 @@ class ReimbursementFilter(FilterSet):
|
||||
class Meta:
|
||||
model = Reimbursement
|
||||
fields = [
|
||||
"id",
|
||||
"status",
|
||||
"type",
|
||||
"employee_id",
|
||||
|
||||
@@ -624,24 +624,6 @@ class ReimbursementForm(ModelForm):
|
||||
if field in self.fields:
|
||||
del self.fields[field]
|
||||
|
||||
emp = Employee.objects.get(id=self.initial["employee_id"])
|
||||
|
||||
try:
|
||||
notify.send(
|
||||
emp,
|
||||
recipient=(
|
||||
emp.employee_work_info.reporting_manager_id.employee_user_id
|
||||
),
|
||||
verb=f"You have a new reimbursement request to approve for {emp}.",
|
||||
verb_ar=f"لديك طلب استرداد نفقات جديد يتعين عليك الموافقة عليه لـ {emp}.",
|
||||
verb_de=f"Sie haben einen neuen Rückerstattungsantrag zur Genehmigung für {emp}.",
|
||||
verb_es=f"Tienes una nueva solicitud de reembolso para aprobar para {emp}.",
|
||||
verb_fr=f"Vous avez une nouvelle demande de remboursement à approuver pour {emp}.",
|
||||
icon="information",
|
||||
redirect="/payroll/view-reimbursement",
|
||||
)
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
def as_p(self):
|
||||
"""
|
||||
@@ -652,6 +634,7 @@ class ReimbursementForm(ModelForm):
|
||||
return table_html
|
||||
|
||||
def save(self, commit: bool = ...) -> Any:
|
||||
is_new = not self.instance.pk
|
||||
attachemnt = []
|
||||
multiple_attachment_ids = []
|
||||
attachemnts = None
|
||||
@@ -666,6 +649,29 @@ class ReimbursementForm(ModelForm):
|
||||
multiple_attachment_ids.append(file_instance.pk)
|
||||
instance = super().save(commit)
|
||||
instance.other_attachments.add(*multiple_attachment_ids)
|
||||
|
||||
emp = Employee.objects.get(id=self.initial["employee_id"])
|
||||
print("+++++++++++++++++++++++++")
|
||||
print(self.instance.pk)
|
||||
print("+++++++++++++++++++++++++")
|
||||
try:
|
||||
if is_new:
|
||||
notify.send(
|
||||
emp,
|
||||
recipient=(
|
||||
emp.employee_work_info.reporting_manager_id.employee_user_id
|
||||
),
|
||||
verb=f"You have a new reimbursement request to approve for {emp}.",
|
||||
verb_ar=f"لديك طلب استرداد نفقات جديد يتعين عليك الموافقة عليه لـ {emp}.",
|
||||
verb_de=f"Sie haben einen neuen Rückerstattungsantrag zur Genehmigung für {emp}.",
|
||||
verb_es=f"Tienes una nueva solicitud de reembolso para aprobar para {emp}.",
|
||||
verb_fr=f"Vous avez une nouvelle demande de remboursement à approuver pour {emp}.",
|
||||
icon="information",
|
||||
redirect=f"/payroll/view-reimbursement?id={instance.id}",
|
||||
)
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
return instance, attachemnts
|
||||
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
{% if requests %}
|
||||
{% include 'payroll/reimbursement/request_cards.html' %}
|
||||
{% else %}
|
||||
{% include "filter_tags.html" %}
|
||||
<main :class="sidebarOpen ? 'oh-main__sidebar-visible' : ''">
|
||||
<div class="oh-wrapper">
|
||||
<div class="oh-404">
|
||||
|
||||
@@ -524,6 +524,17 @@ def generate_payslip(request):
|
||||
data["installments"] = payslip["installments"]
|
||||
instance = save_payslip(**data)
|
||||
instances.append(instance)
|
||||
notify.send(
|
||||
request.user.employee_get,
|
||||
recipient=employee.employee_user_id,
|
||||
verb="Payslip has been generated for you.",
|
||||
verb_ar="تم إصدار كشف راتب لك.",
|
||||
verb_de="Gehaltsabrechnung wurde für Sie erstellt.",
|
||||
verb_es="Se ha generado la nómina para usted.",
|
||||
verb_fr="La fiche de paie a été générée pour vous.",
|
||||
redirect=f"/payroll/view-payslip/{instance.id}",
|
||||
icon="close",
|
||||
)
|
||||
messages.success(request, f"{employees.count()} payslip saved as draft")
|
||||
return redirect(
|
||||
f"/payroll/view-payslip?group_by=group_name&active_group={group_name}"
|
||||
@@ -589,6 +600,17 @@ def create_payslip(request, new_post_data=None):
|
||||
payslip_data["instance"] = save_payslip(**data)
|
||||
form = forms.PayslipForm()
|
||||
messages.success(request, _("Payslip Saved"))
|
||||
notify.send(
|
||||
request.user.employee_get,
|
||||
recipient=employee.employee_user_id,
|
||||
verb="Payslip has been generated for you.",
|
||||
verb_ar="تم إصدار كشف راتب لك.",
|
||||
verb_de="Gehaltsabrechnung wurde für Sie erstellt.",
|
||||
verb_es="Se ha generado la nómina para usted.",
|
||||
verb_fr="La fiche de paie a été générée pour vous.",
|
||||
redirect=f"/payroll/view-payslip/{payslip.id}",
|
||||
icon="close",
|
||||
)
|
||||
return render(
|
||||
request,
|
||||
"payroll/payslip/individual_payslip.html",
|
||||
@@ -1095,7 +1117,10 @@ def view_reimbursement(request):
|
||||
"""
|
||||
This method is used to render template to view reimbursements
|
||||
"""
|
||||
filter_object = ReimbursementFilter({"status": "requested"})
|
||||
if request.GET:
|
||||
filter_object = ReimbursementFilter(request.GET)
|
||||
else:
|
||||
filter_object = ReimbursementFilter({"status": "requested"})
|
||||
requests = filter_own_recodes(
|
||||
request, filter_object.qs, "payroll.view_reimbursement"
|
||||
)
|
||||
@@ -1200,7 +1225,7 @@ def approve_reimbursements(request):
|
||||
verb_de="Ihr Rückerstattungsantrag wurde storniert.",
|
||||
verb_es="Se ha cancelado tu solicitud de reembolso.",
|
||||
verb_fr="Votre demande de remboursement a été annulée.",
|
||||
redirect="/payroll/view-reimbursement",
|
||||
redirect=f"/payroll/view-reimbursement?id={reimbursement.id}",
|
||||
icon="checkmark",
|
||||
)
|
||||
else:
|
||||
@@ -1212,7 +1237,7 @@ def approve_reimbursements(request):
|
||||
verb_de="Ihr Rückerstattungsantrag wurde genehmigt.",
|
||||
verb_es="Se ha aprobado tu solicitud de reembolso.",
|
||||
verb_fr="Votre demande de remboursement a été approuvée.",
|
||||
redirect="/payroll/view-reimbursement",
|
||||
redirect=f"/payroll/view-reimbursement?id={reimbursement.id}",
|
||||
icon="checkmark",
|
||||
)
|
||||
return redirect(view_reimbursement)
|
||||
|
||||
Reference in New Issue
Block a user