Search code examples
netsuitesuitescripterpsuitescript2.0

SuiteScriptError INVALID_FLD_VALUE Value -1.0 outside of valid min/max range for field adjustqtyby


Trying to create an inventory adjustment to make all items available in the location to zero. While setting the negative value in the adjustqty field it says invalid field value. Error message "type":"error.SuiteScriptError","name":"INVALID_FLD_VALUE","message":"Value -1.0 outside of valid min/max range for field adjustqtyby"

code

let createInventoryAdjustment = (siteId)=> {
            try {
                var inventoryAdjustmentRecord = record.create({
                    type: record.Type.INVENTORY_TRANSFER,
                    isDynamic: true
                });
                inventoryAdjustmentRecord.setValue("account",accountId)
                let index = 0;
                let currentInventoryData = getSerielNumbers(siteId);
                let itemVsSerialNo = currentInventoryData.results;
                let itemsVsQty = currentInventoryData.itemsVsQty;
                for (var key in itemVsSerialNo) {
                    log.debug("itemVsSerialNo[key]",itemVsSerialNo[key]);

                    var inveRec = inventoryAdjustmentRecord.selectNewLine({
                        sublistId : 'inventory'
                    });
                    inventoryAdjustmentRecord.setCurrentSublistValue({
                        fieldId: "item",
                        value: key,
                        line: index,
                        sublistId: 'inventory'
                    });
                    inventoryAdjustmentRecord.setCurrentSublistValue({
                        fieldId: "location",
                        value: siteId,
                        line: index,
                        sublistId: 'inventory'
                    });
                    log.debug(itemsVsQty[key],itemVsSerialNo[key]);

                    inventoryAdjustmentRecord.setCurrentSublistValue({
                        fieldId: "adjustqtyby",
                        value:  parseInt(itemsVsQty[key]*-1),
                        line: index,
                        sublistId: 'inventory'
                    });
                    if(itemVsSerialNo[key][0].type!="inventoryitem") {
                        let inventoryDetail = inventoryAdjustmentRecord.getCurrentSublistSubrecord({
                            sublistId: 'inventory',
                            fieldId: 'inventorydetail',
                            line: index
                        });
                        for (let i=0;i<itemVsSerialNo[key].length;i++) {
                         let inventoryAssignment =  inventoryDetail.selectNewLine({
                                sublistId : 'inventoryassignment'
                            });

                            inventoryAssignment.setCurrentSublistValue({
                                sublistId: 'inventoryassignment',
                                fieldId: 'quantity',
                                value: (itemVsSerialNo[key][i].qtyOnhand*-1),
                                line: i
                            });
                            inventoryAssignment.setCurrentSublistValue({
                                sublistId: 'inventoryassignment',
                                fieldId: 'issueinventorynumber',
                                value: itemVsSerialNo[key][i].inventoryNoId,
                                line: i
                            });
                            inventoryAssignment.commitLine({
                                sublistId : 'inventoryassignment'
                            });
                        }
                    }
                    index++;


                    inventoryAdjustmentRecord.commitLine({
                        sublistId : 'inventory'
                    });

                    log.debug("key",key);
                    //break;
                }
                if (index == 0) {
                    // NO items to reverse
                    return {
                        isCreated: true,
                        tranId: null,
                    };
                }
                let tranId = inventoryAdjustmentRecord.save({ignoreMandatoryFields: true});
                log.debug("inventoryAdjustmentRecord",tranId);
                return {
                    isCreated: true,
                    tranId: tranId
                };
            } catch (err) {
                log.debug('error@inventoryAdjustment', err);
                return {
                    isCreated: false,
                    error: 'Unable to create Return Inventory Transfer'
                }
            }
        }

Solution

  • you are creating an inventory transfer which cannot transfer negative qty, instead of:

    var inventoryAdjustmentRecord = record.create({
        type: record.Type.INVENTORY_TRANSFER,
        isDynamic: true
    });
    

    you should have:

    var inventoryAdjustmentRecord = record.create({
        type: record.Type.INVENTORY_ADJUSTMENT,
        isDynamic: true
    });