/**
* @NApiVersion 2.1
* @NScriptType MapReduceScript
*/
define(['N/record', 'N/search', 'N/log'],
/**
* @param{record} record
* @param{search} search
*/
(record, search, log) => {
const getInputData = (context) => {
var vendorSearch = search.create({
type: record.Type.VENDOR,
filters: ["datecreated","within","previousoneweek"],
columns: ['internalid']
});
return vendorSearch;
}
function map(context) {
log.debug('map context:', context)
var vendorId = context.key;
var vendorRecord = record.load({
type: record.Type.VENDOR,
id: vendorId,
isDynamic: true,
});
// Get the name field
var vendorName = vendorRecord.getValue({
fieldId: 'companyname'
});
log.debug('company name', vendorName);
var cleanedVendorName = cleanSpecialCharacters(vendorName);
log.debug('cleaned company name', cleanedVendorName);
vendorRecord.setValue({
fieldId: 'companyname',
value: cleanedVendorName
});
var lineCount = vendorRecord.getLineCount({sublistId: "addressbook"});
for(var i = 0; i < lineCount; i++){
var vendorAddress = vendorRecord.getSublistSubrecord({
sublistId: 'addressbook',
fieldId: 'addressbookaddress',
line: i
});
var addr1 = vendorAddress.getValue({
fieldId: 'addr1'
});
var city = vendorAddress.getValue({
fieldId: 'city'
});
var addressee = vendorAddress.getValue({
fieldId: 'addressee'
});
log.debug('addr1', addr1);
var cleanedAddr1 = cleanSpecialCharacters(addr1);
log.debug('cleanedAddr1', cleanedAddr1);
var cleanedCity = cleanSpecialCharacters(city);
var cleanedAddressee = cleanSpecialCharacters(addressee);
vendorAddress.setValue({
fieldId: 'addr1',
value: cleanedAddr1
});
vendorAddress.setValue({
fieldId: 'city',
value: cleanedCity
});
vendorAddress.setValue({
fieldId: 'addressee',
value: cleanedAddressee
});
}
vendorRecord.save();
}
/**
* Utility function to remove special characters (including accent marks) from a string.
*
* @param {string} inputString - Input string with special characters
* @returns {string} - String with special characters removed
*/
function cleanSpecialCharacters(inputString) {
// Replace special characters and accent marks with their base characters
return inputString.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
}
/**
* Summarize the script execution.
*
* @param {Object} summary - Summary object
* @returns {string} - Summary message
*/
function summarize(summary) {
log.debug('Script Summary', 'Records processed: ' + summary.inputSummary.totalRecords);
}
return {
getInputData: getInputData,
map: map,
summarize: summarize
};
}
);