- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-21-2022 04:09 AM
Hi ServiceNow Folks,
We have a requirement, We have two fields on change request 1) Planned start date 2) Planned End date
and we have one field on change task - Due Date
Qus1: -- Whenever the planned start date(change_request field) is less than Due date(change_task field) Show an errorBox message under planned start date('planned start date should be before due date');
Qus 2: -- Whenever the Due date is less than Planned start date show an errorBox message under due date field('Due date should be after planned installed date').
Can some one help me please.
Thanks
Mani Polisetty
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-22-2022 02:32 AM
Use below Updated Script Include :-
var getCallerDetails = Class.create();
getCallerDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getDetails: function() {
var currentNumber = this.getParameter('sysparm_sysId');
var currentDate = new GlideDateTime(this.getParameter('sysparm_date'));
var gr = new GlideRecord("change_task");
gr.addQuery("change_request.number", this.getParameter('sysparm_sysId'));
gr.query();
while(gr.next()) {
if (currentDate > new GlideDateTime(gr.planned_start_date).getDisplayValue() ) {
return false;
} else {
return true;
}
}
},
getTaskDetails: function() {
var currentSysId = this.getParameter('sysparm_sysId');
var currentDate = new GlideDateTime(this.getParameter('sysparm_date'));
var gr = new GlideRecord("change_request");
gr.addQuery("sys_id", currentSysId);
gr.query();
if (gr.next()) {
gs.info("FoundRecord=" + gr.planned_start_date);
if (currentDate < new GlideDateTime(gr.start_date).getDisplayValue()) {
return false;
} else {
return true;
}
}
},
type: 'getCallerDetails'
});
Replace with your field values.
Please Mark My Response as Correct/Helpful based on Impact
Regards,
Gunjan Kiratkar
2X ServiceNow MVP
Community Rising Star 2022
Youtube : ServiceNow Guy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-21-2022 06:32 AM
Hi @Mani Polisetty2 ,
Use below code
Onchange client script on change request table
onChange of planned start date
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
//Type appropriate comment here, and begin script below
var ga = new GlideAjax('getCallerDetails'); //Scriptinclude
ga.addParam('sysparm_name', 'getDetails'); //Method
ga.addParam('sysparm_sysId', g_form.getValue('number')); //Parameters
ga.addParam('sysparm_date', g_form.getValue('start_date'));
ga.getXMLAnswer(getResponse);
function getResponse(response) {
if (response == 'false') {
g_form.clearValue('start_date');
g_form.showFieldMsg('start_date', 'Planned start date should be before due date', 'error');
}
}
}
OnChange Client Script on change_task table
Onchange of due date
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
//Type appropriate comment here, and begin script below
var ga = new GlideAjax('getCallerDetails'); //Scriptinclude
ga.addParam('sysparm_name', 'getTaskDetails'); //Method
ga.addParam('sysparm_sysId', g_form.getValue('change_request')); //Parameters
ga.addParam('sysparm_date', newValue); //Replace your due date field
ga.getXMLAnswer(getResponse);
function getResponse(response) {
if (response == 'false') {
g_form.clearValue('planned_start_date'); //Replace your due date field
g_form.showFieldMsg('planned_start_date', 'Due date should be after planned installed date', 'error'); //Replace your due date field
}
}
}
Script Include :-
var getCallerDetails = Class.create();
getCallerDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getDetails: function() {
var currentNumber = this.getParameter('sysparm_sysId');
var currentDate = new GlideDateTime(this.getParameter('sysparm_date'));
var gr = new GlideRecord("change_task");
gr.addQuery("change_request.number", this.getParameter('sysparm_sysId'));
gr.query();
if (gr.next()) {
gs.info("FoundRecord=" + gr.planned_start_date);
if (currentDate > gr.planned_start_date) { // Replace your due date field in gr.start_date
return false;
} else {
return true;
}
}
},
getTaskDetails: function() {
var currentSysId = this.getParameter('sysparm_sysId');
var currentDate = new GlideDateTime(this.getParameter('sysparm_date'));
var gr = new GlideRecord("change_request");
gr.addQuery("sys_id", currentSysId);
gr.query();
if (gr.next()) {
if (currentDate < gr.start_date) { // Replace your due date field in gr.start_date
return false;
} else {
return true;
}
}
},
type: 'getCallerDetails'
});
Please Mark My Response as Correct/Helpful based on Impact
Regards,
Gunjan Kiratkar
2X ServiceNow MVP
Community Rising Star 2022
Youtube : ServiceNow Guy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-22-2022 01:25 AM
Hi Gunjan,
Great thanks for your valuable solution, It's working as expected but for change task following client script is checking only date not time.
ex :-- If 'Planned start date' is - 22-11-2022 08:24:20 - The Error message is showing if I select same date also. That means I want to check time also. Even if I will be select One sec difference also need to show an error message.
Another Qus : -- If the change request have more than one task should check the all change task's due date field (Looping is required). Can you please help me on it.
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
//Type appropriate comment here, and begin script below
var ga = new GlideAjax('getCallerDetails'); //Scriptinclude
ga.addParam('sysparm_name', 'getTaskDetails'); //Method
ga.addParam('sysparm_sysId', g_form.getValue('change_request')); //Parameters
ga.addParam('sysparm_date', newValue); //Replace your due date field
ga.getXMLAnswer(getResponse);
function getResponse(response) {
if (response == 'false') {
g_form.clearValue('due_date'); //Replace your due date field
g_form.showFieldMsg('due_date', 'Due date should be after planned installed date', 'error'); //Replace your due date field
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-22-2022 02:32 AM
Use below Updated Script Include :-
var getCallerDetails = Class.create();
getCallerDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getDetails: function() {
var currentNumber = this.getParameter('sysparm_sysId');
var currentDate = new GlideDateTime(this.getParameter('sysparm_date'));
var gr = new GlideRecord("change_task");
gr.addQuery("change_request.number", this.getParameter('sysparm_sysId'));
gr.query();
while(gr.next()) {
if (currentDate > new GlideDateTime(gr.planned_start_date).getDisplayValue() ) {
return false;
} else {
return true;
}
}
},
getTaskDetails: function() {
var currentSysId = this.getParameter('sysparm_sysId');
var currentDate = new GlideDateTime(this.getParameter('sysparm_date'));
var gr = new GlideRecord("change_request");
gr.addQuery("sys_id", currentSysId);
gr.query();
if (gr.next()) {
gs.info("FoundRecord=" + gr.planned_start_date);
if (currentDate < new GlideDateTime(gr.start_date).getDisplayValue()) {
return false;
} else {
return true;
}
}
},
type: 'getCallerDetails'
});
Replace with your field values.
Please Mark My Response as Correct/Helpful based on Impact
Regards,
Gunjan Kiratkar
2X ServiceNow MVP
Community Rising Star 2022
Youtube : ServiceNow Guy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-22-2022 08:02 AM
Perfect Gunjan, Great thanks for your valuable help. It's working as expected. Really appreciated.
Thanks
Mani Polisetty