$('div[data-fieldname="items"] button.grid-upload.btn.btn-xs.btn-secondary:contains("Upload")').after(
'<button class="grid-upload btn btn-xs btn-secondary custom-btn">Upload Sp.</button>')
$('button.grid-upload.btn.btn-xs.btn-secondary.custom-btn').on("click", function () {
const value_formatter_map = {
Date: (val) => (val ? frappe.datetime.user_to_str(val) : val),
Int: (val) => cint(val),
Check: (val) => cint(val),
Float: (val) => flt(val),
Currency: (val) => flt(val),
};
new frappe.ui.FileUploader({
as_dataurl: true,
allow_multiple: false,
on_success(file) {
var data = frappe.utils.csv_to_array(
frappe.utils.get_decoded_string(file.dataurl)
);
// row #2 contains fieldnames;
var fieldnames = data[2];
var childtablename = 'items'
var child_options = 'Quotation Item'
cur_frm.clear_table(childtablename);
$.each(data, (i, row) => {
if (i > 6) {
var blank_row = true;
$.each(row, function (ci, value) {
if (value) {
blank_row = false;
return false;
}
});
if (!blank_row) {
var d = cur_frm.add_child(childtablename);
console.log(d, 'd--')
$.each(row, (ci, value) => {
var fieldname = fieldnames[ci];
var df = frappe.meta.get_docfield(
child_options,
fieldname
);
if (df) {
if (fieldname == 'item_code') {
console.log(fieldname, df, 'qqdf', value_formatter_map[df.fieldtype] ? value_formatter_map[df.fieldtype](value) : value)
frappe.model.set_value(d.doctype, d.name, "item_code", value_formatter_map[df.fieldtype] ? value_formatter_map[df.fieldtype](value) : value)
} else {
d[fieldnames[ci]] = value_formatter_map[
df.fieldtype
] ?
value_formatter_map[df.fieldtype](value) :
value;
}
}
});
}
}
});
cur_frm.refresh_field(childtablename);
frappe.msgprint({
message: __("Table is updated via custom code."),
title: __("Success"),
indicator: "green",
});
},
});
});