Script for setting up the preferred vendor in the item price based on the lowest purchase price.

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 }
 });

Leave a comment

Your email address will not be published. Required fields are marked *