Item saved search to fetch the item details by passing an array of items

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;
                }
            }

Leave a comment

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