Nicolas Bean
05/03/2022, 2:59 PM/*******************************************************************
*
*
* Name: MMO_CUE_rateCard.js
* @NApiVersion 2.x
* @NScriptType ClientScript
* Version: 0.0.1
*
*
* Author: MMO_CUE_rateCard.js
* Purpose: Sets correct rate based on the project, item, currency, location
* Script: The script record id
* Deploy: The script deployment record id
*
*
* ******************************************************************* */
define(['N/currentRecord', 'N/search', 'N/ui/dialog'], function(currentRecord, search, dialog) {
function sublistChanged(context) {
var currentRecord = context.currentRecord;
var sublistName = context.sublistId;
var index = currentRecord.getCurrentSublistIndex({sublistId:sublistName});
log.debug('index', index);
if (sublistName = 'item') {
var project = currentRecord.getCurrentSublistValue({
sublistId: sublistName,
fieldId: 'job'
});
log.debug('project', project);
var item = currentRecord.getCurrentSublistValue({
sublistId: sublistName,
fieldId: 'item'
});
log.debug('item', item);
var location = currentRecord.getCurrentSublistValue({
sublistId: sublistName,
fieldId: 'location'
});
log.debug('location', location);
var currency = currentRecord.getValue({
fieldId: 'currency'
});
log.debug('location', location);
try {
if (project != null && item != null && location != null && currency != null) {
var rate = rateLookup(item, location);
log.debug('rate', rate);
var fxrate = fxLookup(project, currency);
log.debug('fxrate', fxrate);
currentRecord.selectLine({sublistId:sublistName,line:index});
currentRecord.setCurrentSublistValue({sublistId:sublistName,fieldId:'custcolmdlz_rate_usd',value:rate});
currentRecord.setCurrentSublistValue({sublistId:sublistName,fieldId:'rate',value:rate*fxrate});
currentRecord.commitLine({sublistId:sublistName});
}
} catch (e) {
log.debug('Error reads: ', e.name + e.message);
}
return true;
}
}
function rateLookup(item, location) {
var customrecordrate_card_matrixSearchObj = search.create({
type: "customrecordrate_card_matrix",
filters: [
["custrecordlocation", "anyof", location],
"AND",
["custrecordservice_item", "anyof", item]
],
columns: [
search.createColumn({
name: "custrecordlocation",
label: "Location"
}),
search.createColumn({
name: "custrecordcurrency",
label: "Currency"
}),
search.createColumn({
name: "custrecordrate",
label: "Rate"
})
]
});
var tempres = customrecordrate_card_matrixSearchObj.run().getRange(0, 1);
log.debug('tempres', tempres);
var temprate = tempres[0].getValue({
name: 'custrecordrate'
});
log.debug('temprate', temprate)
return temprate;
}
function fxLookup(project, currency) {
var customrecordfw_proj_fx_rateSearchObj = search.create({
type: "customrecordfw_proj_fx_rate",
filters: [
["custrecordfw_proj_fx_rate_proj", "anyof", project],
"AND",
["custrecordfw_proj_fx_rate_currency", "anyof", currency]
],
columns: [
search.createColumn({
name: "custrecordfw_proj_fx_rate_proj",
label: "Project"
}),
search.createColumn({
name: "custrecordfw_proj_fx_rate_period",
label: "Period"
}),
search.createColumn({
name: "custrecordfw_proj_fx_rate_currency",
label: "Currency"
}),
search.createColumn({
name: "custrecordfw_proj_fx_rate_fx_rate",
label: "Exchange Rate"
})
]
});
var tempres = customrecordfw_proj_fx_rateSearchObj.run().getRange(0, 1);
log.debug('tempres', tempres);
var temprate = tempres[0].getValue({
name: 'custrecordfw_proj_fx_rate_fx_rate'
});
log.debug('temprate', temprate)
return temprate;
}
return {
sublistChanged: sublistChanged
};
});
battk
05/03/2022, 3:03 PMNicolas Bean
05/03/2022, 3:12 PMbattk
05/03/2022, 3:24 PMbattk
05/03/2022, 3:24 PMNicolas Bean
05/03/2022, 3:24 PMbattk
05/03/2022, 3:26 PMbattk
05/03/2022, 3:27 PMbattk
05/03/2022, 3:27 PMNicolas Bean
05/03/2022, 3:27 PMNicolas Bean
05/03/2022, 3:28 PMbattk
05/03/2022, 3:28 PMbattk
05/03/2022, 3:28 PMbattk
05/03/2022, 3:30 PMNicolas Bean
05/03/2022, 3:31 PMbattk
05/03/2022, 3:34 PMbattk
05/03/2022, 3:34 PMbattk
05/03/2022, 3:34 PMbattk
05/03/2022, 3:36 PMbattk
05/03/2022, 3:38 PMbattk
05/03/2022, 3:39 PMNicolas Bean
05/03/2022, 3:39 PMNicolas Bean
05/03/2022, 3:39 PMbattk
05/03/2022, 3:40 PMbattk
05/03/2022, 3:40 PM