Item level discount field in sales order

Description

Need to create a custom field in NetSuite sales order at the item level
The field will contain the amount after the discount.

Deliverables :

In a sales order, create a custom field (discount) at the item level (Sandbox and Production)

/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*/
/*******************************************************************
* Yallatoys | YAL-7 | Item level discount field in sales order
* *****************************************************************
*
* Date: 12/04/2022
*
* Author: Athul Krishna, Jobin and Jismi IT Services LLP
*
* REVISION HISTORY
*
* Revision
*
* Description: Item level discount field in sales order
*
* ****************************************************************/
define(['N/record','N/search'],
/**
* @param{record} record
* @param{sftp} sftp
*/
(record,search) => {


/**
* Defines the function definition that is executed after 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 afterSubmit = (scriptContext) => {
try {
let currentRec = scriptContext.newRecord;
let curRec=record.load({
type: record.Type.SALES_ORDER,
id: currentRec.id
});
log.debug("new Record", curRec);
let line_count = curRec.getLineCount({
sublistId: 'item'
});
log.debug("Line Count", line_count);

for (var i = 0; i < line_count; i++) {
let amount = curRec.getSublistValue({
sublistId: 'item',
fieldId: 'grossamt',
line: i
});
var next_amount;
if(i+1<line_count) {

let item = curRec.getSublistValue({
sublistId: 'item',
fieldId: 'itemtype',
line: i + 1
});
log.debug("Item", item);
if(item==='Discount'){
next_amount=curRec.getSublistValue({
sublistId: 'item',
fieldId: 'grossamt',
line: i+1
});
amount=amount+next_amount;
log.debug("After Discount",amount)
}
}
let itemOut= curRec.getSublistValue({
sublistId: 'item',
fieldId: 'itemtype',
line: i
});
if(itemOut==='Discount'){
amount=0;
}
amount=amount.toFixed(2);
curRec.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_jj_amount_after_discou',
line: i,
value: amount
});

}
curRec.save({
enableSourcing: true,
ignoreMandatoryFields: true
})


}catch (e) {
log.debug("error",e);
}

}

return { afterSubmit}

});

Leave a comment

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