JIRA Code: BTN-564
Description:
We need to create vendor payment for vendor bills using script. The Vendors bills to be transformed is given in a search. So we will load this search and process the bills. We transform the bills to the vendor bill payments.
/**
* @NApiVersion 2.x
* @NScriptType MapReduceScript
* @NModuleScope SameAccount
*/
define(['N/auth', 'N/config', 'N/crypto', 'N/currency', 'N/email', 'N/encode', 'N/error', 'N/file', 'N/format', 'N/http', 'N/https', 'N/plugin', 'N/record', 'N/redirect', 'N/render', 'N/runtime', 'N/search', 'N/sso', 'N/task', 'N/transaction', 'N/ui', 'N/ui/dialog', 'N/ui/message', 'N/ui/serverWidget', 'N/url', 'N/workflow', 'N/xml'],
/**
* @param {N} N
* @param {auth} auth
* @param {config} config
* @param {crypto} crypto
* @param {currency} currency
* @param {email} email
* @param {encode} encode
* @param {error} error
* @param {file} file
* @param {format} format
* @param {http} http
* @param {https} https
* @param {plugin} plugin
* @param {portlet} portlet
* @param {record} record
* @param {redirect} redirect
* @param {render} render
* @param {runtime} runtime
* @param {search} search
* @param {sso} sso
* @param {task} task
* @param {transaction} transaction
* @param {ui} ui
* @param {dialog} dialog
* @param {message} message
* @param {serverWidget} serverWidget
* @param {url} url
* @param {workflow} workflow
* @param {xml} xml
*/
function(auth, config, crypto, currency, email, encode, error, file, format, http, https, plugin, record, redirect, render, runtime, search, sso, task, transaction, ui, dialog, message, serverWidget, url, workflow, xml) {
/**
* Marks the beginning of the Map/Reduce process and generates input data.
*
* @typedef {Object} ObjectRef
* @property {number} id - Internal ID of the record instance
* @property {string} type - Record type id
*
* @return {Array|Object|Search|RecordRef} inputSummary
* @since 2015.1
*/
function getInputData() {
return search.load({
id: 'customsearch_jj_create_vendor_payment'
});
}
/**
* Executes when the reduce entry point is triggered and applies to each group.
*
* @param {ReduceSummary} context - Data collection containing the groups to process through the reduce stage
* @since 2015.1
*/
function reduce(context) {
try
{
var objRecord = record.transform({
fromType: record.Type.VENDOR_BILL,
fromId: context.key,
toType: record.Type.VENDOR_PAYMENT,
isDynamic: true,
});
objRecord.save();
log.debug("objRecord",objRecord);
}
catch(err)
{
log.debug("err",err);
}
}
/**
* Executes when the summarize entry point is triggered and applies to the result set.
*
* @param {Summary} summary - Holds statistics regarding the execution of a map/reduce script
* @since 2015.1
*/
function summarize(summary) {
log.debug("summary",summary);
}
return {
getInputData: getInputData,
reduce: reduce,
summarize: summarize
};
});