This code snippet will help you create a dynamic CSV file from the search. the search is created in NetSuite we have loaded results from NetSuite using loading search.
/**
* @NApiVersion 2.1
* @NScriptType workflowactionscript
*/
define(['N/search', 'N/record', 'N/encode', 'N/file'], function (search, record, encode, file) {
function onAction(scriptContext) {
try {
var new_record = scriptContext.newRecord;
var ifRecId = new_record.id;
var ifTranID = new_record.getValue({ fieldId: 'tranid' });
var courierSelectId = new_record.getValue({ fieldId: 'custbody_shipping_courier_select' });
log.debug("courierSelectId", courierSelectId);
if (courierSelectId) {
var courierCheckResult = courierCheck(courierSelectId)
log.debug("courierCheckResult", courierCheckResult);
if (courierCheckResult == 20474) {
var fileName = 'dpd-' + ifTranID + '.csv';
var resultObject = searchIfCSV(ifRecId);
var fileObj = file.create({ name: fileName, fileType: file.Type.CSV, contents: resultObject, encoding: file.Encoding.UTF8, folder: 3582790 });
var fileId = fileObj.save();
log.debug("fileId", fileId);
new_record.setValue({ fieldId: 'custbody_tntfile', value: fileId, ignoreFieldChange: true });
}
}
} catch (error) {
log.debug('ERROR @ onAction', error);
}
}
function courierCheck(courierSelectId) {
try {
var courierType = null;
var customrecord_shipping_listSearchObj = search.create({
type: "customrecord_shipping_list",
filters:
[
["internalid", "anyof", courierSelectId]
],
columns:
[
search.createColumn({ name: "custrecord_shipping_courier", label: "Courier" })
]
});
var searchResultCount = customrecord_shipping_listSearchObj.runPaged().count;
log.debug("customrecord_shipping_listSearchObj result count", searchResultCount);
if (searchResultCount != 0) {
customrecord_shipping_listSearchObj.run().each(function (result) {
courierType = result.getValue({ name: "custrecord_shipping_courier", label: "Courier" }) || '';
return true;
});
return courierType
} else {
return false
}
} catch (error) {
log.debug('courierCheck @ onAction', error);
}
}
function searchIfCSV(ifRecId) {
try {
var itemfulfillmentSearchObj = search.load({
id: 'customsearch_item_fulfilment_for_dpd'
});
var filters = itemfulfillmentSearchObj.filters; //reference Search.filters object to a new variable
var custFilter = search.createFilter({ //create new filter
name: 'internalid',
operator: search.Operator.ANYOF,
values: ifRecId
});
filters.push(custFilter); //add the filter using .push() method
log.debug('itemfulfillmentSearchObj', itemfulfillmentSearchObj)
var headArray = [];
for (var i = 0; i < itemfulfillmentSearchObj.columns.length; i++) {
headArray.push(itemfulfillmentSearchObj.columns[i].label)
}
log.debug('headArray', headArray)
var csvFile = headArray.toString() + '\r\n';
log.debug('csvFile', csvFile)
var searchResultCount = itemfulfillmentSearchObj.runPaged().count;
itemfulfillmentSearchObj.run().each(function (result) {
for (var i = 0; i < itemfulfillmentSearchObj.columns.length; i++) {
csvFile += (('"'+ (result.getText(itemfulfillmentSearchObj.columns[i]) || result.getValue(itemfulfillmentSearchObj.columns[i]))+'"').replace(',',''));
csvFile += ',';
}
csvFile += '\r\n';
return true;
});
log.debug('csvFile', csvFile)
return csvFile;
} catch (error) {
log.debug('ERROR @ searchIfCSV', error);
}
}
return {
onAction: onAction
}
});