When adding row, I need the Start Odo to be automatically fetched based on previous row’s End Odo. This script if not working for me, can somebody help me?
frappe.ui.form.on('Fuel Consumption Monitoring', {
refresh(frm) {
frappe.ui.form.on("Fuel Monitoring Table", {
fuel_monitoring_details_add: function(frm, cdt, cdn) {
var d = frm.doc.fuel_monitoring_details;
var total = 0;
$.each(frm.doc.fuel_monitoring_details || [], function(i, d) {
total = d[i-1].end_odo;
});
frm.set_value(d.doctype, d.name, "start_odo", total);
}
});
}
});
my working code for your kind reference, Roll Output Qty is the Child DocType. it implements a custom sequential index column which supports special char like -.
frappe.ui.form.on('Roll Output Qty', { //子表代码需定义在主表单据类型中
items_add: function(frm, cdt, cdn) {
let row = locals[cdt][cdn];
if (!row.roll_id){
let previous_row_idx = frm.doc.items.length - 2;
let previous_row_roll_id = frm.doc.items[previous_row_idx].roll_id;
if (!previous_row_roll_id){
return;
}
if (previous_row_roll_id.includes("-")){
// 获取最后一个短横线 "-" 后的数字
let lastNum = previous_row_roll_id.match(/-\d+$/)[0].slice(1);
let numLength = lastNum.length;
// 将字符串转为数字并加1
lastNum = parseInt(lastNum) + 1;
let newNum = lastNum.toString().padStart(numLength, "0");
// 将新的数字添加到文本串中并返回
row.roll_id = previous_row_roll_id.replace(/-\d+$/, "-" + newNum.toString());
} else {
let lastNum = previous_row_roll_id;
let numLength = lastNum.length;
// 将字符串转为数字并加1
lastNum = parseInt(lastNum) + 1;
let newNum = lastNum.toString().padStart(numLength, "0");
// 将新的数字添加到文本串中并返回
row.roll_id = newNum;
}
}
}
})