Multiple item names in item search criteria

Function

/**
 * @description Multiple item names can be included in a single search limit is 1000 names per search via suitescript.
 * @param {Array} itemNameArray Array of item names (1000 item names)
 * @return {Object}
 */
function itemSearchforVendorUpdate(itemNameArray) {
    try {
        var b = "";
        if (itemNameArray.length > 0) {
            for (var i = 0; i < itemNameArray.length; i++) {
                if (i == 0) {
                    if (itemNameArray.length == 1) {
                        b += "'"
                        b += itemNameArray[i].trim();
                        b += "'"
                    } else {
                        b += "'"
                        b += itemNameArray[i].trim();
                        b += "',"
                    }
                } else if (i == (itemNameArray.length - 1)) {
                    if (itemNameArray.length !== 1) {
                        b += "'"
                        b += itemNameArray[i].trim();
                        b += "'"

                    }
                } else {
                    b += "'"
                    b += itemNameArray[i].trim();
                    b += "',"
                }
            }
            var itemSearchObj = search.create({
                type: "item",
                filters:
                    [
                        ["formulanumeric: CASE WHEN {name} IN (" + b + ") THEN 1 ELSE 0 END", "equalto", "1"],
                        "AND",
                        ["isinactive", "is", "F"]
                    ],
                columns:
                    [
                        search.createColumn({name: "internalid", label: "Internal ID"}),
                        search.createColumn({
                            name: "itemid",
                            sort: search.Sort.ASC,
                            label: "Name"
                        })
                    ]
            });
            var resultObj = {};
            var myPagedData = itemSearchObj.runPaged();
            myPagedData.pageRanges.forEach(function (pageRange) {
                var myPage = myPagedData.fetch({index: pageRange.index});
                myPage.data.forEach(function (result) {
                    var internalId = result.getValue({
                        name: "internalid", label: "Internal ID"
                    });
                    var itemName = result.getValue({
                        name: "itemid",
                        sort: search.Sort.ASC,
                        label: "Name"
                    });
                    resultObj[itemName] = internalId;
                });
            });
            return resultObj;
        } else {
            return {}
        }
    } catch (err) {
        log.error('error @ item search',err)
    }
}

Leave a comment

Your email address will not be published. Required fields are marked *