Calculate percentage in child table based on a grand total located in the Doctype not refreshing in every row

I have a child table (CONTEOS) with two columns: “n_granos” and “porcentaje” in a Doctype call “Mieles Pampero”. In the Doctype I have a field call “entomofilos”. I have done the script for “total” that sum “n_granos”. I want to calculate the “porcentaje” / percentage in each row like: n_granos/total. I have done the srcipt below but it does not work, becuase it does not refresh the number each row I include.

Can somebody help me? Thats what I have:

frappe.ui.form.on("CONTEOS", { 
	n_granos:function(frm, cdt, cdn){ 
		var child = locals[cdt][cdn];
		if(d.tipo_de_polinizacion == "Entomofilia") {
			frappe.model.set_value(cdt,cdn ,"porcentaje", child.n_granos/cur_frm.doc.entomofilos * 100);
		}
	}
});

Thanks!!

frappe.ui.form.on("CONTEOS", { 
	n_granos:function(frm, cdt, cdn){ 
		var child = locals[cdt][cdn];
		if(child.tipo_de_polinizacion == "Entomofilia") {
			frappe.model.set_value(cdt,cdn ,"porcentaje", child.n_granos/cur_frm.doc.entomofilos * 100);
		}
	}
});

I does not work…

have you tried this ?

refresh_field('table field name ')

I found a solution like this:

frappe.ui.form.on(“Analisis Palinologicos”, {
“calcular”: function(frm) { cur_frm.clear_table(“table_24”);
frappe.model.with_doc(“Analisis Palinologicos”, frm.doc.name, function() {
var tabletransfer= frappe.model.get_doc(“Analisis Palinologicos”, frm.doc.name)
$.each(tabletransfer.table_14, function(index, row){
d = frm.add_child(“table_24”);
d.tipo_polinico = row.tipo_polinico;
d.n_granos = row.n_granos;
d.tipo_de_polinizacion = row.tipo_de_polinizacion;
d.taxon = row.taxon;
d.nombre_vulgar = row.nombre_vulgar;
d.genero = row.genero;
d.tribus_o_subfamilias = row.tribus_o_subfamilias;
d.familia = row.familia;
d.orden = row.orden;
d.grupo = row.grupo;
d.subclase = row.subclase;
d.clase = row.clase;
d.subdivision = row.subdivision;
d.division = row.division;
frm.refresh_field(“table_24”);
d.porcentaje = (d.n_granos * 100 / cur_frm.doc.entomofilos);
frm.refresh_field(“table_24”);
if(d.tipo_de_polinizacion == “Entomofilia” && d.porcentaje > 45) d.clasificacion = “Polen dominante (>45%)”;
if(d.tipo_de_polinizacion == “Entomofilia” && d.porcentaje < 3) d.clasificacion = “Polen traza (<3%)”;
if(d.tipo_de_polinizacion == “Entomofilia” && d.porcentaje > 3 && d.porcentaje < 15) d.clasificacion = “Polen minoritario (3-15%)”;
if(d.tipo_de_polinizacion == “Entomofilia” && d.porcentaje > 15 && d.porcentaje < 45) d.clasificacion = “Polen secundario (16-45%)”;
frm.refresh_field(“table_24”);
});
});
}
});

frappe.ui.form.on(“Analisis Palinologicos”, {
“calcular”: function(frm) { cur_frm.clear_table(“table_14”);
frappe.model.with_doc(“Analisis Palinologicos”, frm.doc.name, function() {
var tabletransfer= frappe.model.get_doc(“Analisis Palinologicos”, frm.doc.name)
$.each(tabletransfer.table_24, function(index, row){
d = frm.add_child(“table_14”);
d.tipo_polinico = row.tipo_polinico;
d.n_granos = row.n_granos;
d.tipo_de_polinizacion = row.tipo_de_polinizacion;
d.taxon = row.taxon;
d.nombre_vulgar = row.nombre_vulgar;
d.genero = row.genero;
d.tribus_o_subfamilias = row.tribus_o_subfamilias;
d.familia = row.familia;
d.orden = row.orden;
d.grupo = row.grupo;
d.subclase = row.subclase;
d.clase = row.clase;
d.subdivision = row.subdivision;
d.division = row.division;
frm.refresh_field(“table_14”);
d.porcentaje = (d.n_granos * 100 / cur_frm.doc.entomofilos);
frm.refresh_field(“table_14”);
if(d.tipo_de_polinizacion == “Entomofilia” && d.porcentaje > 45) d.clasificacion = “Polen dominante (>45%)”;
if(d.tipo_de_polinizacion == “Entomofilia” && d.porcentaje < 3) d.clasificacion = “Polen traza (<3%)”;
if(d.tipo_de_polinizacion == “Entomofilia” && d.porcentaje > 3 && d.porcentaje < 15) d.clasificacion = “Polen minoritario (3-15%)”;
if(d.tipo_de_polinizacion == “Entomofilia” && d.porcentaje > 15 && d.porcentaje < 45) d.clasificacion = “Polen secundario (16-45%)”;
frm.refresh_field(“table_14”);

        });  
    });
} 

});