We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

How to update child date field with parent date field

Nitesh Chandana
Kilo Expert

Hello,

If there is three tasks in the change_request_task table having three dates for three tasks in that two are in new state and one is in cancel state. I need to update higher date to the parent (change_request) table, which is in new state only (i.e., cancel state date should not be updated even if it is higher date). I am able to update the parent date irrespective to the state fields in the tasks.

can anyone help me out??

Thanks,

Nitesh

1 ACCEPTED SOLUTION

Hello Nitish,



The below code will fetch date as per requirement for which I have been worked on the kind of same requirement.



Below is a after update business rule:



var newDate = [];


var dateft;


var date = current.u_proposed_e_t_d;


var dtsplit = date.split("-");


var dtans = dtsplit[1] + '/' +dtsplit[2] + '/' +dtsplit[0];




var pardate = new GlideRecord('u_workorder');


pardate.addQuery('sys_id',current.parent);


pardate.query();


if(pardate.next()){


var pdate = pardate.u_suggested_delivery_date;



if(pardate.u_suggested_delivery_date == date){



var gr1 = new GlideRecord('u_workorder_tasks');


gr1.addQuery('parent',current.parent);


gr1.addEncodedQuery('u_task_state!=50');


gr1.query();


while(gr1.next()){


var gtdate= gr1.u_proposed_e_t_d;


dateft = dateft + ',' + gtdate;


var dt = new GlideDate();


dt.setValue(gtdate);


var gdt = new GlideDateTime(dt);


var num = gdt.getNumericValue();


newDate.push(num);


}




var dateftsplit = dateft.split(",");




                    var s = Math.max.apply(null,newDate);




                    var index = newDate.indexOf(s);



var key = index + 1;



var updatedate = dateftsplit[key];




var dateformatreq = updatedate.split("-");



var dtfrmtreq = dateformatreq[1] + '/' + dateformatreq[2] +'/' + dateformatreq[0];



pardate.u_suggested_delivery_date = dtfrmtreq;


pardate.update();




}


}


View solution in original post

7 REPLIES 7

Hello Nitish,



The below code will fetch date as per requirement for which I have been worked on the kind of same requirement.



Below is a after update business rule:



var newDate = [];


var dateft;


var date = current.u_proposed_e_t_d;


var dtsplit = date.split("-");


var dtans = dtsplit[1] + '/' +dtsplit[2] + '/' +dtsplit[0];




var pardate = new GlideRecord('u_workorder');


pardate.addQuery('sys_id',current.parent);


pardate.query();


if(pardate.next()){


var pdate = pardate.u_suggested_delivery_date;



if(pardate.u_suggested_delivery_date == date){



var gr1 = new GlideRecord('u_workorder_tasks');


gr1.addQuery('parent',current.parent);


gr1.addEncodedQuery('u_task_state!=50');


gr1.query();


while(gr1.next()){


var gtdate= gr1.u_proposed_e_t_d;


dateft = dateft + ',' + gtdate;


var dt = new GlideDate();


dt.setValue(gtdate);


var gdt = new GlideDateTime(dt);


var num = gdt.getNumericValue();


newDate.push(num);


}




var dateftsplit = dateft.split(",");




                    var s = Math.max.apply(null,newDate);




                    var index = newDate.indexOf(s);



var key = index + 1;



var updatedate = dateftsplit[key];




var dateformatreq = updatedate.split("-");



var dtfrmtreq = dateformatreq[1] + '/' + dateformatreq[2] +'/' + dateformatreq[0];



pardate.u_suggested_delivery_date = dtfrmtreq;


pardate.update();




}


}


hey surya, excellent work.. saved me lot of time for me.. Keep rocking...



Thanks,


Nitesh


Thanks mate!! Hope you too rock