0

我正在尝试从套件创建库存转移并在设置行字段时,系统给我设置至少一个项目的错误。错误:

"code\":\"USER_ERROR\",\"details\":\"You must enter at least one line item for this transaction"

我的代码如下:

datamap object for lines reflecting as follows:

[{"item":"12482","fromLocation":"17","qtytoadj":"1","amount":null,"remarks":null,"project":"6621","projectTask":null,"matReqId":"8636","itemtype":"InvtPart","islotitem":"F"}]
//creating inventory transfer record
    var createInvTrans = nlapiCreateRecord('inventorytransfer');
    //Body fields
    createInvTrans.setFieldValue('subsidiary', subsidVal);
    createInvTrans.setFieldValue('location', 17);
    createInvTrans.setFieldValue('transferlocation', 10);
    createInvTrans.setFieldValue('custbody21', projectFld);
    
    var toData = dataMap[matRecs];
    nlapiLogExecution('debug', 'toData', JSON.stringify(toData))
    nlapiLogExecution('debug', 'toData.length', toData.length)
    
    for (var i2 = 0; i2 < toData.length; i2++) {
      createInvTrans.selectNewLineItem('inventory');
      createInvTrans.setCurrentLineItemValue('inventory', 'item', toData[i2].item);
      createInvTrans.setCurrentLineItemValue('inventory', 'adjustqtyby', toData[i2].qtytoadj);
      createInvTrans.commitLineItem('inventory');
    }
    //sumbitting inv Adj
    var invTrans = nlapiSubmitRecord(createInvTrans, true, true);

任何人都可以帮助我有什么我做错了吗?因为我在 datamap 中的数据是正确的,但是只要执行到设置行,就会出现错误。

4

1 回答 1

1

你使用了错误的模式。您正在对非动态记录使用动态模式子列表操作。

您可以将传输初始化为动态:

var createInvTrans = nlapiCreateRecord('inventorytransfer', {recordmode: 'dynamic'});

或使用服务器端 api 作为子列表:

for (var i2 = 0; i2 < toData.length; i2++) {
  createInvTrans.setLineItemValue('inventory', 'item', i2 +1, toData[i2].item);
  createInvTrans.setLineItemValue('inventory', 'adjustqtyby', i2+1,  toData[i2].qtytoadj);
}
于 2020-10-23T20:01:49.763 回答