Apply Discount in Amount column in SO

/**

 * @NApiVersion 2.1

 * @NScriptType UserEventScript

 */

/*******************************************************************

 * MAGT-808 Apply Discount in Amount Calculations in SO

 * ***************************************************************

 *

 * Date: 24-10-2024

 *

 * Author:Jobin & Jismi IT Services LLP.

 *

 * Description: Apply Discount in Amount Calculations in SO

 *

 * Created By: JJJ0135, Jobin & Jismi IT Services LLP

 *

 * Revision History:

 * Revision 1.0 ${24-10-2024} : created initial deployment by JJ0135.

 *

 * *************************************************************

 */

define([‘N/record’],

  (record) => {

   

  /**

   * Defines the function definition that is executed after record is submitted.

   * @param {Object} scriptContext

   * @param {Record} scriptContext.newRecord – New record

   * @param {string} scriptContext.type – Trigger type; use values from the context.UserEventType enum

   * @since 2015.2

   */

  const afterSubmit = (scriptContext) => {

    try {

       

      let currentRecord = scriptContext.newRecord;

      // Load record

      currentRecord = record.load({ type: currentRecord.type, id: currentRecord.id, isDynamic: true });

      // Iterate item lines

      let itemLines = currentRecord.getLineCount({ sublistId: ‘item’ });

      log.debug(‘itemLines’, itemLines);

      if (scriptContext.type === scriptContext.UserEventType.CREATE || scriptContext.type === scriptContext.UserEventType.EDIT) {

        for (let i = 0; i < itemLines; i++) {

          //fetch rate from item line

          let itemLineRate = currentRecord.getSublistValue({ sublistId: ‘item’, fieldId: ‘rate’, line: i });

          //fectch quantity from item line

          let itemLineQuantity = currentRecord.getSublistValue({ sublistId: ‘item’, fieldId: ‘quantity’, line: i });

          // Fetch amount from item line

          let itemLineAmount = currentRecord.getSublistValue({ sublistId: ‘item’, fieldId: ‘amount’, line: i });

          log.debug(‘itemLineAmount’, itemLineAmount);

          let itemLineDiscount = currentRecord.getSublistValue({ sublistId: ‘item’, fieldId: ‘custcol4’, line: i });

          log.debug(‘itemLineDiscount’, itemLineDiscount);

          // Calculate new amount by adding discount percentage

          let newAmount = itemLineAmount -( (itemLineRate * itemLineQuantity) * (itemLineDiscount / 100));

          log.debug(‘newAmount’, newAmount);

          // Set new amount to item line

          //currentRecord.setSublistValue({ sublistId: ‘item’, fieldId: ‘amount’, line: i, value: newAmount });

          currentRecord.selectLine({ sublistId: ‘item’, line: i });

          currentRecord.setCurrentSublistValue({ sublistId: ‘item’, fieldId: ‘amount’, value: newAmount });

          currentRecord.commitLine({ sublistId: ‘item’ });

          log.debug(“Amount Updated”);

        }

      }

      // Submit record

      currentRecord.save();

        

    } catch (error) {

      log.debug(‘afterSubmit Error’, error);

    }

  };

   

  return { afterSubmit };

  });

Leave a comment

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