Hi,
As I said, I have a custom entity showing subgrids with views displaying opportunities. I want to count some of the rows of these views and do various operations on them. But the code I wrote isn't working the fields remain equal to 0.
Here is my code, can you help me make it work please?
function UpdateKpi(executionContext) {
var formContext = executionContext.getFormContext();
if(formContext.getAttribute("statecode").getValue() == 0){ //check if the record is active
var kpi1 = formContext.getControl("kpi1");//correspond to the names of the list displaying KPI views
var kpi2 = formContext.getControl("kpi2");
var kpi3 = formContext.getControl("kpi3");
var kpi4 = formContext.getControl("kpi4");
var kpi5 = formContext.getControl("kpi5");
var nb_kpi1 = formContext.getAttribute("rta_offresoombudgetencours");//get the attributes of various fields.
var nb_kpi2 = formContext.getAttribute("rta_offresfermesencours");
var nb_kpi3 = formContext.getAttribute("rta_offresfermesmises");
var k_kpi3 = formContext.getAttribute("rta_offresfermesmisesk");
var nb_kpi4 = formContext.getAttribute("rta_dlaideremiseoffresferme");
var nb_kpi5 = formContext.getAttribute("rta_offresfermesacceptes");
var k_kpi5 = formContext.getAttribute("rta_offresfermesacceptesk");
var debmoi = formContext.getAttribute("rta_dbutdumois");//beginning of a month
var finmoi = formContext.getAttribute("rta_findumoi");//end of a month
if (kpi1 == null || kpi2 == null || kpi3 == null || kpi4 == null || kpi5 == null) { //make sure the grid has loaded
setTimeout(function () { UpdateKpi(); }, 2000); //if the grid hasn't loaded run this again when it has
return;
}
nb_kpi1.setValue(kpi1.getGrid().getTotalRecordCount());// nb_kpi1 = number of rows in the view contained by the grid
nb_kpi2.setValue(kpi2.getGrid().getTotalRecordCount());
var nbrow = kpi4.getGrid().getTotalRecordCount();//nbrow= nb of rows in the 4th grid
if (nbrow == 0){
nb_kpi4.setValue(0); //if nbrow == 0 , nb_kpi4 =0
}else{
var sum = 0;
var cnt = nbrow;
for( var i = 0; i < nbrow;i++){
if ( kpi4.getGrid().getRows().get(i).getData().getEntity().attributes.get("rta_loofferduration").getValue() ===""){//if lo offer duration empty cnt diminishes
cnt--;
}else{//if lo offer duration of a row is not empty, sum increases
sum += parseInt(kpi4.getGrid().getRows().get(i).getData().getEntity().attributes.get("rta_loofferduration").getValue());
}
}
nb_kpi4.setValue(sum/cnt);//nb kpi4 = sum/cnt
}
//KPI 3
var nbrow1 = kpi3.getGrid().getTotalRecordCount();
var nombre_row = 0;
var sum1 = 0;
for( var i = 0; i < nbrow1;i++){
var parts = kpi3.getGrid().getRows().get(i).getData().getEntity().attributes.get("rta_biddate").getValue().split('/');
var mydate = new Date(parts[2],parts[1]-1,parts[0]);
if(mydate > debmoi.getValue() && mydate < finmoi.getValue()){
sum1 += parseInt(kpi3.getGrid().getRows().get(i).getData().getEntity().attributes.get("estimatedvalue").getValue().toString().replace(/\s/g,''));
nombre_row++;
}
}
if (nombre_row == 0){
k_kpi3.setValue(0);
}else{
k_kpi3.setValue(sum1);
}
nb_kpi3.setValue(nombre_row);
// KPI 5
var nbrow2 = kpi5.getGrid().getTotalRecordCount();
var nombre_row1 = 0;
var sum2 = 0;
for( var i = 0; i < nbrow2;i++){// cette boucle parcourt toutes les lignes du tableau kpi 5
var parts = kpi5.getGrid().getRows().get(i).getData().getEntity().attributes.get("rta_porderdate").getValue().split('/');//part = une entrée du tableau à la fois
var mydate = new Date(parts[2],parts[1]-1,parts[0]);// mydate = la date du l'entrée sélectionnée par le pointeur
if(mydate > debmoi.getValue() && mydate < finmoi.getValue()){ //si la date est plus grande que le debut du mois et plus petite que la fin du mois entre dans la cond
sum2 += parseInt(kpi5.getGrid().getRows().get(i).getData().getEntity().attributes.get("estimatedvalue").getValue().toString().replace(/\s/g,''));
nombre_row1++;
}
}
if (nombre_row1 == 0){
k_kpi5.setValue(0);
}else{
k_kpi5.setValue(sum2);
}
nb_kpi5.setValue(nombre_row1);
}
}
*This post is locked for comments