Multiply field,

frappe.ui.form.on(‘Material Request’, {
refresh: function(frm) {
var total_value = 0.0;
var items = frm.doc.items;
for (var i = 0; i < items.length; i++) {
var row = items[i];
var qty = row[qty] || 0; // Handle potential undefined values
var rate = row[custom_landed_cost] || 0; // Handle potential undefined values
total_value += (qty * rate);
}
frm.set_value(custom_landed, total_value);
}
});

I am trying to multiply field value as per the script but it is now working, Can anyone help me on it .

Hi @muhammed_ishaq:

You forgot some quotes …

frappe.ui.form.on('Material Request', {
    refresh: function(frm) {
        var total_value = 0.0;
        var items = frm.doc.items;
        for (var i = 0; i < items.length; i++) {
            var row = items[i];
            var qty = row['qty'] || 0; // Handle potential undefined values
            var rate = row['custom_landed_cost'] || 0; // Handle potential undefined values
            total_value += (qty * rate);
        }
    frm.set_value('custom_landed', total_value);
    }
});
    

Hope this helps.

Thanks AVC for the updated script.

I try it but it doesn’t work.

frappe.ui.form.on(‘Material Request’, {
refresh: function(frm) {
var total_value = 0.0;
var items = frm.doc.items;
for (var i = 0; i < items.length; i++) {
var row = items[i];
var qty = row[‘qty’] || 0; // Handle potential undefined values
var rate = row[‘custom_landed_cost’] || 0; // Handle potential undefined values
total_value += (qty * rate);
}
frm.set_value(‘custom_landed’, total_value);
}
});

Hi @muhammed_ishaq:

Whats the fieldname for “Tot of landed”? … it was no mentioned before. Is ‘custom_landed’? Is there any other field in the parent doctype to update? I don’t fully understand what are you trying to achieve …

frappe.ui.form.on('Material Request', {
    refresh: function(frm) {
        var total_value = 0.0;
        var items = frm.doc.items;
        for (var i = 0; i < items.length; i++) {
            var row = items[i];
            var qty = row['qty'] || 0; // Handle potential undefined values
            var rate = row['custom_landed_cost'] || 0; // Handle potential undefined values
            total_value += (qty * rate);
            frappe.model.set_value("Material Request Item", row['name'], "custom_tot_of_landed", qty*rate)
        }
    // frm.set_value('custom_landed', total_value);
    }
});

Anyway, maybe is better use client script for child doctype, and triggering tot_of_landed after qty or rate change. This will work:

 frappe.ui.form.on("Material Request Item", {

        qty: function(frm, cdt, cdn) {
            var qty = frappe.model.get_value(cdt, cdn, "qty");
            var rate = frappe.model.get_value(cdt, cdn, "custom_landed_cost");
            frappe.model.set_value(cdt, cdn, "custom_tot_of_landed", qty*rate);
        },
        custom_landed_cost: function(frm, cdt, cdn) {
            var qty = frappe.model.get_value(cdt, cdn, "qty");
            var rate = frappe.model.get_value(cdt, cdn, "custom_landed_cost");
            frappe.model.set_value(cdt, cdn, "custom_tot_of_landed", qty*rate);
        },
});

Hope this helps.

1 Like

Thanks so much @avc for your code. it works.

1 Like