【问题标题】:Get Items in a PurchaseOrder using SuiteTalk使用 SuiteTalk 获取 PurchaseOrder 中的项目
【发布时间】:2016-02-24 20:45:29
【问题描述】:

我正在尝试使用 SuiteTalk 从采购订单中获取商品和一些相关信息。我可以使用 Scala 中的以下内容通过TransactionSearch 获得所需的采购订单:

val transactionSearch = new TransactionSearch  
val search = new TransactionSearchBasic  
...
search.setLastModifiedDate(searchLastModified) //Gets POs modified in the last 10 minutes
transactionSearch.setBasic(search)  

val result = port.search(transactionSearch)  

我能够将每个结果作为 PurchaseOrder 类的实例转换为记录。

if (result.getStatus().isIsSuccess()) {
  println("Transactions: " + result.getTotalRecords)
  for (i <- 0 until result.getTotalRecords) {
    try {
      val record = result.getRecordList.getRecord.get(i).asInstanceOf[PurchaseOrder]
      record.get<...>
    }
    catch {...}  
  }
}

从这里我可以使用 getter 访问各个字段,但 ItemList 除外。

我可以在 NetSuite Web 界面中看到采购订单附加了一些项目。然而,在结果记录上使用getItemList 总是返回一个null 响应。

有什么想法吗?

【问题讨论】:

    标签: java scala netsuite suitetalk


    【解决方案1】:

    我认为您没有使用搜索首选项,这就是您无法获取采购订单行项目的原因。您必须在代码中使用以下搜索首选项 -

            SearchPreferences prefrence = new SearchPreferences();
            prefrence.bodyFieldsOnly = false;
    
            _service.searchPreferences = prefrence;
    

    以下是使用上述首选项的工作示例 -

        private void SearchPurchaseOrderByID(string strPurchaseOrderId)
        {
            TransactionSearch tranSearch = new TransactionSearch();
            TransactionSearchBasic tranSearchBasic = new TransactionSearchBasic();
    
    
            RecordRef poRef = new RecordRef();
            poRef.internalId = strPurchaseOrderId;
            poRef.type = RecordType.purchaseOrder;
            poRef.typeSpecified = true;
    
            RecordRef[] poRefs = new RecordRef[1];
            poRefs[0] = poRef;
    
            SearchMultiSelectField poID = new SearchMultiSelectField();
            poID.searchValue = poRefs;
            poID.@operator = SearchMultiSelectFieldOperator.anyOf;
            poID.operatorSpecified = true;
    
            tranSearchBasic.internalId = poID;
            tranSearch.basic = tranSearchBasic;
    
            InitService();
            SearchResult results = _service.search(tranSearch);
            if (results.status.isSuccess && results.status.isSuccessSpecified)
            {
                Record[] poRecords = results.recordList;
                PurchaseOrder purchaseOrder = (PurchaseOrder)poRecords[0];
                PurchaseOrderItemList poItemList = purchaseOrder.itemList;
                PurchaseOrderItem[] poItems = poItemList.item;
                if (poItems != null && poItems.Length > 0)
                {
                    for (var i = 0; i < poItems.Length; i++)
                    {
                        Console.WriteLine("Item Line On PO = " + poItems[i].line);                        
                        Console.WriteLine("Item Quantity = " + poItems[i].quantity);
                        Console.WriteLine("Item Descrition = " + poItems[i].description);
                    }
                }
            }
        }
    

    【讨论】:

    • 感谢您的建议。我的结果是返回采购订单,但我无法将 searchPreferences 应用于我的服务,并且仍然为 itemList 获得null。我有什么设置服务,也许我做错了:val service = new NetSuiteService();val resolver = new HeaderHandlerResolver;service.setHandlerResolver(resolver);val port = service.getNetSuitePort;val preferences = new SearchPreferences;preferences.setBodyFieldsOnly(false);我没有port.searchPreferences偏好选项。
    • 您必须将搜索首选项添加到 NetSuite 服务对象,例如 - NetSuiteService _service = new NetSuiteService(); SearchPreferences 偏好 = new SearchPreferences(); prefrence.bodyFieldsOnly = 假; _service.searchPreferences = 偏好;
    • 这取决于您如何将 WSDL 编译成 Java。如果您使用 Axis 1.4(如在 NetSuite 的演示中),那么 port(由 getNetSuitePort 返回)将是 NetSuiteBindingStub 类型。然后做port.setHeader("urn:messages_2015_2.platform.webservices.netsuite.com", "searchPreferences", prefrence);
    • wsimport 用于将 WSDL 编译成 Java。 getNetSuitePort 返回的 portNetSuitePortType 类型。我们使用的是 2014_2 平台。 port.setHeader 和 @NetSuiteExpert 建议的 service.searchPreferences 选项也不可用。创建的serviceNetSuiteService 类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多