无效金额错误(必须为正)通过计划脚本进行的库存调整



我试图通过计划脚本创建库存调整,但当我执行它时,我总是遇到错误:无效金额(必须是正数(,但在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);
}
}

底线:数量不能为负数或零。这是经过设计的。你可以用0.0001逃脱惩罚,但这是一个棘手的

最新更新