如何在 Netsuite SuiteScript 2.0 中获取 Lot/Serial 数量的库存调整交易?

How get Lot/Serial number in Netsuite SuiteScript 2.0 for Inventory Adjustment Transaction?

我正在尝试从用户事件脚本中的库存调整中获取序列号。当调整量为正时,下面的代码对我来说效果很好,但当它为负时就不行了。

var invDet = transaction.getSublistSubrecord({sublistId:'inventory',
                                              fieldId:'inventorydetail',
                                              line:x});

for(var y = 0; y = invDet.getLineCount('inventoryassignment'); y++) {

    var lotNumber = invDet.getSublistValue({sublistId:'inventoryassignment',
                                     fieldId:'receiptinventorynumber', 
                                     line:y}); 
    log.debug('lotNumber', lotNumber);                         
}    

When adjust quantity is negative, receiptinvetorynumber is empty

我尝试使用等于 'issueinventorynumber' 或 'binnunber' 的字段 ID,但返回的值为空。

我在 a NetsuiteHub forum...

中找到了以下评论

In 2.0 the getValue call returns the internal ID of the serial/lot number and the getText equivalent does not work. Depending on the exact logic you need to execute for the obtained numbers you might need to call a subsequent saved search to obtain the actual serial/lot numbers and not internal IDs (an 'inventorynumber' search will do the trick).

我试过了...

      try{
         var internalId = invdet.getSublistValue({sublistId:'inventoryassignment',fieldId:'internalid', line:y});
         search.create({type:'inventorynumber', filters:[
                           ['internalid', 'is', internalId]
                         ], columns:['inventorynumber']}).run().each(function (result) {
                          binText = result.getValue('inventorynumber');                  
                          log.debug('binText', binText);
                     });
       } catch(e) {
           log.debug('Error', e.message);
           throw e.message;
       }

我太缺乏经验,无法完成这项工作。我很感激你能给我的任何帮助。

谢谢。

挑战在于 NetSuite API 的这一领域没有得到很好的记录。但是,我通过反复试验和搜索时间推进了它。

var invDet = transaction.getSublistSubrecord({sublistId:'inventory',
                                              fieldId:'inventorydetail',
                                              line:x});

for(var y = 0; y = invDet.getLineCount('inventoryassignment'); y++) {

     var Qty = invdet.getSublistValue({sublistId:'inventoryassignment',
                                       fieldId:'quantity', 
                                       line:y});
     var lotNumber = '';

     if(Qty < 0)
     {
          var ivnNumId = nvdet.getSublistValue({sublistId:'inventoryassignment',
                                                fieldId:'issueinventorynumber',
                                                line:y});
          if(ivnNumId !== '')
          {
             var invNum = record.load({type: 'inventorynumber',id:ivnNumId});
             lotNumber = invNum.getValue({fieldId: 'inventorynumber'});
          }
     }
     else
     {
          lotNumber = invdet.getSublistValue({sublistId:'inventoryassignment',                                                                                
                                              fieldId:'receiptinventorynumber',
                                              line:y});
     }
 
     log.debug('lotNumber', lotNumber);                         
}

This information was very helpful in ss1.0 我希望它对某人有用