Hi All,
I have been struggling to have finished but did not find the right way of doing so… As you can see the below code I have actions performed on Deduction and they work well but not able to have it working when user click on Button “Calcular IRT” and when to VALIDATE.
I need to access doc.earnings and doc.deductions when VALIDATE and when user clicks the button.
HERE IS MY CODE:
frappe.ui.form.on("Salary Structure Deduction","deduction_type", function(frm, cdt, cdn) {
var d =locals[cdt][cdn]
var item=frappe.get_doc(cdt,cdn);
//Get IRT
var tbl1 = frm.doc.earnings || [];
var tbl2 = frm.doc.deductions || [];
for(var i = 0; i < tbl1.length; i++){
if (tbl1[i].earning_type=="Salario Base") {
var a =flt(tbl1[i].modified_value);
frappe.call({
method: "erpnext.hr.doctype.salary_structure.irt.get_irt",
args: {
"start":a,
},
callback: function(r) {
//msgprint(r.message[0]);
if (r.message[0].valor_inicio){
irt = flt(a)- r.message[0].valor_inicio;
irt = (irt * r.message[0].valor_percentual /100) + r.message[0].parcela_fixa;
//msgprint(r.message[0].valor_inicio + " " +r.message[0].valor_percentual + " " + r.message[0].parcela_fixa);
//inss = flt(a) * inss;
}
if (r.message[0][0]){
irt = flt(a)- r.message[0][0];
irt = (irt * r.message[0][2] /100) + r.message[0][3];
msgprint(r.message[0][0] + " " +r.message[0][1] + " " + r.message[0][2]+ " " + r.message[0][3]);
//inss = flt(a) * inss;
}
},
});
}
}
if(d.deduction_type == "IRT"){
//call IRT
frappe.model.set_value(cdt, cdn, "d_modified_amt", irt);
cur_frm.refresh_fields();
}
if(d.deduction_type == "INSS"){
frappe.model.set_value(cdt, cdn, "d_modified_amt", flt(a) * inss /100);
cur_frm.refresh_fields();
}
});
frappe.ui.form.on("Salary Structure", "validate", function (doc, cdt,cdn) {
var grid_row = cur_frm.open_grid_row();
// grid_row.fields_dict.student.set_value("Testing");
//cur_frm.script_manager.trigger("d_modified_amt",, d.name);
msgprint("form Validar " + doc + " " + cdt + " cdn " + cdn);
msgprint("Doc " + cdn);
})
frappe.ui.form.on("Salary Structure", {
refresh: function(frm, cdt, cdn) {
cur_frm.add_custom_button(__('Calcular IRT'),function(doc) {
msgprint("botao");
//Get IRT
var tbl1 = frm.doc.earnings || [];
var tbl2 = frm.doc.deductions || [];
for(var i = 0; i < tbl1.length; i++){
if (tbl1[i].earning_type=="Salario Base") {
var a =flt(tbl1[i].modified_value);
frappe.call({
method: "erpnext.hr.doctype.salary_structure.irt.get_irt",
args: {
"start":a,
},
callback: function(r) {
//msgprint(r.message);
if (r.message[0].valor_inicio){
irt = flt(a)- r.message[0].valor_inicio;
irt = (irt * r.message[0].valor_percentual /100) + r.message[0].parcela_fixa;
//msgprint(r.message[0].valor_inicio + " " +r.message[0].valor_percentual + " " + r.message[0].parcela_fixa);
//inss = flt(a) * inss;
}
if (r.message[0][0]){
irt = flt(a)- r.message[0][0];
irt = (irt * r.message[0][2] /100) + r.message[0][3];
//msgprint("IRT0 " + irt + " " + r.message[0][0] + " " +r.message[0][1] + " " + r.message[0][2]+ " " + r.message[0][3]);
//inss = flt(a) * inss;
}
},
});
}
}
for(var i = 0; i < tbl2.length; i++){
if (tbl2[i].deduction_type=="IRT") {
//msgprint(frm.doc.deductions + " I " + i);
//msgprint("IRT1 " + irt + frm.doc.deductions[i]);
}
}
}); //FIM Botao
}
});