Function to create inventory adjustment.

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

Leave a comment

Your email address will not be published. Required fields are marked *