2

SuiteTalk を使用して注文書からアイテムと関連情報の一部を取得しようとしています。TransactionSearchScala で以下 を使用して、目的の発注書を取得できます。

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応答が返されます。

何かご意見は?

4

1 に答える 1

3

検索設定を使用していないため、注文書の品目を取得できないと思います。コードで次の検索設定を使用する必要があります-

        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);
                }
            }
        }
    }
于 2016-02-25T09:08:53.413 に答える