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