The client script that validates the line based on location on the purchase order and data is sourced to on hand field.
define(['N/currentRecord', 'N/record', 'N/search'],
/**
* @param{currentRecord} currentRecord
* @param{record} record
* @param{search} search
*/
function (currentRecord, record, search) {
"use strict"
/**
* @description checks the value
* @param {string} parameter
* @returns boolean
*/
function checkForParameter(parameter) {
if (parameter !== "" && parameter !== null && parameter !== undefined && parameter !== false && parameter !== "null" && parameter !== "undefined" && parameter !== " " && parameter !== 'false') {
return true;
} else {
return false;
}
}
/**
* @description search to get on hand value
* @param {string} item
* @returns array
*/
function itemSearch(item, locationValue) {
try {
let itemSearchObj = search.create({
type: "item",
filters:
[
["internalid", "is", item],
"AND",
["inventorylocation.name", "is", locationValue]
],
columns:
[
search.createColumn({ name: "type", label: "Type" }),
search.createColumn({ name: "locationquantityonorder", label: "Location On Order" }),
]
});
let quantityOnOrder = null;
itemSearchObj.run().each(function (result) {
quantityOnOrder = result.getValue({
name: "locationquantityonorder",
});
return false;
});
return quantityOnOrder;
}
catch (e) {
console.log("error @itemSearch", e)
return null;
}
}
/**
* Validation function to be executed when sublist line is committed.
* @param {Object} scriptContext
* @param {Record} scriptContext.currentRecord - Current form record
* @param {string} scriptContext.sublistId - Sublist name
* @returns {boolean} Return true if sublist line is valid
* @since 2015.2
*/
function validateLine(scriptContext) {
try {
let currentRecord = scriptContext.currentRecord;
let locationValue = currentRecord.getText({
fieldId: "location"
})
let item = currentRecord.getCurrentSublistValue({
sublistId: "item",
fieldId: 'item'
});
if (checkForParameter(item) && checkForParameter(locationValue)) {
let itemRes = itemSearch(item, locationValue);
itemRes = checkForParameter(itemRes) ? itemRes : 0;
currentRecord.setCurrentSublistValue({
sublistId: "item",
fieldId: 'custcol_jj_on_order',
value: Number(itemRes),
ignoreFieldChange: true
});
}
return true;
} catch (e) {
console.log("error @validateLine", e);
return true;
}
}
return {
validateLine: validateLine,
};
});