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"Childtables", {
zu addierendes Feld aufCT:CT:function(frm, cdt, cdn){var d = locals[cdt][cdn];var total = 0;frm.doc.Childtablename aufParentdocument.Parentdocument.forEach(function(d) { total += d.hours; });frm.set_value("Feld auf Parentdoc fürErgebnis"Ergebnis", total);refresh_field("Feld auf Parentdoc fürErgebnis"Ergebnis");
},
Childtablename aufParentdocument_remove:Parentdocument_remove:function(frm, cdt, cdn){var d = locals[cdt][cdn];var total = 0;frm.doc.Childtablename aufParentdocument.Parentdocument.forEach(function(d) { total += d.zu addierendes Feld aufCT;CT; });frm.set_value("Feld auf Parentdoc fürErgebnis"Ergebnis", total);refresh_field("Feld auf Parentdoc fürErgebnis"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");
}
});