Delete Inventory Transfer Records

Client needs to delete the inventory transfer records.

/**
 * @NApiVersion 2.1
 * @NScriptType MapReduceScript
 */
define(['N/record', 'N/search'],
    /**
 * @param{record} record
 * @param{search} search
 */
    (record, search) => {
        /**
         * Defines the function that is executed at the beginning of the map/reduce process and generates the input data.
         * @param {Object} inputContext
         * @param {boolean} inputContext.isRestarted - Indicates whether the current invocation of this function is the first
         *     invocation (if true, the current invocation is not the first invocation and this function has been restarted)
         * @param {Object} inputContext.ObjectRef - Object that references the input data
         * @typedef {Object} ObjectRef
         * @property {string|number} ObjectRef.id - Internal ID of the record instance that contains the input data
         * @property {string} ObjectRef.type - Type of the record instance that contains the input data
         * @returns {Array|Object|Search|ObjectRef|File|Query} The input data to use in the map/reduce process
         * @since 2015.2
         */

        const getInputData = (inputContext) => {
            try {

                let inventorytransferSearchObj = search.create({
                    type: "inventorytransfer",
                    filters:
                        [
                            ["type", "anyof", "InvTrnfr"],
                            "AND",
                            ["memo", "startswith", "Move Unsellable Returns to Quarantine"],
                            "AND",
                            ["mainline", "is", "T"],
                            // "AND",
                            // ["subsidiary", "anyof", "15", "8", "26", "25", "7"],
                            //     "AND",
                            //    ["internalid", "anyof", "5990144"]
                        ],
                    columns:
                        [
                            search.createColumn({ name: "externalid", label: "External ID" }),
                            search.createColumn({
                                name: "ordertype",
                                sort: search.Sort.ASC,
                                label: "Order Type"
                            }),
                            search.createColumn({ name: "internalid", label: "Internal ID" }),
                            search.createColumn({ name: "type", label: "Type" }),

                        ]
                });
                let searchResultCount = inventorytransferSearchObj.runPaged().count;
                if (searchResultCount > 0) {
                    return inventorytransferSearchObj;
                }
                else
                    return []


            }
            catch (err) {
                log.error("error@getInputData", err)
                return []
            }

        }


        /**
         * Defines the function that is executed when the reduce entry point is triggered. This entry point is triggered
         * automatically when the associated map stage is complete. This function is applied to each group in the provided context.
         * @param {Object} reduceContext - Data collection containing the groups to process in the reduce stage. This parameter is
         *     provided automatically based on the results of the map stage.
         * @param {Iterator} reduceContext.errors - Serialized errors that were thrown during previous attempts to execute the
         *     reduce function on the current group
         * @param {number} reduceContext.executionNo - Number of times the reduce function has been executed on the current group
         * @param {boolean} reduceContext.isRestarted - Indicates whether the current invocation of this function is the first
         *     invocation (if true, the current invocation is not the first invocation and this function has been restarted)
         * @param {string} reduceContext.key - Key to be processed during the reduce stage
         * @param {List<String>} reduceContext.values - All values associated with a unique key that was passed to the reduce stage
         *     for processing
         * @since 2015.2
         */
        const reduce = (reduceContext) => {

            try {
                let dataObj = reduceContext.values.map(JSON.parse)
                let deleteid = dataObj[0].id;
                log.debug("deleteid", deleteid)
                let recordType = dataObj[0].recordType;
                // log.debug("recordType",recordType)

                record.delete({
                    id: deleteid,
                    type: recordType
                });

            }
            catch (err) {
                log.error("error@reduce", err)
            }

        }


        return { getInputData, reduce }

    });

Leave a comment

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