C# 使用跟踪更新NetSuite项目履行记录
需要帮助将“包”添加到项目履行记录中,以允许CSR查看哪些项目根据哪些跟踪编号发货。我可以实例化ItemFulfillment记录和ItemFulfillmentPackageList对象,但ItemFulfillmentPackageList对象始终为空-无法确定如何将ItemFulfillmentPackage对象添加到集合中。我尝试了各种方法来分配ItemFulfillmentPackageList对象,但运气不佳。创建ItemFulfillmentPakage对象数组是最新的尝试。这是我的密码C# 使用跟踪更新NetSuite项目履行记录,c#,netsuite,suitetalk,C#,Netsuite,Suitetalk,需要帮助将“包”添加到项目履行记录中,以允许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));
}
}
确保您配置了搜索首选项,以便bodyFieldsOnly为true;默认情况下,其设置为false,并且不会加载子列表项。请确保配置搜索首选项,以便bodyFieldsOnly为true;默认情况下,其设置为false,并且不会加载子列表项。我也遇到了同样的问题。我最后要做的是创建包含所有相关行级别信息的Item Fulfillment事务,并将其添加到NetSuite 在此之后,我搜索刚才添加的项目完成情况,并将跟踪信息添加到记录中。我通过检查哪个包字段不等于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);
TransactionSearch xactionSearch=新建TransactionSearch();
TransactionSearchBasic xactionBasic=新建TransactionSearchBasic();
xactionBasic.createdFrom=新的SearchMultiSelectField();
xactionBasic.createdFrom@operator=SearchMultiSelectFieldOperator.anyOf;
xactionBasic.createdFrom.operatorSpecified=true;
xactionBasic.createdFrom.searchValue=新记录参考[1];
xactionBasic.createdFrom.searchValue[0]=newrecordref{internalId=“SO Internal ID”};
xactionSearch.basic=xactionBasic;
如果(useTba=“true.”等于(_custSettings[“login.useTba”]))
登录();
SearchResult res=_service.search(xactionSearch);
ReadResponse res2=新的ReadResponse();
for(int i=0;i
我也有同样的问题。我最后要做的是创建包含所有相关行级别信息的Item Fulfillment事务,并将其添加到NetSuite
在此之后,我搜索刚才添加的项目完成情况,并将跟踪信息添加到记录中。我通过检查哪个包字段不等于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);
TransactionSearch xactionSearch=新建TransactionSearch();
TransactionSearchBasic xactionBasic=新建TransactionSearchBasic();
xactionBasic.createdFrom=新的SearchMultiSelectField();
xactionBasic.createdFrom@operator=SearchMultiSelectFieldOperator.anyOf;
xactionBasic.createdFrom.operatorSpecified=true;
xactionBasic.createdFrom.searchValue=新记录参考[1];
xactionBasic.createdFrom.searchValue[0]=newrecordref{internalId=“SO Internal ID”};
xactionSearch.basic=xactionBasic;
如果(useTba=“true.”等于(_custSettings[“login.useTba”]))
登录();
SearchResult res=_service.search(xactionSearch);
ReadResponse res2=新的ReadResponse();
for(int i=0;i