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