The preferred vendor is set based on lowest purchase price using a user event script.
/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*
**************************************************************************************************************************************
* L+O Technologies
*
* LOTEC-13: Script Development for setting preferred vendor with lowewst purchase price
*
************************************************************************************************************************************
* Author: Jobin & Jismi IT Services
*
* Date Created : September 26,2023
*
* Created By: Jobin & Jismi IT Services LLP
*
* Description : UserEvent Script for setting preferred vendor with lowewst purchase price
*
* Script Details : JJ UE Preferred vendor LOTEC-13
*
* REVISION HISTORY
* @version {1.0} - Created the initial build by JJ0262
*/
define(['N/record', 'N/search', 'N/currentRecord'],
/**
* @param{record} record
* @param{search} search
* @param{currentRecord} currentRecord
*/
(record, search, currentRecord) => {
/**
* 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 = (scriptContext) => {
let newRec = scriptContext.newRecord;
let comparePrice, minimumPrice, key, lineNumber, lineNum, compareSubsidiary, sub;
let priceObj = {};
let lineCount = newRec.getLineCount({
sublistId: 'itemvendor'
});
for (let i = 0; i < lineCount; i++) {
newRec.setSublistValue({
sublistId: 'itemvendor',
fieldId: 'preferredvendor',
value: false,
line: i
});
}
for (let j = 0; j < lineCount; j++) {
let purchasePrice = newRec.getSublistValue({
sublistId: 'itemvendor',
fieldId: 'purchaseprice',
line: j
});
let subsidiary = newRec.getSublistValue({
sublistId: 'itemvendor',
fieldId: 'subsidiary',
line: j
});
if(purchasePrice != 0){
if (!priceObj[subsidiary]) {
let temp = {};
temp.price = purchasePrice;
temp.index = j
priceObj[subsidiary] = temp
} else {
let oldPrice = priceObj[subsidiary].price
if (Number(purchasePrice) < Number(oldPrice)) {
priceObj[subsidiary].price = purchasePrice;
priceObj[subsidiary].index = j
}
}
}
}
for(let k=0;k<lineCount;k++){
let subsidiaryOne = newRec.getSublistValue({
sublistId: 'itemvendor',
fieldId: 'subsidiary',
line: k
});
if(k == priceObj[subsidiaryOne].index){
newRec.setSublistValue({
sublistId: 'itemvendor',
fieldId: 'preferredvendor',
value: true,
line: k
});
}
}
}
return { beforeSubmit }
});