SUM columns in child table

Hi, People

Actually, I do that custom script for calculate some values like “ABR”, “TCV” and “PMENSUAL”.

Image

Now, I need to sum the column “Precio Mensual” And the value appear in the var total or in my field CampoTest.

The custom script is:

frappe.ui.form.on("VersionesCRM", {
   cmensual: function(frm, cdt, cdn) {
       var d = locals[cdt][cdn];
        frappe.model.set_value(d.doctype, d.name, "pmensual", d.cmensual / (1 - ( d.margen / 100)));
        frappe.model.set_value(d.doctype, d.name, "abr", d.pmensual*frm.doc.mfacturacion);
        frappe.model.set_value(d.doctype, d.name, "tcv", d.pmensual*frm.doc.vdcontrato);

        var total= 0;
        frm.doc.VersionesCRM.forEach(function(d){total+= d.pmensual;});
        frm.set_value('total', total);
}
});

I was read some topic about that but Didn’t found the answer

So, But Doens’t work. Can I help me? .

Thank u

a simple vista el primer error seria

frm.set_value(‘total’, total); ya el campo donde quieres reflejar la suma se llama campotest

el scrip deberia de ir asi frm.set_value(‘campotest’, total);

Hola, @Randy_Lowery

La etiqueta de mi campo si es “CampoTest” pero su nombre es total. Igual probé poniendo en el script el nombre de mi etiqueta y tampoco funciona.

O como puedo pasar algun valor de mi tabla secundaria a mi doctype… Leí y era con frm.set_value pero en algo estoy fallando…

¿Alguna idea?

Saludos.

Saludos trataré recreando los valores en mi servidor puedes compartir los nombres de los campos que has usado a como aparecen en doctype?

Claro, @Randy_Lowery

Mi Tabla secundaria “VersionesCRM” esta compuesta por estos campos.

Mi doctype principal es “Oportunidad” y dentro de este mando llamar a mi tabla secundaria.

Y en este ultimo Etiqueta “CampoTEST” nombre total quiero dejar la suma de mi columna precio mensual.

De hecho estuve leyendo un post tuyo y cambie el nombre de mi sintaxis de frm.doc.VersionesCRM.forEach(function(d){total+= d.pmensual;});
a frm.doc.table.forEach(function(d){total+= d.pmensual;}); pero tampoco.

Are you getting any console output from this?

Make sure that the custom script is in the “Opportunity - Client” custom script file.

I think I have found the problem, total needs to be a currency (Divisa / Moneda) field type

@cpurbaugh

The custom script is in " Oportunidad - Client", I change the value of Var ‘Total’ for (Divisa/Moneda) but no work.

I use an msgprint to know the contents of my var total and the result is “0.00” As if it didn’t add.

Ok encontre lo que podria ser el problema. Este scrip funciona a la perfeccion en mi servidor

frappe.ui.form.on(“VersionesCRM”, {
cmensual: function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
var total = 0;
frappe.model.set_value(d.doctype, d.name, “pmensual”, d.cmensual / (1 - ( d.margen / 100)));
frappe.model.set_value(d.doctype, d.name, “abr”, d.pmensualfrm.doc.mfacturacion);
frappe.model.set_value(d.doctype, d.name, “tcv”, d.pmensual
frm.doc.vdcontrato);

frm.doc.versiones.forEach(function(d) { total += d.pmensual; });
frm.set_value(‘total’, total);
}
});

Dos cosas a tener en consideracion:

  1. En el doctype principal el campo de la tabla VersionesCRM aparece como versiones por eso hago referencia en la lina :frm.doc.versiones.forEach(function(d) { total += d.pmensual; });

2: En ese scrip el campo que ejecuta los calculos es cmensual por lo tanto es el ultimo que deberias de llenar para que el valor no sea 0. Yo en lo personal lo cambiaria a este

frappe.ui.form.on(“VersionesCRM”, {
margen: function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
var total = 0;
frappe.model.set_value(d.doctype, d.name, “pmensual”, d.cmensual / (1 - ( d.margen / 100)));
frappe.model.set_value(d.doctype, d.name, “abr”, d.pmensualfrm.doc.mfacturacion);
frappe.model.set_value(d.doctype, d.name, “tcv”, d.pmensual
frm.doc.vdcontrato);

frm.doc.versiones.forEach(function(d) { total += d.pmensual; });
frm.set_value(‘total’, total);
}
});

Como margen es el segundo campo en llenarse los datos de ambos campos se multiplican por los valores que el usuario haya registrado.

Adjunto imagen

Muchas Gracias @Randy_Lowery

Con la primera consideración quedo solucionado el detalle, ya con esto puedo ajustar otro template que me estaba causando problemas tambien.

Igual ajuste lo que me recomendaste en el punto dos. Ahora si ya me aparecen los totales

Gracias tmb a @cpurbaugh que hace un par de post me oriento en las operaciones en la tabla secundaria.

saludos.

@Leonel_Gonzalez to be clear, it’s working now? My google translate isn’t clear.

@cpurbaugh that’s correct, The custom script is working corrently. Thank u

1 Like