首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在项目履行记录上设置库存细节-副本2

无法在项目履行记录上设置库存细节-副本2
EN

Stack Overflow用户
提问于 2017-04-20 17:50:37
回答 5查看 12.1K关注 0票数 4

在我的计划脚本中,我正在循环通过转换后的销售订单上的项目,以实现项目,并在遍历项目时尝试设置库存细节。库存详细信息看起来没有任何错误或问题,但是当我试图保存时,我会得到以下错误:

请配置项目列表第2行中的库存详细信息。

第二行是我测试中唯一需要库存细节的项目。以下是代码:

代码语言:javascript
复制
 var itemFulfillment = record.transform({
      fromType: record.Type.SALES_ORDER,
      fromId: salesOrder.fields.id,
      toType: record.Type.ITEM_FULFILLMENT,
      isDynamic: true
    });

 var lineCount = itemFulfillment.getLineCount({ sublistId: 'item' });

for (var i = 0; i < lineCount; i++) {
          itemFulfillment.selectLine({
            sublistId: 'item',
            line: i
          });

          var remainingQty = itemFulfillment.getCurrentSublistValue({
            sublistId: 'item',
            fieldId: 'quantityremaining'
          });

          itemFulfillment.setCurrentSublistValue({
                  sublistId: 'item',
                  fieldId: 'quantity',
                  value: remainingQty
                });

          var inventoryDetail = itemFulfillment.getCurrentSublistValue({
            sublistId: 'item',
            fieldId: 'inventorydetailreq'
          });

          var binItem = itemFulfillment.getCurrentSublistValue({
            sublistId: 'item',
            fieldId: 'binitem'
          });

          if (inventoryDetail === 'T' && binItem === 'T') {

            var inventoryDetailRecord = itemFulfillment.getCurrentSublistSubrecord({
              sublistId: 'item',
              fieldId: 'inventorydetail'
            });                  

            inventoryDetailRecord.selectNewLine({
              sublistId: 'inventoryassignment'
            });


            inventoryDetailRecord.setCurrentSublistValue({
              sublistId: 'inventoryassignment',
              fieldId: 'issueinventorynumber',
              value: 10154 // I know this is the serial number record internal ID for my test
            });

            inventoryDetailRecord.setCurrentSublistValue({
              sublistId: 'inventoryassignment',
              fieldId: 'quantity',
              value: 1 //Again I know this so hard coded for testing
            });

            inventoryDetailRecord.commitLine({
              sublistId: 'inventoryassignment'
            });
          }
        }

        var ifRecordId = itemFulfillment.save();

在提交库存详细信息之后,如果然后检查inventorydetail子记录,我可以看到该行与第2行和正确的项对应。不知道为什么当我保存它说,第2行需要库存!

代码语言:javascript
复制
{"type":"inventorydetail","isDynamic":true,"fields":{"itemdescription":"160W PREMIUM GRADE","nlloc":"0","nlsub":"1","trandate":"4/20/2017","_eml_nkey_":"0","type":"inventorydetail","subrecord_parent_tran_type":"ItemShip","nsapiCT":"1492728327986","sys_id":"-19281976277926580","nluser":"-4","nldept":"0","subrecord_transform_from_parent_id":"305887","subrecord_transform_from_parent_tran_type":"SalesOrd","tolocationusesbins":"F","item":"3312","quantity":"1.0","sys_parentid":"19281975969964536","templatestored":"F","entryformquerystring":"orderline=2&unit=&item=3312&quantity=1&subrecord_transform_from_parent_id=305887&trandate=4/20/2017&location=25&uitype=LOH_STRICT_VALIDATION&subrecord_transform_from_parent_tran_type=salesord&subrecord_parent_tran_type=itemship","nlrole":"3","uitype":"LOH_STRICT_VALIDATION","baserecordtype":"inventorydetail","baseunitquantity":"1.0","totalquantity":"1","orderline":"2","haslines":"T","tolocation":"-1","customform":"-10820","location":"25"},"sublists":{"inventoryassignment":{"currentline":{"binnumber":"","binnumber_display":"","existinginventorynumber":"","expirationdate":"","internalid":"-1","inventorydetail":"-1","issueinventorynumber":"","lotquantityavailable":"","quantity":"1","quantityavailable":"","receiptinventorynumber":"","sys_id":"-19281976361182898","sys_parentid":"-19281976277926580","tobinnumber":"","tobinnumber_display":"","#":"2"},"line 1":{"binnumber":"25","binnumber_display":"","existinginventorynumber":"10154","expirationdate":"","internalid":"10154.0","inventorydetail":"-1","issueinventorynumber":"10154","lotquantityavailable":"","quantity":"1.0","quantityavailable":"","receiptinventorynumber":"1793064_3312_NA","sys_id":"-19281976302211623","sys_parentid":"-19281976277926580","tobinnumber":"","tobinnumber_display":""}}}}

我已经尝试了我能想到的每一个组合,并按照套间、应答文档到一个T恤。尝试在Netsuite记录浏览器中的Item Details /赋值下设置每个值,但仍然得到此错误。非常感谢你的帮助/洞察力。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-04-21 00:16:38

好吧,骑士们确实让我思考。我将转换转换为标准模式:

代码语言:javascript
复制
        var itemFulfillment = record.transform({
          fromType: record.Type.SALES_ORDER,
          fromId: salesOrder.fields.id,
          toType: record.Type.ITEM_FULFILLMENT,
        });

删除isDynamic: true,并在标准模式下处理转换记录。然后,我只需要使用标准API更新当前行的库存细节:

代码语言:javascript
复制
        var inventoryDetailRecord = itemFulfillment.getSublistSubrecord({
          sublistId: 'item',
          fieldId: 'inventorydetail',
          line: i
        });

        inventoryDetailRecord.setSublistValue({
          sublistId: 'inventoryassignment',
          fieldId: 'issueinventorynumber',
          value: serialId,
          line: 0
        });

我只需要设置issueinventorynumber,也就是它,然后保存项目实现记录。当SuiteScript 2的子列表和子记录上可用的文档显示这是在动态模式下完成时,实际上只展示了如何创建一个新的库存编号,而不是更新和发布一个,这让我非常困惑。

票数 2
EN

Stack Overflow用户

发布于 2017-06-16 19:07:31

我是DJ。我是NetSuite的软件开发人员,是SuiteScript记录服务平台团队的一员,我只是在研究这个问题。

实现记录上的项目子列表是我们所称的“列表机器”(与“编辑机器”相反)。前者是固定条目列表,可以编辑值,但不能添加或删除行,而“编辑机器”也可以添加和删除行。在履行记录中,项目列表是不可编辑的种类.

编辑机器每一行上的inventorydetail子记录(在项目履行记录上)只有在isDynamic为false的模式下操作子记录时才能工作,因为项目机是列表机器,与动态子记录不兼容。不幸的是,无法指定子记录的isDynamic属性,因为该属性目前是从父记录继承的。

但是,您可以通过欺骗它来做正确的事情!因此,瑞恩的第二个解决方案。该解决方案针对以下所有限制:

  1. 当将销售订单转换为履行记录时,省略isDynamic将导致将履行记录创建为DeferredDynamic (“标准”模式)记录。
  2. 当获得inventorydetail子记录时,它将从父记录继承isDynamic属性,这意味着它将作为DeferredDynamicSubrecord而不是DynamicSubRecord创建。这使得它与项目列表机器兼容,因此解决方案可以工作。

我正在与产品团队合作,看看是否有一种方法可以让SuiteScript V2在其环境中以最合适的模式自动创建每个子记录(或者至少是一个能够工作的模式)。或者,在从记录或子记录创建/获取子记录时,我们可以提供一种为子记录指定isDynamic参数的方法。

票数 5
EN

Stack Overflow用户

发布于 2017-04-20 19:12:06

看起来您正在尝试做这个客户端(例如,使用getCurrentSublistSubrecord)。

你不能这么做。

我所做的是将必要的信息放入自定义字段,然后在用户事件脚本或计划脚本中执行此服务器端操作。

作为一个加号,代码更简单(类似于示例,但用于bin赋值):

代码语言:javascript
复制
var invDetail = rec.getSublistSubrecord({
    sublistId: targetList,
    fieldId: 'inventorydetail', 
    line:idx
});
invDetail.setSublistValue({sublistId:'inventoryassignment', fieldId:'binnumber', line:0, value:bintId});
invDetail.setSublistValue({sublistId:'inventoryassignment', fieldId:'quantity', line:0, value:getV(qtyField)});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43526532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档