/**
* @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 };
});