JS : fetch all item values in child table on upload - ashish-greycube/help GitHub Wiki

$('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",
            });
        },
    });
});
⚠️ **GitHub.com Fallback** ⚠️