mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-27 17:04:47 +00:00
fix: boarding task dates not set when activity begins on is set to 0 (#29921)
This commit is contained in:
@@ -104,11 +104,11 @@ class EmployeeBoardingController(Document):
|
|||||||
def get_task_dates(self, activity, holiday_list):
|
def get_task_dates(self, activity, holiday_list):
|
||||||
start_date = end_date = None
|
start_date = end_date = None
|
||||||
|
|
||||||
if activity.begin_on:
|
if activity.begin_on is not None:
|
||||||
start_date = add_days(self.boarding_begins_on, activity.begin_on)
|
start_date = add_days(self.boarding_begins_on, activity.begin_on)
|
||||||
start_date = self.update_if_holiday(start_date, holiday_list)
|
start_date = self.update_if_holiday(start_date, holiday_list)
|
||||||
|
|
||||||
if activity.duration:
|
if activity.duration is not None:
|
||||||
end_date = add_days(self.boarding_begins_on, activity.begin_on + activity.duration)
|
end_date = add_days(self.boarding_begins_on, activity.begin_on + activity.duration)
|
||||||
end_date = self.update_if_holiday(end_date, holiday_list)
|
end_date = self.update_if_holiday(end_date, holiday_list)
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.utils import getdate
|
from frappe.utils import add_days, getdate
|
||||||
|
|
||||||
from erpnext.hr.doctype.employee_onboarding.employee_onboarding import (
|
from erpnext.hr.doctype.employee_onboarding.employee_onboarding import (
|
||||||
IncompleteTaskError,
|
IncompleteTaskError,
|
||||||
@@ -35,6 +35,15 @@ class TestEmployeeOnboarding(unittest.TestCase):
|
|||||||
# boarding status
|
# boarding status
|
||||||
self.assertEqual(onboarding.boarding_status, 'Pending')
|
self.assertEqual(onboarding.boarding_status, 'Pending')
|
||||||
|
|
||||||
|
# start and end dates
|
||||||
|
start_date, end_date = frappe.db.get_value('Task', onboarding.activities[0].task, ['exp_start_date', 'exp_end_date'])
|
||||||
|
self.assertEqual(getdate(start_date), getdate(onboarding.boarding_begins_on))
|
||||||
|
self.assertEqual(getdate(end_date), add_days(start_date, onboarding.activities[0].duration))
|
||||||
|
|
||||||
|
start_date, end_date = frappe.db.get_value('Task', onboarding.activities[1].task, ['exp_start_date', 'exp_end_date'])
|
||||||
|
self.assertEqual(getdate(start_date), add_days(onboarding.boarding_begins_on, onboarding.activities[0].duration))
|
||||||
|
self.assertEqual(getdate(end_date), add_days(start_date, onboarding.activities[1].duration))
|
||||||
|
|
||||||
# complete the task
|
# complete the task
|
||||||
project = frappe.get_doc('Project', onboarding.project)
|
project = frappe.get_doc('Project', onboarding.project)
|
||||||
for task in frappe.get_all('Task', dict(project=project.name)):
|
for task in frappe.get_all('Task', dict(project=project.name)):
|
||||||
@@ -57,10 +66,7 @@ class TestEmployeeOnboarding(unittest.TestCase):
|
|||||||
self.assertEqual(employee.employee_name, 'Test Researcher')
|
self.assertEqual(employee.employee_name, 'Test Researcher')
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
for entry in frappe.get_all('Employee Onboarding'):
|
frappe.db.rollback()
|
||||||
doc = frappe.get_doc('Employee Onboarding', entry.name)
|
|
||||||
doc.cancel()
|
|
||||||
doc.delete()
|
|
||||||
|
|
||||||
|
|
||||||
def get_job_applicant():
|
def get_job_applicant():
|
||||||
@@ -87,23 +93,31 @@ def get_job_offer(applicant_name):
|
|||||||
def create_employee_onboarding():
|
def create_employee_onboarding():
|
||||||
applicant = get_job_applicant()
|
applicant = get_job_applicant()
|
||||||
job_offer = get_job_offer(applicant.name)
|
job_offer = get_job_offer(applicant.name)
|
||||||
holiday_list = make_holiday_list()
|
|
||||||
|
holiday_list = make_holiday_list('_Test Employee Boarding')
|
||||||
|
holiday_list = frappe.get_doc('Holiday List', holiday_list)
|
||||||
|
holiday_list.holidays = []
|
||||||
|
holiday_list.save()
|
||||||
|
|
||||||
onboarding = frappe.new_doc('Employee Onboarding')
|
onboarding = frappe.new_doc('Employee Onboarding')
|
||||||
onboarding.job_applicant = applicant.name
|
onboarding.job_applicant = applicant.name
|
||||||
onboarding.job_offer = job_offer.name
|
onboarding.job_offer = job_offer.name
|
||||||
onboarding.date_of_joining = onboarding.boarding_begins_on = getdate()
|
onboarding.date_of_joining = onboarding.boarding_begins_on = getdate()
|
||||||
onboarding.company = '_Test Company'
|
onboarding.company = '_Test Company'
|
||||||
onboarding.holiday_list = holiday_list
|
onboarding.holiday_list = holiday_list.name
|
||||||
onboarding.designation = 'Researcher'
|
onboarding.designation = 'Researcher'
|
||||||
onboarding.append('activities', {
|
onboarding.append('activities', {
|
||||||
'activity_name': 'Assign ID Card',
|
'activity_name': 'Assign ID Card',
|
||||||
'role': 'HR User',
|
'role': 'HR User',
|
||||||
'required_for_employee_creation': 1
|
'required_for_employee_creation': 1,
|
||||||
|
'begin_on': 0,
|
||||||
|
'duration': 1
|
||||||
})
|
})
|
||||||
onboarding.append('activities', {
|
onboarding.append('activities', {
|
||||||
'activity_name': 'Assign a laptop',
|
'activity_name': 'Assign a laptop',
|
||||||
'role': 'HR User'
|
'role': 'HR User',
|
||||||
|
'begin_on': 1,
|
||||||
|
'duration': 1
|
||||||
})
|
})
|
||||||
onboarding.status = 'Pending'
|
onboarding.status = 'Pending'
|
||||||
onboarding.insert()
|
onboarding.insert()
|
||||||
|
|||||||
@@ -1019,13 +1019,13 @@ def setup_test():
|
|||||||
frappe.db.set_value('HR Settings', None, 'leave_status_notification_template', None)
|
frappe.db.set_value('HR Settings', None, 'leave_status_notification_template', None)
|
||||||
frappe.db.set_value('HR Settings', None, 'leave_approval_notification_template', None)
|
frappe.db.set_value('HR Settings', None, 'leave_approval_notification_template', None)
|
||||||
|
|
||||||
def make_holiday_list():
|
def make_holiday_list(holiday_list_name=None):
|
||||||
fiscal_year = get_fiscal_year(nowdate(), company=erpnext.get_default_company())
|
fiscal_year = get_fiscal_year(nowdate(), company=erpnext.get_default_company())
|
||||||
holiday_list = frappe.db.exists("Holiday List", "Salary Slip Test Holiday List")
|
holiday_list = frappe.db.exists("Holiday List", holiday_list_name or "Salary Slip Test Holiday List")
|
||||||
if not holiday_list:
|
if not holiday_list:
|
||||||
holiday_list = frappe.get_doc({
|
holiday_list = frappe.get_doc({
|
||||||
"doctype": "Holiday List",
|
"doctype": "Holiday List",
|
||||||
"holiday_list_name": "Salary Slip Test Holiday List",
|
"holiday_list_name": holiday_list_name or "Salary Slip Test Holiday List",
|
||||||
"from_date": fiscal_year[1],
|
"from_date": fiscal_year[1],
|
||||||
"to_date": fiscal_year[2],
|
"to_date": fiscal_year[2],
|
||||||
"weekly_off": "Sunday"
|
"weekly_off": "Sunday"
|
||||||
|
|||||||
Reference in New Issue
Block a user