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

anurag92
Kilo Sage

Have you tried adding a condition before updating the date field on parent?



Can you share your code, so that we can indicate what needs to be added where?


lSurya 24
Giga Guru

Try this and need little modifications,


(function executeRule(current, previous /*null when async*/) {



var newDate = [];


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()){


newDate.push(gr1.u_proposed_e_t_d) ;


}


gs.addInfoMessage("date:" +newDate);



var maxDate = new GlideDate();


maxDate = Math.max.apply(null,newDate);


gs.addInfoMessage("maxDate:" +maxDate); // I am getting NaN value here



}


}



})(current, previous);


Hey Nitish,



You may need some tweaks in above code as per your requirement.


Nitesh Chandana
Kilo Expert

Me too getting as NaN. Do anyone know the method for getting maximum date in an array??