tüit Logo Direkt zum Hauptinhalt

Felder in Childtable addieren und Ergebnis auf Feld in Parentdocument / Sum column in child table and show total in parent field

Um die Felder in einem Childtable zu addieren und das Ergebnis auf ein Feld im Parenttable zu übertragen kann folgendes Script benutz werden:

frappe.ui.form.on("Name des Childtables", {
   zu addierendes Feld auf CT:function(frm, cdt, cdn){
   var d = locals[cdt][cdn];
   var total = 0;
   frm.doc.Childtablename auf Parentdocument.forEach(function(d) { total += d.hours; });
   frm.set_value("Feld auf Parentdoc für Ergebnis", total);
   refresh_field("Feld auf Parentdoc für Ergebnis");
 },
   Childtablename auf Parentdocument_remove:function(frm, cdt, cdn){
   var d = locals[cdt][cdn];
   var total = 0;
   frm.doc.Childtablename auf Parentdocument.forEach(function(d) { total += d.zu addierendes Feld auf CT; });
   frm.set_value("Feld auf Parentdoc für Ergebnis", total);
   refresh_field("Feld auf Parentdoc für Ergebnis");
       }
   });

Beispiel:

Name Childtable: Stunden Monteure Projekte

zu addierende Felder auf CT : hours

Childtablename auf Parentdoctype: time_logs

Feld auf Parentdoc für Ergebnis: arbeitszeit_gesamt


frappe.ui.form.on("Stunden Monteure Projekte", {
   hours:function(frm, cdt, cdn){
   var d = locals[cdt][cdn];
   var total = 0;
   frm.doc.time_logs.forEach(function(d) { total += d.hours; });
   frm.set_value("arbeitszeit_gesamt", total);
   refresh_field("arbeitszeit_gesamt");
 },
   time_logs_remove:function(frm, cdt, cdn){
   var d = locals[cdt][cdn];
   var total = 0;
   frm.doc.time_logs.forEach(function(d) { total += d.hours; });
   frm.set_value("arbeitszeit_gesamt", total);
   refresh_field("arbeitszeit_gesamt");
       }
   });

image-1675344736775.gif