[UPDT] OFFBOARDING: Added the notice period end date from settings.
This commit is contained in:
@@ -125,7 +125,7 @@ def intial_notice_period(request):
|
||||
Check weather resignation_request enabled of not in offboarding
|
||||
"""
|
||||
first = PayrollGeneralSetting.objects.first()
|
||||
initial = 3
|
||||
initial = 30
|
||||
if first:
|
||||
initial = first.notice_period
|
||||
return {"get_initial_notice_period": initial}
|
||||
|
||||
@@ -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 (
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ class ContractForm(ModelForm):
|
||||
)
|
||||
first = PayrollGeneralSetting.objects.first()
|
||||
if first and self.instance.pk is None:
|
||||
self.initial["notice_period_in_month"] = first.notice_period
|
||||
self.initial["notice_period_in_days"] = first.notice_period
|
||||
|
||||
def as_p(self):
|
||||
"""
|
||||
|
||||
@@ -227,6 +227,12 @@ class Contract(models.Model):
|
||||
related_name="contracts",
|
||||
verbose_name=_("Work Type"),
|
||||
)
|
||||
notice_period_in_days = models.IntegerField(
|
||||
default=30,
|
||||
help_text=_("Notice period in total days."),
|
||||
validators=[min_zero],
|
||||
verbose_name=_("Notice Period"),
|
||||
)
|
||||
contract_document = models.FileField(upload_to="uploads/", null=True, blank=True)
|
||||
is_active = models.BooleanField(default=True)
|
||||
deduct_leave_from_basic_pay = models.BooleanField(
|
||||
@@ -234,12 +240,6 @@ class Contract(models.Model):
|
||||
verbose_name=_("Deduct From Basic Pay"),
|
||||
help_text=_("Deduct the leave amount from basic pay."),
|
||||
)
|
||||
notice_period_in_month = models.IntegerField(
|
||||
default=3,
|
||||
help_text=_("Notice period in total months."),
|
||||
validators=[min_zero],
|
||||
verbose_name=_("Notice Period"),
|
||||
)
|
||||
calculate_daily_leave_amount = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("Calculate Daily Leave Amount"),
|
||||
@@ -1758,9 +1758,9 @@ class PayrollGeneralSetting(models.Model):
|
||||
"""
|
||||
|
||||
notice_period = models.IntegerField(
|
||||
help_text="Notice period in month",
|
||||
help_text="Notice period in days",
|
||||
validators=[min_zero],
|
||||
default=3,
|
||||
default=30,
|
||||
)
|
||||
company_id = models.ForeignKey(Company, on_delete=models.CASCADE, null=True)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<form action="{% url 'initial-notice-period' %}">
|
||||
<div class="oh-label__info" for="default_notice_period">
|
||||
<label class="oh-label" for="default_notice_period">{% trans "Default Notice Period" %}</label>
|
||||
<span class="oh-info mr-2" title="{% trans "Set initial notice period (in month)" %}">
|
||||
<span class="oh-info mr-2" title="{% trans "Set initial notice period (in days)" %}">
|
||||
</span>
|
||||
</div>
|
||||
<input type="number"class="oh-input w-25" name="notice_period" value="{{get_initial_notice_period}}" />
|
||||
|
||||
Reference in New Issue
Block a user