/**
*@NApiVersion 2.1
*@NScriptType ScheduledScript
*
*/
define(['N/record', 'N/search', 'N/file', 'N/runtime', 'N/email', 'N/redirect'],
function (record, search, file, runtime, email, redirect) {
function createBinTransfer(results) {
try {
var binTransfer = record.create({ type: record.Type.BIN_TRANSFER, isDynamic: true });
binTransfer.setValue({ fieldId: 'memo', value: 'JJ CRAETED RECORD' });
binTransfer.setValue({ fieldId: 'location', value: 4 });
for (var line in results) {
binTransfer.selectNewLine({
sublistId: 'inventory'
});
binTransfer.setCurrentSublistValue({
sublistId: 'inventory',
fieldId: 'item',
value: line
});
binTransfer.setCurrentSublistValue({
sublistId: 'inventory',
fieldId: 'quantity',
value: results[line].qty
});
var inventoryDetail = binTransfer.getCurrentSublistSubrecord({
sublistId: 'inventory',
fieldId: 'inventorydetail'
});
// for Loop
log.debug("results[line].items", results[line].items);
results[line].items.forEach(function (binData) {
if (binData["Bin Number"]) {
inventoryDetail.selectNewLine({ sublistId: 'inventoryassignment' });
inventoryDetail.setCurrentSublistValue({
sublistId: "inventoryassignment",
fieldId: "binnumber",
value: parseInt(binData["Bin Number"])
});
inventoryDetail.setCurrentSublistValue({
sublistId: "inventoryassignment",
fieldId: "tobinnumber",
value: 5808
});
inventoryDetail.setCurrentSublistValue({
sublistId: "inventoryassignment",
fieldId: "quantity",
value: binData["onHand"]
});
inventoryDetail.commitLine({ sublistId: 'inventoryassignment' });
} else log.debug('Bin Number', binData["Bin Number"]);
});
binTransfer.commitLine({ sublistId: 'inventory' });
}
return binTransfer.save();
} catch (err) {
log.debug('error @createBinTransfer', err)
}
}
function getItemBins() {
try {
var itemSearchObj = search.create({
type: "item",
filters:
[
["binonhand.location", "anyof", "4"],
"AND",
["binonhand.quantityonhand", "greaterthan", "0"],
"AND",
["binonhand.binnumber", "noneof", "5808"]
],
columns:
[
search.createColumn({
name: "internalid",
sort: search.Sort.ASC,
label: "Name"
}),
search.createColumn({ name: "displayname", label: "Display Name" }),
search.createColumn({ name: "type", label: "Type" }),
search.createColumn({
name: "quantityavailable",
join: "binOnHand",
label: "Available"
}),
search.createColumn({
name: "quantityonhand",
join: "binOnHand",
label: "onHand"
}),
search.createColumn({
name: "binnumber",
join: "binOnHand",
label: "Bin Number"
})
]
});
var searchCoulumns = itemSearchObj.columns;
var results = {};
var pageData = itemSearchObj.runPaged({ pageSize: 1000 });
var page = pageData.pageRanges;
getItemBins
for (var k = 0; k < page.length; k++) {
var data = pageData.fetch({ index: k }).data;
for (var j = 0; j < data.length; j++) {
var singleResult = JSON.parse('{}');
var result = data[j];
for (var i = 0; i < searchCoulumns.length; i++) {
var value = result.getValue(searchCoulumns[i]);
singleResult[searchCoulumns[i].label] = value ? value : '';
}
if (results[singleResult['Name']]) {
results[singleResult['Name']].items.push(singleResult);
results[singleResult['Name']].qty += parseInt(singleResult["onHand"] ? singleResult["onHand"] : 0);
}
else {
results[singleResult['Name']] = { items: [singleResult], qty: parseInt(singleResult["onHand"] ? singleResult["onHand"] : 0) };
}
}
}
return results;
}
catch (e) {
log.debug('ERROR @ onRequest', e)
}
}
return {
execute: function (context) {
try {
var allBinData = getItemBins();
var createdbinTranfers = createBinTransfer(allBinData);
log.debug("createdbin", createdbinTranfers);
} catch (err) {
log.debug("err", err);
}
}
}
});