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