2017-05-24 3 views
0

アイテムフルフィルメントレコードに「パッケージ」を追加して、どのアイテムがどの追跡番号で出荷されたかをCSRが確認できるようにする必要があります。 ItemFulfillmentレコードとItemFulfillmentPackageListオブジェクトをインスタンス化できますが、ItemFulfillmentPackageListオブジェクトは常にnullです.ItemFulfillmentPackageオブジェクトをコレクションに追加する方法を理解できません。私は運を使わずにItemFulfillmentPackageListオブジェクトに割り当てるさまざまな方法を試みました。 ItemFulfillmentPakageオブジェクトの配列を作成するのが最新の試みです。ここに私が持っているコードがあります。追跡機能付きNetSuiteアイテムフルフィルメントレコード

   foreach (DataRow dr in dt.Rows) 
       { 
        try 
        { 
         ItemFulfillment ifRecord = new ItemFulfillment(); 
         ifRecord.packageList = new ItemFulfillmentPackageList(); 
         ifRecord.internalId = dr["Item Fulfillment Internal ID"].ToString(); 

         ItemFulfillmentPackage ifp = new ItemFulfillmentPackage(); 

         ifp.packageDescr = dr["Package Description"].ToString(); 
         ifp.packageTrackingNumber = dr["detail_tracking_information"].ToString(); 

         ItemFulfillmentPackageList ifpl = new ItemFulfillmentPackageList(); 

         Object[] objPackages = new Object[1]; 
         objPackages[1] = ifp; 

         ifpl = (ItemFulfillmentPackageList)objPackages; 

         ifRecord.packageList = ifpl; 

         ifpl.replaceAll = false; 

         WriteResponse res = _service.update(ifRecord); 

         if (res.status.isSuccess) 
         { 
          ; 
         } 
         else if (res.status.isSuccessSpecified) 
         { 
          ; 
         } 
         else 
          displayError(res.status.statusDetail); 
        } 
        catch (Exception ex) 
        { 
         _logger.error(String.Format("Error in updateItemFulfillment DR method. {0}", ex.Message)); 
         throw new Exception(String.Format("Error in updateItemFulfillment DR method. {0}", ex.Message)); 
        } 
       } 

答えて

0

bodyFieldsOnlyがtrueになるように検索設定を構成してください。デフォルトではfalseに設定され、サブリスト項目はロードされません。

0

私は同じ問題がありました。私がやり遂げたのは、すべての関連ラインレベルの情報を持つItem Fulfillmentトランザクションを作成し、これをNetSuiteに追加することです。

この後、追加したアイテムフルフィルメントを検索し、レコードに追跡情報を追加します。私はどのパッケージフィールドがヌルと等しくないのかをチェックし、そのパッケージリストに情報を追加することでこれを行います。

私の場合、オーダーごとにトラッキング番号が1つだけ使用され、すべてのパッケージにこれが含まれます。これを変更して、必要に応じてトラッキング参照を追加することができます。

"msg"という変数は、すべての出荷情報を含む出荷通知です。

マイコード:

TransactionSearch xactionSearch = new TransactionSearch(); 

TransactionSearchBasic xactionBasic = new TransactionSearchBasic(); 
xactionBasic.createdFrom = new SearchMultiSelectField(); 
[email protected] = SearchMultiSelectFieldOperator.anyOf; 
xactionBasic.createdFrom.operatorSpecified = true; 
xactionBasic.createdFrom.searchValue = new RecordRef[1]; 
xactionBasic.createdFrom.searchValue[0] = new RecordRef { internalId = "SO Internal ID"}; 

xactionSearch.basic = xactionBasic; 
if (useTba = "true".Equals(_custSettings["login.useTba"])) 
    login(); 
SearchResult res = _service.search(xactionSearch); 
ReadResponse res2 = new ReadResponse(); 

for (int i = 0; i < res.recordList.Length; i++) 
{ 
    if (res.recordList[i] is ItemFulfillment) 
    { 
     if (useTba = "true".Equals(_custSettings["login.useTba"])) 
     login(); 
     res2 = _service.get(new RecordRef { internalId = ((ItemFulfillment)res.recordList[i]).internalId, type = RecordType.itemFulfillment, typeSpecified = true }); 
    } 
} 

     ItemFulfillment item = (ItemFulfillment)res2.record; 
     ItemFulfillment NewItem = new ItemFulfillment { internalId = item.internalId }; 

     //Fedex 
     if (item.packageFedExList != null) 
     { 
      if (item.packageFedExList.packageFedEx != null) 
      { 
       for (int i = 0; i < item.packageFedExList.packageFedEx.Length; i++) 
       { 
        item.packageFedExList.packageFedEx[i].packageTrackingNumberFedEx = msg.trackingRef; 
       } 
      } 
      NewItem.packageFedExList = item.packageFedExList; 
     } 


     if (item.packageList != null) 
     { 
      if (item.packageList.package != null) 
      { 
       for (int i = 0; i < item.packageList.package.Length; i++) 
       { 
        item.packageList.package[i].packageTrackingNumber = msg.trackingRef; 
       } 
      } 
      NewItem.packageList = item.packageList; 
     } 

     //UPS 
     if (item.packageUpsList != null) 
     { 
      if (item.packageUpsList.packageUps != null) 
      { 
       for (int i = 0; i < item.packageUpsList.packageUps.Length; i++) 
       { 
        item.packageUpsList.packageUps[i].packageTrackingNumberUps = msg.trackingRef; 
       } 
      } 
      NewItem.packageUpsList = item.packageUpsList; 
     } 

     //Usps 
     if (item.packageUspsList != null) 
     { 
      if (item.packageUspsList.packageUsps != null) 
      { 
       for (int i = 0; i < item.packageUspsList.packageUsps.Length; i++) 
       { 
        item.packageUspsList.packageUsps[i].packageTrackingNumberUsps = msg.trackingRef; 
       } 
      } 
      NewItem.packageUspsList = item.packageUspsList; 
     } 

     if (useTba = "true".Equals(_custSettings["login.useTba"])) 
      login(); 
     _service.update(NewItem); 
関連する問題