Nicolas Bean
08/21/2023, 9:12 PMbattk
08/21/2023, 9:27 PMNicolas Bean
08/22/2023, 1:34 PM/*******************************************************************
*
* Name: CITR_CS_AddInventoryCountSublist.js
* @NApiVersion 2.1
* @NScriptType ClientScript
* Version 0.0.1
*
*
* Author: Nicolas Bean
* Purpose: Adding inventory count sublist to inventory count record
* Script: CITR_CS_AddInventoryCountSublist.js
* Deploy: CITR_CS_AddInventoryCountSublist
*
*
* ******************************************************************* */
define(['N/record', 'N/log', 'N/runtime', 'N/search'], function(record, log, runtime, search) {
const sublistId = 'custpage_inventorycountsublist';
const subtabId = 'custpage_inventorycount';
function fieldChanged(context) {
log.debug('context', context);
var currentRecord = context.currentRecord;
var currentSublist = context.sublistId;
var currentField = context.fieldId;
var currentUser = runtime.getCurrentUser();
var userSubsidiary = currentUser.subsidiary;
if (currentField == 'location') {
try {
var currentLocation = currentRecord.getValue({fieldId: 'location'});
var items = findNetSuiteItemQty(userSubsidiary, currentLocation);
log.debug('items', items);
log.debug('items.length', items.length);
var customsublist = currentRecord.getSublist({ sublistId: sublistId});
log.debug('customsublist', customsublist);
for (var i = 0; i < items.length; i++) {
customsublist.selectNewLine({
sublistId: sublistId
})
customsublist.setCurrentSublistValue({
id: 'inventorycount_item',
line: i,
value: items[i].internalid
});
customsublist.setCurrentSublistValue({
id: 'inventorycount_itemdescription',
line: i,
value: items[i].displayname
});
customsublist.setCurrentSublistValue({
id: 'inventorycount_uom',
line: i,
value: items[i].uom
});
customsublist.setCurrentSublistValue({
id: 'inventorycount_avgcost',
line: i,
value: items[i].locationaveragecost
});
customsublist.setCurrentSublistValue({
id: 'inventorycount_netsuiteqty',
line: i,
value: items[i].locationquantityonhand
});
customsublist.commitLine({
sublistId: sublistId,
ignoreRecalc: true
});
}
} catch (e) {
log.debug('Error reads: ', e.name + e.message);
}
}
}
function findNetSuiteItemQty(subsidiary, location) {
var response = [];
var inventoryitemSearchObj = search.create({
type: "inventoryitem",
filters:
[
["type","anyof","InvtPart"],
"AND",
["subsidiary","anyof", subsidiary],
"AND",
["inventorylocation","anyof",location],
"AND",
["locationquantityonhand","notequalto","0"],
"AND",
["locationquantityonhand","isnotempty",""]
],
columns:
[
search.createColumn({name: "internalid", label: "Internal ID"}),
search.createColumn({
name: "itemid",
sort: search.Sort.ASC,
label: "Name"
}),
search.createColumn({name: "displayname", label: "Display Name"}),
search.createColumn({
name: "formulanumeric",
formula: "CASE WHEN {locationaveragecost} IS NULL THEN 0 ELSE {locationaveragecost} END",
label: "Formula (Numeric)"
}), search.createColumn({name: "inventorylocation", label: "Inventory Location"}),
search.createColumn({name: "locationquantityonhand", label: "Location On Hand"}),
search.createColumn({name: "custitem_item_unit", label: "Unit"})
]
});
let searchResultData = inventoryitemSearchObj.runPaged({pageSize: 1000});
searchResultData.pageRanges.forEach(function (pageRange) {
let resultPage = searchResultData.fetch({index: pageRange.index});
resultPage.data.forEach(function (result) {
let columns = result.columns;
let item = {};
item.internalid = result.getValue(columns[0]);
item.name = result.getValue(columns[1]);
item.displayname = result.getValue(columns[2]);
item.locationaveragecost = result.getValue(columns[3]);
item.inventorylocation = result.getValue(columns[4]);
item.locationquantityonhand = result.getValue(columns[5]);
item.uom = result.getValue(columns[6]);
response.push(item);
});
});
return response;
}
return {
fieldChanged: fieldChanged
};
});
Nicolas Bean
08/22/2023, 1:34 PMNicolas Bean
08/22/2023, 1:36 PMNicolas Bean
08/22/2023, 1:36 PMbattk
08/22/2023, 4:57 PMbattk
08/22/2023, 4:59 PMbattk
08/22/2023, 5:01 PMbattk
08/22/2023, 5:02 PMbattk
08/22/2023, 5:03 PMNicolas Bean
08/22/2023, 5:05 PMNicolas Bean
08/22/2023, 5:06 PMbattk
08/22/2023, 5:06 PMbattk
08/22/2023, 5:07 PMNicolas Bean
08/22/2023, 8:23 PMbattk
08/22/2023, 8:45 PMbattk
08/22/2023, 8:45 PMNicolas Bean
08/22/2023, 9:08 PMNicolas Bean
08/22/2023, 9:08 PMbattk
08/22/2023, 9:21 PM