Jira Code : MICL-351
Description
The below item search defines how to pass an array of item codes in the search criteria to fetch its details.
We can pass a maximum of 1000 item names in the Search criteria
Solution
/**
* Function to check whether the item exists in NetSuite
* @param itemNameArray
* @return {boolean|{pageInfo: {pageLength: number, pageIndex: number, isLastPage: boolean}, lines: *[]}|*[]}
*/
fetchItem : (itemNameArray) =>
{
try {
let itemName = [];
if ( typeof(itemNameArray) == "string")
{
itemName = `'${itemNameArray}'` //to put itemNameArray within single quotes
}
else if (itemNameArray.length > 0 && typeof(itemNameArray) == "object") {
for (let i = 0; i < itemNameArray.length; i++) {
if (i == 0) {
if (itemNameArray.length == 1) {
itemName += "'"
itemName += itemNameArray[i].trim();
itemName += "'"
}
else {
itemName += "'"
itemName += itemNameArray[i].trim();
itemName += "',"
}
}
else if (i == (itemNameArray.length - 1)) {
if (itemNameArray.length !== 1) {
itemName += "'"
itemName += itemNameArray[i].trim();
itemName += "'"
}
}
else {
itemName += "'"
itemName += itemNameArray[i].trim();
itemName += "',"
}
}
}
// Creating Item Search with multiple item name with a limit of 1000 item names can be passed to the search
let itemSearchObj = search.create({
type: "item",
filters:
[
["isinactive", "is", "F"],
"AND",
["formulanumeric: CASE WHEN {itemid} IN (" + itemName + ") THEN 1 ELSE 0 END", "equalto", "1"]
],
columns:
[
search.createColumn({name: "internalid", label: "InternalID"})
]
});
let searchResultCount = itemSearchObj.runPaged().count;
if (searchResultCount > 0) {
return DATASETS.iterateSavedSearch(itemSearchObj, DATASETS.fetchSavedSearchColumn(itemSearchObj, 'label'));
}
else {
return false;
}
}
catch (e) {
log.error("Error@fetchItem", e);
return false;
}
}