/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*/
define([‘N/record’],
/**
* @param{record} record
*/
(record) => {
/**
* Defines the function definition that is executed before record is submitted.
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord – New record
* @param {Record} scriptContext.oldRecord – Old record
* @param {string} scriptContext.type – Trigger type; use values from the context.UserEventType enum
* @since 2015.2
*/
const beforeSubmit = (context) => {
if (context.type !== context.UserEventType.CREATE && context.type !== context.UserEventType.EDIT) {
return;
}
const currentRecord = context.newRecord;
let currencyId = currentRecord.getValue({ fieldId: ‘currency’ });
log.debug(“currencyId”, currencyId);
// Get the itemvendor sublist details
let itemVendorCount = currentRecord.getLineCount({ sublistId: ‘itemvendor’ });
log.debug(“itemVendorCount”, itemVendorCount);
let preferredVendorDetails = null;
// Loop through the sublist to find the preferred vendor
for (let i = 0; i < itemVendorCount; i++) {
let isPreferred = currentRecord.getSublistValue({
sublistId: ‘itemvendor’,
fieldId: ‘preferredvendor’,
line: i
});
if (isPreferred === true || isPreferred === ‘T’) {
preferredVendorDetails = {
vendor: currentRecord.getSublistValue({
sublistId: ‘itemvendor’,
fieldId: ‘vendor’,
line: i
}),
purchasePrice: currentRecord.getSublistValue({
sublistId: ‘itemvendor’,
fieldId: ‘purchaseprice’,
line: i
})
};
break;
}
}
if (!preferredVendorDetails || isNaN(preferredVendorDetails.purchasePrice)) {
throw (‘No Preferred Vendor Found in the Item Record. Please choose Preferred Vendor ‘);
}
let basePrice = (preferredVendorDetails.purchasePrice / (1 – 0.50)).toFixed(2);
let discountPrice = (preferredVendorDetails.purchasePrice / (1 – 0.30)).toFixed(2);
let onlinePrice = (preferredVendorDetails.purchasePrice / (1 – 0.30)).toFixed(2);
log.debug(“Pricing Calculations”, { basePrice, discountPrice, onlinePrice });
// Update the pricing sublist
const price1Count = currentRecord.getLineCount({ sublistId: ‘price1’ });
for (let i = 0; i < price1Count; i++) {
const priceLevel = currentRecord.getSublistValue({
sublistId: ‘price1’,
fieldId: ‘pricelevel’,
line: i
});
if (priceLevel === ‘1’) { // Base Price
currentRecord.setSublistValue({
sublistId: ‘price1’,
fieldId: ‘price_1_’,
line: i,
value: basePrice
});
} else if (priceLevel === ‘5’) { // Online Price
currentRecord.setSublistValue({
sublistId: ‘price1’,
fieldId: ‘price_1_’,
line: i,
value: onlinePrice
});
} else if (priceLevel === ’13’) { // Discount Price
currentRecord.setSublistValue({
sublistId: ‘price1’,
fieldId: ‘price_1_’,
line: i,
value: discountPrice
});
}
}
}
return { beforeSubmit }
});