(function executeRule(current, previous /*null when async*/ ) {
var formatfile = “Excel”;
var gr = new GlideRecord(‘sys_attachment’);
gr.addQuery(‘table_sys_id’, current.sys_id.toString());
gr.query();
if (gr.next()) {
if (gr.getValue(‘file_name’).indexOf(‘csv’) != -1) {
formatfile = “CSV”;
}

var parser = new sn_impex.GlideExcelParser();
var attachment = new GlideSysAttachment();
var attachmentStream = attachment.getContentStream(gr.sys_id.toString());
// parser.setSource(attachmentStream);
parser.parse(attachmentStream);
var list_sheet_name = parser.getSheetNames();

var sheetnumber = ‘1’;
if (list_sheet_name[0] == ‘Summary’) {

sheetnumber = 1;
var headers = parser.getColumnHeaders();
var getMonth = headers[3].trim().toLowerCase();
if (getMonth != ”) {
var monthSplit = getMonth.split(‘ ‘);
current.get_month = monthSplit[0].toString();
current.update();
}

} else if (list_sheet_name[1] == ‘Adjustment’) {
sheetnumber = 2;
} else if (list_sheet_name[2] == ‘Inv’) {
sheetnumber = 3;
} else if (list_sheet_name[3] == ‘Under Other Proj’ || list_sheet_name[3] == ‘Details’) {
sheetnumber = 4;
}
}

var importSetTableName = current.selected_transform_map.source_table.toString();
var transformMapIDs = current.selected_transform_map;
var applicatonScope = “EM”;
var data = new GlideRecord(‘sys_data_source’);
data.initialize();
data.name = current.sys_id;
data.import_set_table_name = importSetTableName;
data.file_retrieval_method = “Attachment”;
data.type = “File”;
data.format = formatfile;
data.header_row = 1;
data.sheet_number = 1;
data.sys_package.setDisplayValue(applicatonScope);
data.sys_scope.setDisplayValue(applicatonScope);
var dataSourceID = data.insert();
var grSheet = new GlideRecord(‘sys_data_source’);
grSheet.addEncodedQuery(‘sys_id=’ + dataSourceID);
grSheet.query();
if (grSheet.next()) {
grSheet.sheet_number = sheetnumber;
grSheet.update();
}
new global.EmailFileImportUtils().scheduleImport(dataSourceID, transformMapIDs);
GlideSysAttachment.copy(‘x_g_ss2_em_invoice_data_validation’, current.sys_id, ‘sys_data_source’, dataSourceID);

})(current, previous);