Using custom script how to calculate custom fields

Hi All

simply i need to get result from multiplying 3 custom fields (Length * width * quantity ) in sales order item at result custom field i use below script but not working

frappe.ui.form.on(“Sales Order Item”, “m2”, function(frm) {
frm.set_value(“m2”, flt(frm.doc.length) * flt(frm.doc.width) * flt(frm.doc.qty));
})

m2 is result filed

Thanks for your support

frappe.ui.form.on(“Sales Order Item”, “m2”, function(frm) {
frm.set_value(“m2”, flt(frm.doc.length) * flt(frm.doc.width) * flt(frm.doc.qty));

frm.refresh_field(“m2”);
})

Thanks Mohammed but still not working getting m2 empty

ok, try this:

frappe.ui.form.on("Sales Order Item", { length: function(frm) { frm.set_value("m2", flt(frm.doc.length) * flt(frm.doc.width) * flt(frm.doc.qty)); frm.refresh_field("m2"); }, width: function(frm) { frm.set_value("m2", flt(frm.doc.length) * flt(frm.doc.width) * flt(frm.doc.qty)); frm.refresh_field("m2"); }, qty: function(frm) { frm.set_value("m2", flt(frm.doc.length) * flt(frm.doc.width) * flt(frm.doc.qty)); frm.refresh_field("m2"); } });

Thanks again mohammed but still not working i attached screenshoots

Sorry, This one will work for you:

frappe.ui.form.on("Sales Order Item", { length: function(frm, cdt, cdn) { var row = locals[cdt][cdn]; row.m2 = flt(row.length) * flt(row.width) * flt(row.qty); frm.refresh_field("items"); }, width: function(frm, cdt, cdn) { var row = locals[cdt][cdn]; row.m2 = flt(row.length) * flt(row.width) * flt(row.qty); frm.refresh_field("items"); }, qty: function(frm, cdt, cdn) { var row = locals[cdt][cdn]; row.m2 = flt(row.length) * flt(row.width) * flt(row.qty); frm.refresh_field("items"); } });

1 Like

:slight_smile: thanks a million its working
but i try to append other function to calculate amount = m2 * rate using below code but not working

frappe.ui.form.on(“Sales Order Item”, {
length: function(frm, cdt, cdn) {
var row = locals[cdt][cdn];
row.m2 = flt(row.length) * flt(row.width) * flt(row.qty);
frm.refresh_field(“items”);
},
width: function(frm, cdt, cdn) {
var row = locals[cdt][cdn];
row.m2 = flt(row.length) * flt(row.width) * flt(row.qty);
frm.refresh_field(“items”);
},
qty: function(frm, cdt, cdn) {
var row = locals[cdt][cdn];
row.m2 = flt(row.length) * flt(row.width) * flt(row.qty);
frm.refresh_field(“items”);
},
m2: function(frm, cdt, cdn) {
var row = locals[cdt][cdn];
row.amount = flt(row.m2) * flt(row.rate);
frm.refresh_field(“items”);
},
rate: function(frm, cdt, cdn) {
var row = locals[cdt][cdn];
row.amount = flt(row.m2) * flt(row.rate);
frm.refresh_field(“items”);
}
});

Hi @Alaa_Badri

Use code

frappe.model.set_value(cdt, cdn, 'amount', (flt(row.m2) * flt(row.rate)) )
1 Like

Thanks rohit_w for your response
but not working find my attached screen shot
and how we can make warehouse deduction from m2 not from quantity

@Mohammed_Redha @rohit_w

Thanks All Its solved :grinning: