【问题标题】:Generate Multiple Lot Numbered Inventory through Item Receipt(Code attached): SuiteScript 1.0 Netsuite通过收货生成多批编号库存(附代码):SuiteScript 1.0 Netsuite
【发布时间】:2018-10-11 03:45:03
【问题描述】:

我正在尝试生成多个编号的库存,但它只创建一个批号并分配给该项目库存,不知道我哪里出错了。

    var poid =15513;
var sublistcount = 2;

var fromrecord;
var fromid;
var torecord;
var trecord;
var qty;
fromrecord = 'purchaseorder';
fromid = poid;
torecord = 'itemreceipt';

fulfillment_record = nlapiTransformRecord(fromrecord, fromid, torecord,true);
for(var i=1;i<=sublistcount;i++)
{
      var warehousequantity= 2;
      //var po_line_count = fulfillment_record.getLineItemCount('item');
      fulfillment_record.selectLineItem('item', i);
      fulfillment_record.setCurrentLineItemValue('item', 'itemreceive', 'F');
      fulfillment_record.setCurrentLineItemValue('item', 'quantity', warehousequantity);

      for(var j=1;j<=warehousequantity;j++)
      {
            var subrecord = fulfillment_record.editCurrentLineItemSubrecord('item', 'inventorydetail');
            if(subrecord!=null){
                subrecord = fulfillment_record.editCurrentLineItemSubrecord('item', 'inventorydetail');
                subrecord.insertLineItem('inventoryassignment',j);
              }else {
                  subrecord = fulfillment_record.createCurrentLineItemSubrecord('item', 'inventorydetail');
              }
            subrecord.selectLineItem('inventoryassignment', j);
            subrecord.setCurrentLineItemValue('inventoryassignment', 'quantity', 2);
            subrecord.setCurrentLineItemValue('inventoryassignment', 'itemreceive ', 'F');
            subrecord.setCurrentLineItemValue('item', 'serialnumbers', 'XZY'+j);
            subrecord.setCurrentLineItemValue('inventoryassignment', 'receiptinventorynumber','XYZ'+j);
            subrecord.commitLineItem('inventoryassignment');
            subrecord.commitLineItem('inventorydetail');
            subrecord.commit();
            fulfillment_record.commitLineItem('item');
            fulfillment_record.commitLineItem('inventory');
      }
}
 var id = nlapiSubmitRecord(fulfillment_record, true, false);

根据代码示例,它应该为每个项目创建两个批次,但它只创建最后一个批次,即 XZY2。

【问题讨论】:

    标签: netsuite suitescript inventory


    【解决方案1】:
    fulfillment_record.setCurrentLineItemValue('item', 'itemreceive', 'F');
    subrecord.setCurrentLineItemValue('inventoryassignment', 'itemreceive ', 'F');
    

    如果您要实现它,则不需要将 itemreceive 明确标记为 false。

    subrecord.commitLineItem('inventorydetail');
    

    您只能提交子列表行,因为 inventorydetail 不是子列表,因此不是必需的。

    subrecord.commit();
    

    您无需显式提交子记录,因为在您保存父记录时,NetSuite 会自动保存子记录。

    subrecord.setCurrentLineItemValue('inventoryassignment', 'quantity', 2);
    

    在这里,您尝试提交的 inventorydetails 数量超过了履行行中定义的数量。

    SuiteScript2中的上述代码示例。

    注意:我发现 NetSuite 存在一些限制,它不允许在动态模式下设置库存详细信息,因此我使用的是非动态模式

    var poid = 15513;
    var sublistcount = 2;
    
    var fromrecord;
    var fromid;
    var torecord;
    var trecord;
    var qty;
    fromrecord = 'purchaseorder';
    fromid = poid;
    torecord = 'itemreceipt';
    
    fulfillment_record = record.transform({
      fromType: fromrecord,
      fromId: fromid,
      toType: torecord,
      isDynamic: false
    });
    
    var sublistCount = fulfillment_record.getLineCount({ sublistId: 'item' });
    
    for (var i = 0; i < sublistcount; i++) {
      var warehousequantity = 2;
    
      fulfillment_record.setSublistValue({ sublistId: 'item', fieldId: 'quantity', value: warehousequantity, line: i });
    
      var subrecord = fulfillment_record.getSublistSubrecord({ sublistId: 'item', fieldId: 'inventorydetail', line: i });
      if (subrecord) {
        // first insert a new line
        for (var j = 0; j < warehousequantity; j++) {
          subrecord.insertLine({ sublistId: 'inventoryassignment', line: j });
          // set inventory quantity
          subrecord.setSublistValue({ sublistId: 'inventoryassignment', fieldId: 'quantity', value: 1, line: j });
          // set serialnumber
          subrecord.setSublistValue({ sublistId: 'inventoryassignment',fieldId: 'serialnumbers', value: 'XZY' + i + j , line: j });
        }
    
      // don't commit/submit/save subrecord explicitly
      // since NetSuite saves the sub-record when you save parent record
      }
    
      // since the record in non-dynamic mode
      // we don't need to commit line
    }
    var id = fulfillment_record.save();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 2021-10-11
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      相关资源
      最近更新 更多