Hi Guys, I’m planning to create some Risk Management forms, due to some regulatory needs I have, and… I don’t want to use Excel anymore.
So, I did a Doctype called “Risk”, and trying to use ‘severity’ and ‘probability’ as criteria, to evaluate risk.
The ‘qualification’ need to be the multiplication of those fields… So, i did, in Client Script (but isn’t working) a formula to calculate it:
frappe.ui.form.on("Risk", "cur_frm.severity", function(frm) {
frm.set_value("cur_frm.initial_risk_qualification", (flt(cur_frm.severity) * flt(cur_frm.probability)));
refresh_field("cur_frm.initial_risk_qualification");
});
frappe.ui.form.on("Risk", "cur_frm.probability", function(frm) {
frm.set_value("cur_frm.actual_risk_qualification", (flt(cur_frm.probability) * flt(cur_frm.severity)));
refresh_field("cur_frm.actual_risk_qualification");
});
So, I need to understand 2 thing, if somebody can help me:
- Is it possible to use those “rating” docfields in this logic? (I saw in the console, and the values are passing normally).
- The JS is not working. Is it possible to do in Client side? Where am I screwing with?
- Is it possible to use this logic to populate the ‘risk_qualification_before and after_treatment’? (maybe dividing by 5)?
Thanks!!
Francisco Mesquita
3 Likes
I am not sure if this will help but try
to remove cur_frm
from your code:
to
frappe.ui.form.on("Risk", "severity", function(frm) {
frm.set_value("initial_risk_qualification", (flt(frm.doc.severity) * flt(frm.doc.probability)));
refresh_field("initial_risk_qualification");
});
frappe.ui.form.on("Risk", "probability", function(frm) {
frm.set_value("actual_risk_qualification", (flt(frm.doc.probability) * flt(frm.doc.severity)));
refresh_field("actual_risk_qualification");
});
1 Like
@xickomesquita In believe that you can achieve what you want like this.
frappe.ui.form.on('Risk', {
severity: function(frm) {
frm.set_value('initial_risk_qualification', flt(frm.doc.severity) * flt(frm.doc.probability));
frm.refresh_field('initial_risk_qualification');
},
probability: function(frm) {
frm.set_value('actual_risk_qualification', flt(frm.doc.probability) * flt(frm.doc.severity));
frm.refresh_field('actual_risk_qualification');
}
});
1 Like
Understood the sintax now. (probabily there is a better way to write it, but…) Thanks!!
frappe.ui.form.on('Risk', {
probability: function(frm) {
frm.set_value('initial_risk_qualification', flt(frm.doc.severity) * flt(frm.doc.probability));
frm.set_value('risk_qualification_before_treatment', (flt(frm.doc.severity) * flt(frm.doc.probability)) / 5);
frm.refresh_field('initial_risk_qualification');
frm.refresh_field('risk_qualification_before_treatment');
},
probability_after_treatment: function(frm) {
frm.set_value('actual_risk_qualification', flt(frm.doc.severity_after_treatment) * flt(frm.doc.probability_after_treatment));
frm.set_value('risk_qualification_after_treatment', (flt(frm.doc.severity_after_treatment) * flt(frm.doc.probability_after_treatment)) / 5);
frm.refresh_field('actual_risk_qualification');
frm.refresh_field('risk_qualification_after_treatment');
},
severity: function(frm) {
frm.set_value('initial_risk_qualification', flt(frm.doc.severity) * flt(frm.doc.probability));
frm.set_value('risk_qualification_before_treatment', (flt(frm.doc.severity) * flt(frm.doc.probability)) / 5);
frm.refresh_field('initial_risk_qualification');
frm.refresh_field('risk_qualification_before_treatment');
},
severity_after_treatment: function(frm) {
frm.set_value('actual_risk_qualification', flt(frm.doc.severity_after_treatment) * flt(frm.doc.probability_after_treatment));
frm.set_value('risk_qualification_after_treatment', (flt(frm.doc.severity_after_treatment) * flt(frm.doc.probability_after_treatment)) / 5);
frm.refresh_field('actual_risk_qualification');
frm.refresh_field('risk_qualification_after_treatment');
}
});
By the way, about the third question, the answer is yeap!
Thanks!