Job Opening - get planned opening, validate vacancies by Staffing Plan

This commit is contained in:
Ranjith 2018-05-07 13:58:54 +05:30
parent e4cda0380a
commit f220e89d9f
3 changed files with 87 additions and 2 deletions

View File

@ -0,0 +1,39 @@
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
frappe.ui.form.on('Job Opening', {
designation: function(frm) {
if(frm.doc.designation && frm.doc.company){
frappe.call({
"method": "erpnext.hr.doctype.staffing_plan.staffing_plan.get_active_staffing_plan_and_vacancies",
args: {
company: frm.doc.company,
designation: frm.doc.designation,
department: frm.doc.department,
date: frappe.datetime.now_date() // ToDo - Date in Job Opening?
},
callback: function (data) {
if(data.message){
frm.set_value('staffing_plan', data.message[0]);
frm.set_value('planned_vacancies', data.message[1]);
}
else{
frm.set_value('staffing_plan', "");
frm.set_value('planned_vacancies', 0);
frappe.show_alert({
indicator: 'orange',
message: __('No Staffing Plans found for this Designation')
});
}
}
});
}
else{
frm.set_value('staffing_plan', "");
frm.set_value('planned_vacancies', 0);
}
},
company: function(frm) {
frm.set_value('designation', "");
}
});

View File

@ -224,7 +224,38 @@
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "planned_vacancies",
"fieldtype": "Int",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Planned number of Positions",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
@ -369,7 +400,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2018-04-13 18:52:56.109392",
"modified": "2018-04-18 19:27:15.004385",
"modified_by": "Administrator",
"module": "HR",
"name": "Job Opening",

View File

@ -8,6 +8,7 @@ import frappe
from frappe.website.website_generator import WebsiteGenerator
from frappe import _
from erpnext.hr.doctype.staffing_plan.staffing_plan import get_current_employee_count, get_active_staffing_plan_and_vacancies
class JobOpening(WebsiteGenerator):
website = frappe._dict(
@ -20,6 +21,20 @@ class JobOpening(WebsiteGenerator):
if not self.route:
self.route = frappe.scrub(self.job_title).replace('_', '-')
if self.staffing_plan:
self.validate_current_vacancies()
def validate_current_vacancies(self):
current_count = get_current_employee_count(self.designation)
current_count+= frappe.db.sql("""select count(*) from `tabJob Opening` \
where designation = '{0}' and status='Open'""".format(self.designation))[0][0]
vacancies = get_active_staffing_plan_and_vacancies(self.company, self.designation, self.department)[1]
# set staffing_plan too?
if vacancies and vacancies <= current_count:
frappe.throw(_("Job Openings for designation {0} already opened or hiring \
completed as per Staffing Plan {1}".format(self.designation, self.staffing_plan)))
def get_context(self, context):
context.parents = [{'route': 'jobs', 'title': _('All Jobs') }]