[UPDT] OFFBOARDING: Added the notice period end date from settings.

This commit is contained in:
Horilla
2024-03-21 14:22:49 +05:30
parent 27ef653877
commit d47a55c860
6 changed files with 38 additions and 18 deletions

View File

@@ -1,5 +1,5 @@
from collections.abc import Iterable
from datetime import date
from datetime import date, timedelta
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
@@ -11,6 +11,7 @@ from horilla_audit.models import HorillaAuditInfo, HorillaAuditLog
from notifications.signals import notify
from django.contrib.auth.models import User
from base.thread_local_middleware import _thread_locals
from payroll.models.models import Contract
# Create your models here.
@@ -185,6 +186,18 @@ class ResignationLetter(models.Model):
.filter(offboarding_id=offboarding)
.first()
)
contract_notice_end_date = Contract.objects.filter(
employee_id=self.employee_id, contract_status="active"
).first()
try:
notice_period_ends = (
notice_period_starts + timedelta (contract_notice_end_date.notice_period_in_days)
if contract_notice_end_date
else notice_period_ends
)
except:
notice_period_ends = notice_period_ends
offboarding_employee.notice_period_starts = notice_period_starts
offboarding_employee.notice_period_ends = notice_period_ends
if (

View File

@@ -47,7 +47,7 @@ from notifications.signals import notify
from django.utils.translation import gettext_lazy as _
from onboarding.filters import OnboardingStageFilter
from payroll.models.models import Contract
from payroll.models.models import Contract, PayrollGeneralSetting
from attendance.methods.group_by import group_by_queryset as group_by
from recruitment.pipeline_grouper import group_by_queryset
@@ -66,7 +66,9 @@ def pipeline_grouper(filters={}, offboardings=[]):
all_stages_grouper.append({"grouper": stage, "list": []})
stage_employees = PipelineEmployeeFilter(
filters,
OffboardingEmployee.objects.filter(stage_id=stage),
OffboardingEmployee.objects.filter(
stage_id=stage, employee_id__is_active=True
),
).qs.order_by("stage_id__id")
page_name = "page" + stage.title + str(offboarding.id)
employee_grouper = group_by_queryset(
@@ -236,7 +238,7 @@ def add_employee(request):
if intial_notice_period(request)["get_initial_notice_period"]
else 0
)
end_date = datetime.today() + timedelta(days=default_notice_period * 30)
end_date = datetime.today() + timedelta(days=default_notice_period)
stage_id = request.GET["stage_id"]
instance_id = eval(str(request.GET.get("instance_id")))
instance = None
@@ -391,7 +393,7 @@ def view_notes(request, employee_id=None):
@login_required
@any_manager_can_enter("offboarding.add_offboardingnote")
# @any_manager_can_enter("offboarding.add_offboardingnote")
def add_note(request):
"""
This method is used to create note for the offboarding employee
@@ -773,6 +775,7 @@ def update_status(request):
ids = request.GET.getlist("letter_ids")
status = request.GET["status"]
offboarding_id = request.GET.get("offboarding_id")
default_notice_end = PayrollGeneralSetting.objects.first()
if offboarding_id:
offboarding = Offboarding.objects.get(id=offboarding_id)
notice_period_starts = request.GET.get("notice_period_starts")
@@ -788,6 +791,10 @@ def update_status(request):
).date()
else:
notice_period_ends = None
if default_notice_end:
notice_period_ends = notice_period_starts + timedelta(
days=default_notice_end.notice_period
)
if not notice_period_starts:
notice_period_starts = today
@@ -860,7 +867,7 @@ def get_notice_period(request):
"notice_period_starts": str(datetime.today().date()),
}
if employee_contract:
response["notice_period"] = employee_contract.notice_period_in_month
response["notice_period"] = employee_contract.notice_period_in_days
return JsonResponse(response)
@@ -868,7 +875,7 @@ def get_notice_period_end_date(request):
start_date = request.GET.get("start_date")
start_date = datetime.strptime(start_date, "%Y-%m-%d").date()
notice_period = intial_notice_period(request)["get_initial_notice_period"]
end_date = start_date + timedelta(days=notice_period * 30)
end_date = start_date + timedelta(days=notice_period)
response = {
"end_date": end_date,
}