Hi
I have a custom field deposit_required on DocType Quotation which should be 60% of the grand total
deposit_required = grand_total*0.6
The following script has updated all existing quotes but when I start a new quote I can’t get the value for deposit_required
cur_frm.cscript.deposit_required = function(doc) {
rate_calc = (doc.grand_total / 100 * 60);
doc.deposit_required = rate_calc;
refresh_field(“deposit_required”);
}
Appreciate any help.
1 Like
rmehta
March 13, 2015, 4:01am
2
Should work. Try the new API:
try:
frappe.ui.form.on("Quotation", "deposit_required", function(frm) {
frm.set_value("deposit_required", frm.doc.grand_total * 0.6);
});
Also use console.log to debug.
3 Likes
Thank you! This works now but I do have to type something into the field and click away for it to refresh.
Would this work the same on a child table within a form? I want to do calculations on Quotation Item and I’ve used the code you suggested above but it’s not calculating.
frappe.ui.form.on(“Quotation Item”, “full_price”, function(frm) {
frm.set_value(“full_price”, frm.doc.qty * frm.doc.price_list_rate);
});
rmehta
March 16, 2015, 6:16am
4
Its a bit different for child items.
frappe.ui.form.on("Quotation Item", "full_price", function(frm, doctype, name) {
var row = locals[doctype][name];
row.full_price = row.qty * row.price_list_rate;
refresh_field("items");
});
8 Likes
jof2jc
November 19, 2015, 3:53am
5
@rmehta using your sample, I’d like to calculate net rate in Purchase Receipt Item based on multilevel discounts. For testing, I created new field : discount_percentage2
Then add below codes in Purchase Receipt Item doctype:
frappe.ui.form.on("Purchase Receipt Item", "discount_percentage2", function(frm, doctype, name) {
var row = locals[doctype][name];
row.rate = row.discount_percentage2/100 * flt(row.price_list_rate);
refresh_field("items");
});
When I change discount_percentage2, nothing’s happened…what wrong? No clues in console…
jof2jc:
frappe.ui.form.on(“Purchase Receipt Item”, “discount_percentage2”, function(frm, doctype, name) {
frappe.ui.form.on("Purchase Receipt", "discount_percentage2", function(frm, doctype, name) {
Write Purchase Receipt
instead of Purchase Receipt Item
jof2jc
November 19, 2015, 7:15am
7
frappe.ui.form.on("Purchase Receipt", "discount_percentage2", function(frm, doctype, name) {
var row = locals[doctype][name];
row.rate = row.discount_percentage2/100 * flt(row.price_list_rate);
refresh_field("items");
});
@kolate_sambhaji still not working. I put the custom script in Purchase Receipt Item.
@jof2jc test this script and then modify according to yours, also Put this script on Purchase Receipt.
In this script, I am changing warehouse on change of item_code.
frappe.ui.form.on("Purchase Receipt Item", "item_code", function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
d.warehouse="Finished Goods - IP";
refresh_field('warehouse', d.name, 'items');
msgprint(d.item_code);
})
mrmo
December 8, 2015, 9:06am
9
@kolate_sambhaji @rmehta , Hi guys, I have items that are sold by piece units, but we need to input weight * price per weight = total price per weight, just to print in the sales order with no extra function in the system, so I have made 3 custom fields:
item_weight (manual input)
item_weight_price (manual input)
item_weight_price_total (auto input “item_weight * item_weight_price = item_weight_price_total ”)
I use this script that I took from above:
frappe.ui.form.on(“Sales Order Item”, “item_weight_price_total”, function(frm, doctype, name) {
var row = locals[doctype][name];
row.item_weight_price_total = row.item_weight * row.item_weight_price;
refresh_field(“item_weight_price_total”);
});
Hope you can help me out, thank you so much!
Mo
write script on item_weight and item_weight_price,
So on changing item_weight/item_weight_price, item_weight_price_total will be calculated
frappe.ui.form.on("Sales Order Item", "item_weight", function(frm, doctype, name) {
var row = locals[doctype][name];
row.item_weight_price_total = row.item_weight * row.item_weight_price;
refresh_field("item_weight_price_total");
});
frappe.ui.form.on("Sales Order Item", "item_weight_price", function(frm, doctype, name) {
var row = locals[doctype][name];
row.item_weight_price_total = row.item_weight * row.item_weight_price;
refresh_field("item_weight_price_total");
});
1 Like
mrmo
December 8, 2015, 1:16pm
11
@kolate_sambhaji thank you for your help.
Your code works only if I change
refresh_field(“item_weight_price_total”);
into the following:
refresh_field(“items”);
But then I have to enter something in field “item_weight_price_total” manually to refresh. I appreciate your help, thanks.
mrmo
December 8, 2015, 1:57pm
12
Hi @kolate_sambhaji I have got it set with the following script
frappe.ui.form.on(“Sales Order Item”, “item_weight”, function(frm, doctype, name) {
var row = locals[doctype][name];
row.item_weight_price_total = row.item_weight * row.item_weight_price;
refresh_field(“items”);
});
frappe.ui.form.on(“Sales Order Item”, “item_weight_price”, function(frm, doctype, name) {
var row = locals[doctype][name];
row.item_weight_price_total = row.item_weight * row.item_weight_price;
refresh_field(“items”);
});
Now it refreshes automatically, strange but it works. Thanks for your kindness.
@mrmo
if you use
frappe.model.set_value(cdt, cdn, "field_name", value);
then no need to refresh_field
1 Like
mrmo
December 10, 2015, 3:00am
14
@kolate_sambhaji Could you please give a hint where to insert this
frappe.model.set_value(cdt, cdn, “field_name”, value);
Thanks
jof2jc
December 10, 2015, 4:44am
15
frappe.ui.form.on("Sales Order Item", "item_weight", function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
frappe.model.set_value(cdt, cdn, "item_weight_price_total", d.item_weight * d.item_weight_price);
});
3 Likes
JamesE
February 4, 2016, 12:47pm
17
I’d like to do something extremely similar to this with Material Request Items, but I can’t find the file to insert this code.
Do you just insert the python into the Material Request doctype, or where?
mrmo
February 16, 2016, 2:46pm
18
@JamesE You insert it into the custom script which you can find in the Setup module under customize
ahmed
August 31, 2016, 3:48pm
19
Hello @Roy_Stephen , how did you sort our the refresh issue you have? I have the same problem.
Hi Ahmed
I never got it working perfectly and it is long but this was my last effort
I’m sure there’s a better way but I haven’t worked on it for months now.
Hope it helps
1 Like