首页 > 解决方案 > 无效金额错误(必须是正数)通过计划脚本调整库存

问题描述

我正在尝试通过预定脚本创建库存调整,但是当我执行它时,我总是遇到错误:无效金额(必须为正),但在 UI 中,允许输入负值。

该错误是由 ir_qty 为负数引起的,我将其设置为库存明细子记录中的数量值。

这是我当前的脚本。有什么想法吗?

function createInvAdjust() {
    nlapiLogExecution('DEBUG', 'Inside function', 'Inside function');
    try {
        var columns = new Array();
        columns[0] = new nlobjSearchColumn('internalid');
        var searchResult = nlapiSearchRecord(null, 'customsearch_365', null, columns);
        //Item Receipt Saved Search
        if (searchResult != null && searchResult != '') {
            var searchResultCount = searchResult.length;
            nlapiLogExecution('DEBUG', 'searchResult Count', searchResultCount);
            for (var i = 0; i < searchResult.length; i++) {
                nlapiLogExecution('DEBUG', 'Inside for', 'Inside for');
                var ir_internalId = searchResult[i].getValue('internalid');
                nlapiLogExecution('DEBUG', 'Item Receipt Internal Id', ir_internalId);
                var ir_Record = nlapiLoadRecord('itemreceipt', ir_internalId);
                var customer = ir_Record.getFieldValue('entity');
                nlapiLogExecution('debug', 'Customer: ', customer);
                var subsidiary = ir_Record.getFieldValue('subsidiary');
                nlapiLogExecution('debug', 'Subsidiary: ', subsidiary);
                //var ir_Number = ir_Record.getFieldValue('tranid');  
                //nlapiLogExecution('debug','Item Receipt Number: ',ir_Number);
                var linecount = ir_Record.getLineItemCount('item');
                nlapiLogExecution('debug', 'Line Count: ', linecount);
                var cust_loc = nlapiLookupField('customer', customer, 'custentity_customer_consignment_location');
                nlapiLogExecution('debug', 'cust_loc', cust_loc);
                var inventory_record = nlapiCreateRecord('inventoryadjustment');
                inventory_record.setFieldValue('customer', customer);
                inventory_record.setFieldValue('custbody_linked_if_consignment', ir_internalId);
                inventory_record.setFieldValue('subsidiary', subsidiary);
                inventory_record.setFieldValue('account', '612'); // 82000 Cost (At Standard)
                inventory_record.setFieldValue('adjlocation', '3');
                if (linecount != null && linecount != '') {
                    for (var j = 1; j <= linecount; j++) {
                        var ir_item = ir_Record.getLineItemValue('item', 'item', j);
                        nlapiLogExecution('DEBUG', 'Item Receipt Item: ', ir_item);
                        var ir_quantity = ir_Record.getLineItemValue('item', 'quantity', j);
                        nlapiLogExecution('DEBUG', 'Item Receipt Quantity: ', ir_quantity);
                        var ir_qty = '-' + ir_quantity;
                        nlapiLogExecution('DEBUG', 'ir_qty: ', ir_qty);
                        inventory_record.selectNewLineItem('inventory');
                        inventory_record.setCurrentLineItemValue('inventory', 'item', ir_item);
                        inventory_record.setCurrentLineItemValue('inventory', 'location', cust_loc);
                        inventory_record.setCurrentLineItemValue('inventory', 'adjustqtyby', ir_quantity);
                        var inventoryDetail = inventory_record.createCurrentLineItemSubrecord('inventory', 'inventorydetail');
                        inventoryDetail.selectLineItem('inventoryassignment');
                        inventoryDetail.setCurrentLineItemValue('inventoryassignment', 'quantity', ir_qty);
                        inventoryDetail.commitLineItem('inventoryassignment');
                        inventoryDetail.commit();
                        inventory_record.commitLineItem('inventory');
                    }
                }
                try {
                    var submitID_INV = nlapiSubmitRecord(inventory_record, true);
                    nlapiLogExecution('DEBUG', 'Submit ID INV', submitID_INV);
                    ir_Record.setFieldValue('custbody_transfer_complete', 'T');
                    ir_Record.setFieldValue('custbody_linked_inv_adj', submitID_INV);
                    var submitID_ir = nlapiSubmitRecord(ir_Record, true);
                    //nlapiLogExecution('DEBUG', 'Submit ID IR', submitID_ir);
                } catch (ex) {
                    nlapiLogExecution('Error', 'Exception in Create Inv Adj with id: ' + ir_internalId, ex);
                }
                //Check the Usage limit and rerun the scheduler
                var context = nlapiGetContext();
                if (context.getRemainingUsage() <= 200) {
                    var state = nlapiSetRecoveryPoint();
                    var state1 = nlapiYieldScript();
                }
            }
        }
    } catch (e) {
        nlapiLogExecution('Error', 'Exception in Create Inventory Adjustment for  IR: ', e);
    }
}

标签: javascriptnetsuitesuitescriptsuitescript2.0suitescript1.0

解决方案


底线:数量不能为负数或零。这是设计使然。你可以逃脱 0.0001 但这太难了


推荐阅读