feat(HR): Some Enhancements and Onboarding (backport #25741) (#27741)

* feat(HR): Some Enhancements and Onboarding (#25741)

* feat: Hr settings restructure

* feat: remove validation and make As warning

* feat: made leave policy Assignment feild read only

* feat: send leave Notification via 'Notification'

* patch: for field name change

* feat: removed defaults value for removed field

* feat: removed leave Notification fields

* feat: better label and description

* feat: Hr Module onboarding and Onboarding slides

* fix: sider, test, translations

* chore: remove unnecessary code formatting changes

* refactor: HR Onboarding

* refactor: HR Settings

* revert: Notification changes

* chore: remove unnecessary descriptions from leave type

* fix: linter issues

Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
(cherry picked from commit 4837238f3dbbad336bcd21fcbfa19b438cbad16a)

# Conflicts:
#	erpnext/hr/doctype/employee/employee.js

* fix: conflicts

* fix: conflicts

Co-authored-by: Anurag Mishra <32095923+Anurag810@users.noreply.github.com>
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
This commit is contained in:
mergify[bot] 2021-10-02 13:28:39 +05:30 committed by GitHub
parent ece446ffe5
commit 418b9f8545
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 365 additions and 130 deletions

View File

@ -15,19 +15,20 @@ erpnext.hr.EmployeeController = class EmployeeController extends frappe.ui.form.
}
refresh() {
var me = this;
erpnext.toggle_naming_series();
}
date_of_birth() {
return cur_frm.call({
method: "get_retirement_date",
args: {date_of_birth: this.frm.doc.date_of_birth}
args: {
date_of_birth: this.frm.doc.date_of_birth
}
});
}
salutation() {
if(this.frm.doc.salutation) {
if (this.frm.doc.salutation) {
this.frm.set_value("gender", {
"Mr": "Male",
"Ms": "Female"
@ -36,8 +37,9 @@ erpnext.hr.EmployeeController = class EmployeeController extends frappe.ui.form.
}
};
frappe.ui.form.on('Employee',{
setup: function(frm) {
frappe.ui.form.on('Employee', {
setup: function (frm) {
frm.set_query("leave_policy", function() {
return {
"filters": {
@ -46,7 +48,7 @@ frappe.ui.form.on('Employee',{
};
});
},
onload:function(frm) {
onload: function (frm) {
frm.set_query("department", function() {
return {
"filters": {
@ -55,23 +57,28 @@ frappe.ui.form.on('Employee',{
};
});
},
prefered_contact_email:function(frm){
frm.events.update_contact(frm)
prefered_contact_email: function(frm) {
frm.events.update_contact(frm);
},
personal_email:function(frm){
frm.events.update_contact(frm)
personal_email: function(frm) {
frm.events.update_contact(frm);
},
company_email:function(frm){
frm.events.update_contact(frm)
company_email: function(frm) {
frm.events.update_contact(frm);
},
user_id:function(frm){
frm.events.update_contact(frm)
user_id: function(frm) {
frm.events.update_contact(frm);
},
update_contact:function(frm){
update_contact: function(frm) {
var prefered_email_fieldname = frappe.model.scrub(frm.doc.prefered_contact_email) || 'user_id';
frm.set_value("prefered_email",
frm.fields_dict[prefered_email_fieldname].value)
frm.fields_dict[prefered_email_fieldname].value);
},
status: function(frm) {
return frm.call({
method: "deactivate_sales_person",
@ -81,19 +88,63 @@ frappe.ui.form.on('Employee',{
}
});
},
create_user: function(frm) {
if (!frm.doc.prefered_email)
{
frappe.throw(__("Please enter Preferred Contact Email"))
if (!frm.doc.prefered_email) {
frappe.throw(__("Please enter Preferred Contact Email"));
}
frappe.call({
method: "erpnext.hr.doctype.employee.employee.create_user",
args: { employee: frm.doc.name, email: frm.doc.prefered_email },
callback: function(r)
{
frm.set_value("user_id", r.message)
args: {
employee: frm.doc.name,
email: frm.doc.prefered_email
},
callback: function (r) {
frm.set_value("user_id", r.message);
}
});
}
});
cur_frm.cscript = new erpnext.hr.EmployeeController({frm: cur_frm});
cur_frm.cscript = new erpnext.hr.EmployeeController({
frm: cur_frm
});
frappe.tour['Employee'] = [
{
fieldname: "first_name",
title: "First Name",
description: __("Enter First and Last name of Employee, based on Which Full Name will be updated. IN transactions, it will be Full Name which will be fetched.")
},
{
fieldname: "company",
title: "Company",
description: __("Select a Company this Employee belongs to. Other HR features like Payroll. Expense Claims and Leaves for this Employee will be created for a given company only.")
},
{
fieldname: "date_of_birth",
title: "Date of Birth",
description: __("Select Date of Birth. This will validate Employees age and prevent hiring of under-age staff.")
},
{
fieldname: "date_of_joining",
title: "Date of Joining",
description: __("Select Date of joining. It will have impact on the first salary calculation, Leave allocation on pro-rata bases.")
},
{
fieldname: "holiday_list",
title: "Holiday List",
description: __("Select a default Holiday List for this Employee. The days listed in Holiday List will not be counted in Leave Application.")
},
{
fieldname: "reports_to",
title: "Reports To",
description: __("Here, you can select a senior of this Employee. Based on this, Organization Chart will be populated.")
},
{
fieldname: "leave_approver",
title: "Leave Approver",
description: __("Select Leave Approver for an employee. The user one who will look after his/her Leave application")
},
];

View File

@ -1,10 +1,10 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
frappe.ui.form.on('Holiday List', {
frappe.ui.form.on("Holiday List", {
refresh: function(frm) {
if (frm.doc.holidays) {
frm.set_value('total_holidays', frm.doc.holidays.length);
frm.set_value("total_holidays", frm.doc.holidays.length);
}
},
from_date: function(frm) {
@ -14,3 +14,36 @@ frappe.ui.form.on('Holiday List', {
}
}
});
frappe.tour["Holiday List"] = [
{
fieldname: "holiday_list_name",
title: "Holiday List Name",
description: __("Enter a name for this Holiday List."),
},
{
fieldname: "from_date",
title: "From Date",
description: __("Based on your HR Policy, select your leave allocation period's start date"),
},
{
fieldname: "to_date",
title: "To Date",
description: __("Based on your HR Policy, select your leave allocation period's end date"),
},
{
fieldname: "weekly_off",
title: "Weekly Off",
description: __("Select your weekly off day"),
},
{
fieldname: "get_weekly_off_dates",
title: "Add Holidays",
description: __("Click on Add to Holidays. This will populate the holidays table with all the dates that fall on the selected weekly off. Repeat the process for populating the dates for all your weekly holidays"),
},
{
fieldname: "holidays",
title: "Holidays",
description: __("Here, your weekly offs are pre-populated based on the previous selections. You can add more rows to also add public and national holidays individually.")
},
];

View File

@ -2,7 +2,22 @@
// For license information, please see license.txt
frappe.ui.form.on('HR Settings', {
restrict_backdated_leave_application: function(frm) {
frm.toggle_reqd("role_allowed_to_create_backdated_leave_application", frm.doc.restrict_backdated_leave_application);
}
});
frappe.tour['HR Settings'] = [
{
fieldname: 'emp_created_by',
title: 'Employee Naming By',
description: __('Employee can be named by Employee ID if you assign one, or via Naming Series. Select your preference here.'),
},
{
fieldname: 'standard_working_hours',
title: 'Standard Working Hours',
description: __('Enter the Standard Working Hours for a normal work day. These hours will be used in calculations of reports such as Employee Hours Utilization and Project Profitability analysis.'),
},
{
fieldname: 'leave_and_expense_claim_settings',
title: 'Leave and Expense Clain Settings',
description: __('Review various other settings related to Employee Leaves and Expense Claim')
}
];

View File

@ -7,34 +7,34 @@
"engine": "InnoDB",
"field_order": [
"employee_settings",
"retirement_age",
"emp_created_by",
"column_break_4",
"standard_working_hours",
"expense_approver_mandatory_in_expense_claim",
"column_break_9",
"retirement_age",
"reminders_section",
"send_birthday_reminders",
"column_break_9",
"send_work_anniversary_reminders",
"column_break_11",
"send_work_anniversary_reminders",
"column_break_18",
"send_holiday_reminders",
"frequency",
"leave_settings",
"leave_and_expense_claim_settings",
"send_leave_notification",
"leave_approval_notification_template",
"leave_status_notification_template",
"role_allowed_to_create_backdated_leave_application",
"column_break_18",
"leave_approver_mandatory_in_leave_application",
"restrict_backdated_leave_application",
"role_allowed_to_create_backdated_leave_application",
"column_break_29",
"expense_approver_mandatory_in_expense_claim",
"show_leaves_of_all_department_members_in_calendar",
"auto_leave_encashment",
"restrict_backdated_leave_application",
"hiring_settings",
"hiring_settings_section",
"check_vacancies",
"send_interview_reminder",
"interview_reminder_template",
"remind_before",
"column_break_29",
"column_break_4",
"send_interview_feedback_reminder",
"feedback_reminder_notification_template"
],
@ -45,17 +45,16 @@
"label": "Employee Settings"
},
{
"description": "Enter retirement age in years",
"fieldname": "retirement_age",
"fieldtype": "Data",
"label": "Retirement Age"
"label": "Retirement Age (In Years)"
},
{
"default": "Naming Series",
"description": "Employee records are created using the selected field",
"description": "Employee records are created using the selected option",
"fieldname": "emp_created_by",
"fieldtype": "Select",
"label": "Employee Records to be created by",
"label": "Employee Naming By",
"options": "Naming Series\nEmployee Number\nFull Name"
},
{
@ -68,28 +67,6 @@
"fieldtype": "Check",
"label": "Expense Approver Mandatory In Expense Claim"
},
{
"collapsible": 1,
"fieldname": "leave_settings",
"fieldtype": "Section Break",
"label": "Leave Settings"
},
{
"depends_on": "eval: doc.send_leave_notification == 1",
"fieldname": "leave_approval_notification_template",
"fieldtype": "Link",
"label": "Leave Approval Notification Template",
"mandatory_depends_on": "eval: doc.send_leave_notification == 1",
"options": "Email Template"
},
{
"depends_on": "eval: doc.send_leave_notification == 1",
"fieldname": "leave_status_notification_template",
"fieldtype": "Link",
"label": "Leave Status Notification Template",
"mandatory_depends_on": "eval: doc.send_leave_notification == 1",
"options": "Email Template"
},
{
"fieldname": "column_break_18",
"fieldtype": "Column Break"
@ -106,35 +83,18 @@
"fieldtype": "Check",
"label": "Show Leaves Of All Department Members In Calendar"
},
{
"collapsible": 1,
"fieldname": "hiring_settings",
"fieldtype": "Section Break",
"label": "Hiring Settings"
},
{
"default": "0",
"fieldname": "check_vacancies",
"fieldtype": "Check",
"label": "Check Vacancies On Job Offer Creation"
},
{
"default": "0",
"fieldname": "auto_leave_encashment",
"fieldtype": "Check",
"label": "Auto Leave Encashment"
},
{
"default": "0",
"fieldname": "restrict_backdated_leave_application",
"fieldtype": "Check",
"label": "Restrict Backdated Leave Application"
},
{
"depends_on": "eval:doc.restrict_backdated_leave_application == 1",
"fieldname": "role_allowed_to_create_backdated_leave_application",
"fieldtype": "Link",
"label": "Role Allowed to Create Backdated Leave Application",
"mandatory_depends_on": "eval:doc.restrict_backdated_leave_application == 1",
"options": "Role"
},
{
@ -143,11 +103,33 @@
"fieldtype": "Check",
"label": "Send Leave Notification"
},
{
"depends_on": "eval: doc.send_leave_notification == 1",
"fieldname": "leave_approval_notification_template",
"fieldtype": "Link",
"label": "Leave Approval Notification Template",
"mandatory_depends_on": "eval: doc.send_leave_notification == 1",
"options": "Email Template"
},
{
"depends_on": "eval: doc.send_leave_notification == 1",
"fieldname": "leave_status_notification_template",
"fieldtype": "Link",
"label": "Leave Status Notification Template",
"mandatory_depends_on": "eval: doc.send_leave_notification == 1",
"options": "Email Template"
},
{
"fieldname": "standard_working_hours",
"fieldtype": "Int",
"label": "Standard Working Hours"
},
{
"collapsible": 1,
"fieldname": "leave_and_expense_claim_settings",
"fieldtype": "Section Break",
"label": "Leave and Expense Claim Settings"
},
{
"default": "00:15:00",
"depends_on": "send_interview_reminder",
@ -179,6 +161,7 @@
"fieldname": "frequency",
"fieldtype": "Select",
"label": "Set the frequency for holiday reminders",
"mandatory_depends_on": "send_holiday_reminders",
"options": "Weekly\nMonthly"
},
{
@ -226,13 +209,30 @@
"label": "Interview Reminder Notification Template",
"mandatory_depends_on": "send_interview_reminder",
"options": "Email Template"
},
{
"default": "0",
"fieldname": "restrict_backdated_leave_application",
"fieldtype": "Check",
"label": "Restrict Backdated Leave Application"
},
{
"fieldname": "hiring_settings_section",
"fieldtype": "Section Break",
"label": "Hiring Settings"
},
{
"default": "0",
"fieldname": "check_vacancies",
"fieldtype": "Check",
"label": "Check Vacancies On Job Offer Creation"
}
],
"icon": "fa fa-cog",
"idx": 1,
"issingle": 1,
"links": [],
"modified": "2021-09-30 22:42:14.683983",
"modified": "2021-10-01 23:46:11.098236",
"modified_by": "Administrator",
"module": "HR",
"name": "HR Settings",

View File

@ -1,14 +1,14 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
cur_frm.add_fetch('employee','employee_name','employee_name');
cur_frm.add_fetch('employee', 'employee_name', 'employee_name');
frappe.ui.form.on("Leave Allocation", {
onload: function(frm) {
// Ignore cancellation of doctype on cancel all.
frm.ignore_doctypes_on_cancel_all = ["Leave Ledger Entry"];
if(!frm.doc.from_date) frm.set_value("from_date", frappe.datetime.get_today());
if (!frm.doc.from_date) frm.set_value("from_date", frappe.datetime.get_today());
frm.set_query("employee", function() {
return {
@ -25,9 +25,9 @@ frappe.ui.form.on("Leave Allocation", {
},
refresh: function(frm) {
if(frm.doc.docstatus === 1 && frm.doc.expired) {
if (frm.doc.docstatus === 1 && frm.doc.expired) {
var valid_expiry = moment(frappe.datetime.get_today()).isBetween(frm.doc.from_date, frm.doc.to_date);
if(valid_expiry) {
if (valid_expiry) {
// expire current allocation
frm.add_custom_button(__('Expire Allocation'), function() {
frm.trigger("expire_allocation");
@ -44,8 +44,8 @@ frappe.ui.form.on("Leave Allocation", {
'expiry_date': frappe.datetime.get_today()
},
freeze: true,
callback: function(r){
if(!r.exc){
callback: function(r) {
if (!r.exc) {
frappe.msgprint(__("Allocation Expired!"));
}
frm.refresh();
@ -77,8 +77,8 @@ frappe.ui.form.on("Leave Allocation", {
},
leave_policy: function(frm) {
if(frm.doc.leave_policy && frm.doc.leave_type) {
frappe.db.get_value("Leave Policy Detail",{
if (frm.doc.leave_policy && frm.doc.leave_type) {
frappe.db.get_value("Leave Policy Detail", {
'parent': frm.doc.leave_policy,
'leave_type': frm.doc.leave_type
}, 'annual_allocation', (r) => {
@ -91,13 +91,41 @@ frappe.ui.form.on("Leave Allocation", {
return frappe.call({
method: "set_total_leaves_allocated",
doc: frm.doc,
callback: function(r) {
callback: function() {
frm.refresh_fields();
}
})
});
} else if (cint(frm.doc.carry_forward) == 0) {
frm.set_value("unused_leaves", 0);
frm.set_value("total_leaves_allocated", flt(frm.doc.new_leaves_allocated));
}
}
});
frappe.tour["Leave Allocation"] = [
{
fieldname: "employee",
title: "Employee",
description: __("Select the Employee for which you want to allocate leaves.")
},
{
fieldname: "leave_type",
title: "Leave Type",
description: __("Select the Leave Type like Sick leave, Privilege Leave, Casual Leave, etc.")
},
{
fieldname: "from_date",
title: "From Date",
description: __("Select the date from which this Leave Allocation will be valid.")
},
{
fieldname: "to_date",
title: "To Date",
description: __("Select the date after which this Leave Allocation will expire.")
},
{
fieldname: "new_leaves_allocated",
title: "New Leaves Allocated",
description: __("Enter the number of leaves you want to allocate for the period.")
}
];

View File

@ -219,7 +219,8 @@
"fieldname": "leave_policy_assignment",
"fieldtype": "Link",
"label": "Leave Policy Assignment",
"options": "Leave Policy Assignment"
"options": "Leave Policy Assignment",
"read_only": 1
},
{
"fetch_from": "employee.company",
@ -236,7 +237,7 @@
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [],
"modified": "2021-06-03 15:28:26.335104",
"modified": "2021-10-01 15:28:26.335104",
"modified_by": "Administrator",
"module": "HR",
"name": "Leave Allocation",

View File

@ -160,7 +160,7 @@ frappe.ui.form.on("Leave Application", {
half_day_datepicker.update({
minDate: frappe.datetime.str_to_obj(frm.doc.from_date),
maxDate: frappe.datetime.str_to_obj(frm.doc.to_date)
})
});
},
get_leave_balance: function(frm) {
@ -174,7 +174,7 @@ frappe.ui.form.on("Leave Application", {
leave_type: frm.doc.leave_type,
consider_all_leaves_in_the_allocation_period: true
},
callback: function(r) {
callback: function (r) {
if (!r.exc && r.message) {
frm.set_value('leave_balance', r.message);
} else {
@ -234,3 +234,36 @@ frappe.ui.form.on("Leave Application", {
}
}
});
frappe.tour["Leave Application"] = [
{
fieldname: "employee",
title: "Employee",
description: __("Select the Employee.")
},
{
fieldname: "leave_type",
title: "Leave Type",
description: __("Select type of leave the employee wants to apply for, like Sick Leave, Privilege Leave, Casual Leave, etc.")
},
{
fieldname: "from_date",
title: "From Date",
description: __("Select the start date for your Leave Application.")
},
{
fieldname: "to_date",
title: "To Date",
description: __("Select the end date for your Leave Application.")
},
{
fieldname: "half_day",
title: "Half Day",
description: __("To apply for a Half Day check 'Half Day' and select the Half Day Date")
},
{
fieldname: "leave_approver",
title: "Leave Approver",
description: __("Select your Leave Approver i.e. the person who approves or rejects your leaves.")
}
];

View File

@ -76,6 +76,7 @@ class LeaveApplication(Document):
# notify leave applier about approval
if frappe.db.get_single_value("HR Settings", "send_leave_notification"):
self.notify_employee()
self.create_leave_ledger_entry()
self.reload()
@ -108,7 +109,13 @@ class LeaveApplication(Document):
if frappe.db.get_single_value("HR Settings", "restrict_backdated_leave_application"):
if self.from_date and getdate(self.from_date) < getdate():
allowed_role = frappe.db.get_single_value("HR Settings", "role_allowed_to_create_backdated_leave_application")
if allowed_role not in frappe.get_roles():
user = frappe.get_doc("User", frappe.session.user)
user_roles = [d.role for d in user.roles]
if not allowed_role:
frappe.throw(_("Backdated Leave Application is restricted. Please set the {} in {}").format(
frappe.bold("Role Allowed to Create Backdated Leave Application"), get_link_to_form("HR Settings", "HR Settings")))
if (allowed_role and allowed_role not in user_roles):
frappe.throw(_("Only users with the {0} role can create backdated leave applications").format(allowed_role))
if self.from_date and self.to_date and (getdate(self.to_date) < getdate(self.from_date)):

View File

@ -121,6 +121,7 @@ class TestLeaveApplication(unittest.TestCase):
application = self.get_application(_test_records[0])
application.insert()
application.reload()
application.status = "Approved"
self.assertRaises(LeaveDayBlockedError, application.submit)

View File

@ -2,3 +2,37 @@ frappe.ui.form.on("Leave Type", {
refresh: function(frm) {
}
});
frappe.tour["Leave Type"] = [
{
fieldname: "max_leaves_allowed",
title: "Maximum Leave Allocation Allowed",
description: __("This field allows you to set the maximum number of leaves that can be allocated annually for this Leave Type while creating the Leave Policy")
},
{
fieldname: "max_continuous_days_allowed",
title: "Maximum Consecutive Leaves Allowed",
description: __("This field allows you to set the maximum number of consecutive leaves an Employee can apply for.")
},
{
fieldname: "is_optional_leave",
title: "Is Optional Leave",
description: __("Optional Leaves are holidays that Employees can choose to avail from a list of holidays published by the company.")
},
{
fieldname: "is_compensatory",
title: "Is Compensatory Leave",
description: __("Leaves you can avail against a holiday you worked on. You can claim Compensatory Off Leave using Compensatory Leave request. Click") + " <a href='https://docs.erpnext.com/docs/v13/user/manual/en/human-resources/compensatory-leave-request' target='_blank'>here</a> " + __('to know more')
},
{
fieldname: "allow_encashment",
title: "Allow Encashment",
description: __("From here, you can enable encashment for the balance leaves.")
},
{
fieldname: "is_earned_leave",
title: "Is Earned Leaves",
description: __("Earned Leaves are leaves earned by an Employee after working with the company for a certain amount of time. Enabling this will allocate leaves on pro-rata basis by automatically updating Leave Allocation for leaves of this type at intervals set by 'Earned Leave Frequency.")
}
];

View File

@ -50,7 +50,7 @@
{
"fieldname": "max_leaves_allowed",
"fieldtype": "Int",
"label": "Max Leaves Allowed"
"label": "Maximum Leave Allocation Allowed"
},
{
"fieldname": "applicable_after",
@ -61,7 +61,7 @@
"fieldname": "max_continuous_days_allowed",
"fieldtype": "Int",
"in_list_view": 1,
"label": "Maximum Continuous Days Applicable",
"label": "Maximum Consecutive Leaves Allowed",
"oldfieldname": "max_days_allowed",
"oldfieldtype": "Data"
},
@ -87,6 +87,7 @@
},
{
"default": "0",
"description": "These leaves are holidays permitted by the company however, availing it is optional for an Employee.",
"fieldname": "is_optional_leave",
"fieldtype": "Check",
"label": "Is Optional Leave"
@ -205,6 +206,7 @@
},
{
"depends_on": "eval:doc.is_ppl == 1",
"description": "For a day of leave taken, if you still pay (say) 50% of the daily salary, then enter 0.50 in this field.",
"fieldname": "fraction_of_daily_salary_per_leave",
"fieldtype": "Float",
"label": "Fraction of Daily Salary per Leave",
@ -214,7 +216,7 @@
"icon": "fa fa-flag",
"idx": 1,
"links": [],
"modified": "2021-08-12 16:10:36.464690",
"modified": "2021-10-02 11:59:40.503359",
"modified_by": "Administrator",
"module": "HR",
"name": "Leave Type",

View File

@ -13,17 +13,14 @@
"documentation_url": "https://docs.erpnext.com/docs/user/manual/en/human-resources",
"idx": 0,
"is_complete": 0,
"modified": "2020-07-08 14:05:47.018799",
"modified": "2021-05-19 05:32:01.794628",
"modified_by": "Administrator",
"module": "HR",
"name": "Human Resource",
"owner": "Administrator",
"steps": [
{
"step": "Create Department"
},
{
"step": "Create Designation"
"step": "HR Settings"
},
{
"step": "Create Holiday list"
@ -31,6 +28,9 @@
{
"step": "Create Employee"
},
{
"step": "Data import"
},
{
"step": "Create Leave Type"
},
@ -39,9 +39,6 @@
},
{
"step": "Create Leave Application"
},
{
"step": "HR Settings"
}
],
"subtitle": "Employee, Leaves, and more.",

View File

@ -1,18 +1,20 @@
{
"action": "Create Entry",
"action": "Show Form Tour",
"action_label": "Show Tour",
"creation": "2020-05-14 11:43:25.561152",
"description": "<h3>Employee</h3>\n\nAn individual who works and is recognized for his rights and duties in your company is your Employee. You can manage the Employee master. It captures the demographic, personal and professional details, joining and leave details, etc.",
"docstatus": 0,
"doctype": "Onboarding Step",
"idx": 0,
"is_complete": 0,
"is_mandatory": 1,
"is_single": 0,
"is_skipped": 0,
"modified": "2020-05-14 12:26:28.629074",
"modified": "2021-05-19 04:50:02.240321",
"modified_by": "Administrator",
"name": "Create Employee",
"owner": "Administrator",
"reference_document": "Employee",
"show_form_tour": 0,
"show_full_form": 0,
"title": "Create Employee",
"validate_action": 0

View File

@ -1,18 +1,20 @@
{
"action": "Create Entry",
"action": "Show Form Tour",
"action_label": "Show Tour",
"creation": "2020-05-28 11:47:34.700174",
"description": "<h3>Holiday List.</h3>\n\nHoliday List is a list which contains the dates of holidays. Most organizations have a standard Holiday List for their employees. However, some of them may have different holiday lists based on different Locations or Departments. In ERPNext, you can configure multiple Holiday Lists.",
"docstatus": 0,
"doctype": "Onboarding Step",
"idx": 0,
"is_complete": 0,
"is_mandatory": 1,
"is_single": 0,
"is_skipped": 0,
"modified": "2020-05-14 12:25:38.068582",
"modified": "2021-05-19 04:19:52.305199",
"modified_by": "Administrator",
"name": "Create Holiday list",
"owner": "Administrator",
"reference_document": "Holiday List",
"show_form_tour": 0,
"show_full_form": 1,
"title": "Create Holiday List",
"validate_action": 0

View File

@ -1,18 +1,20 @@
{
"action": "Create Entry",
"action": "Show Form Tour",
"action_label": "Show Tour",
"creation": "2020-05-14 11:48:56.123718",
"description": "<h3>Leave Allocation</h3>\n\nLeave Allocation enables you to allocate a specific number of leaves of a particular type to an Employee so that, an employee will be able to create a Leave Application only if Leaves are allocated. ",
"docstatus": 0,
"doctype": "Onboarding Step",
"idx": 0,
"is_complete": 0,
"is_mandatory": 1,
"is_single": 0,
"is_skipped": 0,
"modified": "2020-05-14 11:48:56.123718",
"modified": "2021-05-19 04:22:34.220238",
"modified_by": "Administrator",
"name": "Create Leave Allocation",
"owner": "Administrator",
"reference_document": "Leave Allocation",
"show_form_tour": 0,
"show_full_form": 0,
"title": "Create Leave Allocation",
"validate_action": 0

View File

@ -1,18 +1,20 @@
{
"action": "Create Entry",
"action": "Show Form Tour",
"action_label": "Show Tour",
"creation": "2020-05-14 11:49:45.400764",
"description": "<h3>Leave Application</h3>\n\nLeave Application is a formal document created by an Employee to apply for Leaves for a particular time period based on there leave allocation and leave type according to there need.",
"docstatus": 0,
"doctype": "Onboarding Step",
"idx": 0,
"is_complete": 0,
"is_mandatory": 1,
"is_single": 0,
"is_skipped": 0,
"modified": "2020-05-14 11:49:45.400764",
"modified": "2021-05-19 04:39:09.893474",
"modified_by": "Administrator",
"name": "Create Leave Application",
"owner": "Administrator",
"reference_document": "Leave Application",
"show_form_tour": 0,
"show_full_form": 0,
"title": "Create Leave Application",
"validate_action": 0

View File

@ -1,18 +1,20 @@
{
"action": "Create Entry",
"action": "Show Form Tour",
"action_label": "Show Tour",
"creation": "2020-05-27 11:17:31.119312",
"description": "<h3>Leave Type</h3>\n\nLeave type is defined based on many factors and features like encashment, earned leaves, partially paid, without pay and, a lot more. To check other options and to define your leave type click on Show Tour.",
"docstatus": 0,
"doctype": "Onboarding Step",
"idx": 0,
"is_complete": 0,
"is_mandatory": 1,
"is_single": 0,
"is_skipped": 0,
"modified": "2020-05-20 11:17:31.119312",
"modified": "2021-05-19 04:32:48.135406",
"modified_by": "Administrator",
"name": "Create Leave Type",
"owner": "Administrator",
"reference_document": "Leave Type",
"show_form_tour": 0,
"show_full_form": 1,
"title": "Create Leave Type",
"validate_action": 0

View File

@ -0,0 +1,21 @@
{
"action": "Watch Video",
"action_label": "",
"creation": "2021-05-19 05:29:16.809610",
"description": "<h3>Data Import</h3>\n\nData import is the tool to migrate your existing data like Employee, Customer, Supplier, and a lot more to our ERPNext system.\nGo through the video for a detailed explanation of this tool.",
"docstatus": 0,
"doctype": "Onboarding Step",
"idx": 0,
"is_complete": 0,
"is_single": 0,
"is_skipped": 0,
"modified": "2021-05-19 05:29:16.809610",
"modified_by": "Administrator",
"name": "Data import",
"owner": "Administrator",
"show_form_tour": 0,
"show_full_form": 0,
"title": "Data Import",
"validate_action": 1,
"video_url": "https://www.youtube.com/watch?v=DQyqeurPI64"
}

View File

@ -1,18 +1,20 @@
{
"action": "Update Settings",
"action": "Show Form Tour",
"action_label": "Explore",
"creation": "2020-05-28 13:13:52.427711",
"description": "<h3>HR Settings</h3>\n\nHr Settings consists of major settings related to Employee Lifecycle, Leave Management, etc. Click on Explore, to explore Hr Settings.",
"docstatus": 0,
"doctype": "Onboarding Step",
"idx": 0,
"is_complete": 0,
"is_mandatory": 0,
"is_single": 1,
"is_skipped": 0,
"modified": "2020-05-20 11:16:42.430974",
"modified": "2021-05-18 07:02:05.747548",
"modified_by": "Administrator",
"name": "HR Settings",
"owner": "Administrator",
"reference_document": "HR Settings",
"show_form_tour": 0,
"show_full_form": 0,
"title": "HR Settings",
"validate_action": 0

View File

@ -313,4 +313,4 @@ erpnext.patches.v13_0.create_custom_field_for_finance_book
erpnext.patches.v13_0.modify_invalid_gain_loss_gl_entries
erpnext.patches.v13_0.fix_additional_cost_in_mfg_stock_entry
erpnext.patches.v13_0.set_status_in_maintenance_schedule_table
erpnext.patches.v13_0.add_default_interview_notification_templates
erpnext.patches.v13_0.add_default_interview_notification_templates