The following Suitescript function can be used to create inventory adjustment in Netsuite.
/**
* Function is used to create the inventory adjustment record
* @param materialArr Array contains data to be set in the inventory adjustment
*/
function createInventoryAdjustment(materialArr) {
try {
let invRec = record.create({
type: record.Type.INVENTORY_ADJUSTMENT,
isDynamic: true
});
invRec.setValue({
fieldId: 'subsidiary',
value: materialArr[0].subsidiary
});
invRec.setValue({
fieldId: 'account',
value: materialArr[0].itemCOGS
});
invRec.setValue({
fieldId: 'department',
value: materialArr[0].department
});
invRec.setValue({
fieldId: 'adjlocation',
value: materialArr[0].consumedLocation
});
for (let j = 0; j < materialArr.length; j++) {
log.debug('materialArr[j]', materialArr[j]);
/*------------islotitem-------------*/
let searchFieldLookUp = search.lookupFields({
type: search.Type.INVENTORY_ITEM,
id: materialArr[j].item,
columns: ['islotitem']
});
let isLot;
isLot = searchFieldLookUp.islotitem;
log.debug('is Lotnumered Item', isLot);
/*--------First line Inventory------*/
invRec.selectNewLine({
sublistId: 'inventory'
});
invRec.setCurrentSublistValue({
sublistId: 'inventory',
fieldId: 'item',
value: materialArr[j].item
});
invRec.setCurrentSublistValue({
sublistId: 'inventory',
fieldId: 'location',
value: materialArr[j].storeLocation
});
invRec.setCurrentSublistValue({
sublistId: 'inventory',
fieldId: 'adjustqtyby',
value: -1 * Number(materialArr[j].issuedQuantity)
});
/*-------------Second line LOT numbered inventory details-----------*/
if (isLot === true) {
let lotf = invRec.getCurrentSublistSubrecord({
sublistId: 'inventory',
fieldId: 'inventorydetail'
});
lotf.selectNewLine({
sublistId: 'inventoryassignment'
});
lotf.setCurrentSublistValue({
sublistId: 'inventoryassignment',
fieldId: 'receiptinventorynumber',
value: materialArr[j].lotNumber
});
lotf.setCurrentSublistValue({
sublistId: 'inventoryassignment',
fieldId: 'inventorystatus',
value: materialArr[j].status
});
lotf.setCurrentSublistValue({
sublistId: 'inventoryassignment',
fieldId: 'quantity',
value: -1 * Number(materialArr[j].issuedQuantity)
});
lotf.commitLine({
sublistId: 'inventoryassignment'
});
} else {
/*----------------------Normal Inventory details-------------------*/
let x = invRec.getCurrentSublistSubrecord({
sublistId: 'inventory',
fieldId: 'inventorydetail'
});
x.setCurrentSublistValue({
sublistId: 'inventoryassignment',
fieldId: 'inventorystatus',
value: materialArr[j].status,
ignoreFieldChange: true
});
x.setCurrentSublistValue({
sublistId: 'inventoryassignment',
fieldId: 'quantity',
value: -1 * Number(materialArr[j].issuedQuantity),
ignoreFieldChange: true
});
}
invRec.commitLine({
sublistId: 'inventory'
});
}
let recordId = invRec.save({
enableSourcing: false,
ignoreMandatoryFields: false
});
} catch (e) {
log.error({
title: e.name,
details: e
})
}