Configuring Inventory Details for Inventory Adjustments in SuiteScript

When configuring the inventory detail for inventory adjustment record, the serial/lot number needs to be set to the fieldId issueinventorynumber.

function createInventoryAdjustment(itemReceiptDetails, rmaTranId, currentBin) {
            try {


                let inventoryAdjustmentRecord = record.create({
                    type: record.Type.INVENTORY_ADJUSTMENT,
                    isDynamic: true
                });
                inventoryAdjustmentRecord.setValue({
                    fieldId: 'customform',
                    value: steriCustomForm //steri custom form
                });
                inventoryAdjustmentRecord.setValue({
                    fieldId: 'subsidiary',
                    value: itemReceiptDetails.subsidiary
                });
                log.debug("itemReceiptDetails.subsidiary", itemReceiptDetails.subsidiary);
                inventoryAdjustmentRecord.setValue({
                    fieldId: 'customer',
                    value: itemReceiptDetails.customer
                });
                log.debug("itemReceiptDetails.customer", itemReceiptDetails.customer);
                //Hardcoded the account for now
                inventoryAdjustmentRecord.setValue({
                    fieldId: 'account',
                    value: 2005 //test account 
                });
                inventoryAdjustmentRecord.setValue({
                    fieldId: 'memo',
                    value: 'Reversal Inventory Adjustment for ' + rmaTranId
                });
                // Loop through all items
                for (let lineId in itemReceiptDetails.items) {
                    let item = itemReceiptDetails.items[lineId];
                    log.debug("itemReceiptDetails item", item);
                    inventoryAdjustmentRecord.selectNewLine({
                        sublistId: 'inventory'
                    });


                    inventoryAdjustmentRecord.setCurrentSublistValue({
                        sublistId: 'inventory',
                        fieldId: 'item',
                        value: item.item
                    });
                    
                    inventoryAdjustmentRecord.setCurrentSublistValue({
                        sublistId: 'inventory',
                        fieldId: 'location',
                        value: item.location
                    });
                  
                    if (item.units) {
                        inventoryAdjustmentRecord.setCurrentSublistValue({
                            sublistId: 'inventory',
                            fieldId: 'units',
                            value: item.units
                        });
                    }
                   
                    inventoryAdjustmentRecord.setCurrentSublistValue({
                        sublistId: 'inventory',
                        fieldId: 'adjustqtyby',
                        value: -item.qty
                    });
                 
                    // Loop through inventory details
                    item.inventoryDetails.forEach((inventory, index) => {
                        let inventoryDetailRecord = inventoryAdjustmentRecord.getCurrentSublistSubrecord({
                            sublistId: 'inventory',
                            fieldId: 'inventorydetail'
                        });
                        log.debug("inventoryDetailRecord", inventoryDetailRecord);
                        inventoryDetailRecord.selectNewLine({
                            sublistId: 'inventoryassignment'
                        });
                        if (inventory.number) {
                            inventoryDetailRecord.setCurrentSublistValue({
                                sublistId: 'inventoryassignment',
                                fieldId: 'issueinventorynumber',
                                value: inventory.number
                            });
                        }                     
                      
                        if (currentBin) {
                            inventoryDetailRecord.setCurrentSublistValue({
                                sublistId: 'inventoryassignment',
                                fieldId: 'binnumber',
                                value: currentBin
                                //  inventory.binNumber
                            });
                        }                       

                        if (inventory.status) {
                            inventoryDetailRecord.setCurrentSublistValue({
                                sublistId: 'inventoryassignment',
                                fieldId: 'inventorystatus',
                                value: inventory.status
                            });
                        }
                       
                        if (inventory.expiryDate) {
                            inventoryDetailRecord.setCurrentSublistValue({
                                sublistId: 'inventoryassignment',
                                fieldId: 'expirationdate',
                                value: inventory.expiryDate
                            });
                        }
                        
                        if (inventory.inventoryQty) {
                            inventoryDetailRecord.setCurrentSublistValue({
                                sublistId: 'inventoryassignment',
                                fieldId: 'quantity',
                                value: -(inventory.inventoryQty)
                            });
                        }
                        
                        inventoryDetailRecord.commitLine({
                            sublistId: 'inventoryassignment'
                        });
                    });
                    if (item.class) {
                        inventoryAdjustmentRecord.setCurrentSublistValue({
                            sublistId: 'inventory',
                            fieldId: 'class',
                            value: item.class
                        });
                    }
                    if (item.dept) {
                        inventoryAdjustmentRecord.setCurrentSublistValue({
                            sublistId: 'inventory',
                            fieldId: 'department',
                            value: item.department
                        });
                    }
                    inventoryAdjustmentRecord.commitLine({
                        sublistId: 'inventory'
                    });
                }
                // Save the Inventory Adjustment record
                let inventoryAdjustmentId = inventoryAdjustmentRecord.save({ ignoreMandatoryFields: true });                
                return inventoryAdjustmentId;
            }
            catch (Err) {
                log.error("Error @ createInventoryAdjustment", Err);
                return 1;
            }
        }

Note: When configuring the inventory detail for item receipt record, the serial/lot number needs to be set to the fieldId receiptinventorynumber.

Leave a comment

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