Update line level location of SO

Scenario
Update the line level location field of Sales order with the body level location field value if there is no line level sales order location.

Solution

/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
define(['N/currentRecord'],
/**
* @param{currentRecord} currentRecord
* @param{search} search
*/
function(currentRecord) {

/**
* Function to be executed when field is changed.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.sublistId - Sublist name
* @param {string} scriptContext.fieldId - Field name
* @param {number} scriptContext.lineNum - Line number. Will be undefined if not a sublist or matrix field
* @param {number} scriptContext.columnNum - Line number. Will be undefined if not a matrix field
*
* @since 2015.2
*/
function fieldChanged(scriptContext) {

try{

if (scriptContext.fieldId === 'location'){

console.log("entered if condition");
var currentRec = scriptContext.currentRecord;
console.log("current Record", currentRec);
var location = currentRec.getValue({
fieldId: 'location'
});
console.log("location",location);
if(!location)
return false;
var lineCount = currentRec.getLineCount({
sublistId: 'item'
});
var lineLoc;
for( var i = 0; i < lineCount; i++)
{
lineLoc = currentRec.getSublistValue({
sublistId: 'item',
fieldId: 'location',
line:i,
});

if(!lineLoc)
{
var lineLocation = currentRec.setSublistValue({
sublistId: 'item',
fieldId: 'location',
value:location,
line:i,
ignoreFieldChange: true
});
}
}

}

}
catch(err)
{
console.log("error@FieldChanged",err)
}

}


/**
* Validation function to be executed when record is saved.
*
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @returns {boolean} Return true if record is valid
*
* @since 2015.2
*/
function saveRecord(scriptContext) {

return true;

}

return {

fieldChanged: fieldChanged,
saveRecord: saveRecord
};

});

Leave a comment

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