代码之家  ›  专栏  ›  技术社区  ›  Alex Hirota

如何从交易保存搜索/Suitescript搜索中获取销售订单“shipaddresslist”值?

  •  2
  • Alex Hirota  · 技术社区  · 7 年前

    在Netsuite中,销售订单记录类型包含一个名为“”的字段 发货地址列表 “其中包含与所选客户地址关联的客户地址内部ID。

    遗憾的是,没有可获取以下值的销售订单搜索列“ 发货地址列表 “所以我必须找到一个解决办法。

    使用SuiteScript,我可以通过循环搜索结果,将销售订单ID传递给记录,来获取此字段的值。Load()函数,并调用record。加载记录上的getValue(),如下所示

    搜索:

     var salesorderSearchObj = search.create({
       type: "salesorder",
       filters:
       [
          ["type","anyof","SalesOrd"],
          "AND",
          ["item.isfulfillable","is","T"],
          "AND",
          ["status","anyof","SalesOrd:B","SalesOrd:E","SalesOrd:D"],
          "AND",
          ["quantitycommitted","greaterthanorequalto","1"],
          "AND",
          ["location","anyof","1","3"],
          "AND",
          ["mainline","is","F"],
          "AND",
          ["item.type","anyof","InvtPart"]
       ],
       columns:
       [
          search.createColumn({
             name: "transactionnumber",
             sort: search.Sort.ASC,
             label: "Transaction Number"
          }),
          search.createColumn({name: "entity", label: "Name"}),
          search.createColumn({
             name: "custcol8",
             sort: search.Sort.ASC,
             label: "JANコード"
          }),
          search.createColumn({name: "quantityuom", label: "Quantity in Transaction Units"}),
          search.createColumn({name: "statusref", label: "Status"}),
          search.createColumn({
             name: "quantityonhand",
             join: "item",
             label: "On Hand"
          }),
          search.createColumn({
             name: "isfulfillable",
             join: "item",
             label: "Can be Fulfilled"
          }),
          search.createColumn({name: "department", label: "Department"}),
          search.createColumn({name: "otherrefnum", label: "PO/Cheque Number"}),
       ]
    });
    

    循环和记录加载:

    var matches = [];
    
    salesorderSearchObj.run().each(function(result){
      var objRecord = record.load({
          type: record.Type.SALES_ORDER,
          id: result.id,
          isDynamic: true,
      });
      var push = resultToObject(result);
      push.addressid = objRecord.getValue({fieldId:'shipaddresslist'});
      log.debug("Result:",push);
      matches.push(push);
      return true;
    });
    

    这很有效。。。除了我通过搜索返回了大约1000份销售订单,这意味着记录。Load()先遍历我的治理单元,然后才能完成搜索并构建整个结果列表。

    简而言之,是否有方法返回“ 发货地址列表 “是否直接从搜索对象从销售订单记录? 或者是一种在不必加载整个记录对象的情况下动态获取该字段的方法?

    非常感谢您的帮助!

    2 回复  |  直到 7 年前
        1
  •  1
  •   Alex Hirota    7 年前

    已解决(有点)

    嘿,大家好,我四处询问,得到了一个半解决方案,所以如果其他人遇到这个问题,这里有一个解决方案。

    出于我的目的,我只使用SuiteScript,因为我认为您无法在Netsuite中获得字段,但事实证明我错了。以下是如何在Netsuite中获取字段:

    解决方案

    1: 导航到列表(>);搜索(>);保存的搜索(>);新

    2: 选择交易记录

    3: 在“条件”选项卡的“标准”子选项卡下,添加以下过滤器:

    ---选择类型:选择要提取的交易类型

    ---发货地址:不为空

    ---主线正确

    ---公式(文本): 解码({shipaddress},{customer.address},'1','0') 以1开头

    4: 在“结果”选项卡下,添加以下列:

    ---发货地址

    ---客户/项目字段是地址内部id

    5: 命名搜索并单击保存(&A);跑

    唯一需要的标准是公式,但此解决方案是从SuiteAnswers复制和粘贴的。我建议只使用公式并添加您认为合适的标准。

    要查找并发布此解决方案,r/Netsuite子Reddit上的u/seekcant将获得积分。

        2
  •  0
  •   Manu AVS    7 年前

    如果要查找客户地址的内部ID,可以将其添加到搜索列中

    search.createColumn({
             name: "internalid",
             join: "shippingAddress",
             label: "Internal ID"
          })
    
    推荐文章