1

需要帮助将“包裹”添加到项目履行记录中,以使 CSR 能够查看哪些项目是在哪些跟踪号下运出的。我可以实例化一个 ItemFulfillment 记录和一个 ItemFulfillmentPackageList 对象,但 ItemFulfillmentPackageList 对象始终为空 - 无法弄清楚如何将 ItemFulfillmentPackage 对象添加到集合中。我尝试了各种方法来分配给 ItemFulfillmentPackageList 对象,但没有运气。创建一个 ItemFulfillmentPakage 对象数组是最新的尝试。这是我的代码。

                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));
                    }
                }
4

2 回答 2

0

我遇到过同样的问题。我最终做的是创建 Item Fulfillment 事务,以及所有相关的行级别信息并将其添加到 NetSuite。

之后,我搜索刚刚添加的 Item Fulfillment 并将跟踪信息添加到记录中。我通过检查哪个包字段不等于 null 并将信息添加到该包列表来做到这一点。

就我而言,每个订单只使用一个跟踪号,所有包裹都将包含此号。您可以根据需要对其进行修改以添加跟踪参考。

名为“msg”的变量是包含所有发货信息的发货通知。

我的代码:

TransactionSearch xactionSearch = new TransactionSearch();

TransactionSearchBasic xactionBasic = new TransactionSearchBasic();
xactionBasic.createdFrom = new SearchMultiSelectField();
xactionBasic.createdFrom.@operator = 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);
于 2018-03-08T12:50:52.153 回答
0

确保您配置了搜索首选项,以便 bodyFieldsOnly 为真;默认情况下,它设置为 false 并且它不会加载子列表项。

于 2018-01-09T18:53:04.263 回答