NetSuite SuiteTalk API-获取库存详细信息
我正在使用NetSuite的SuiteTalk(API)服务来检索程序集列表。我需要加载结果上的InventoryDetails字段,以查看分配给项目的序列号/批号。这是我正在使用的当前代码,但是结果仍然显示这些字段返回为NULL,尽管我可以看到AssemblyBuild对象的其他字段。如何在事务搜索中获取要返回的库存详细信息(序列/批次)NetSuite SuiteTalk API-获取库存详细信息,netsuite,suitetalk,Netsuite,Suitetalk,我正在使用NetSuite的SuiteTalk(API)服务来检索程序集列表。我需要加载结果上的InventoryDetails字段,以查看分配给项目的序列号/批号。这是我正在使用的当前代码,但是结果仍然显示这些字段返回为NULL,尽管我可以看到AssemblyBuild对象的其他字段。如何在事务搜索中获取要返回的库存详细信息(序列/批次) public static List<AssemblyBuildResult> Get() { var listAssemblyBui
public static List<AssemblyBuildResult> Get()
{
var listAssemblyBuilds = new List<AssemblyBuildResult>();
var service = Service.Context();
var ts = new TransactionSearch();
var tsb = new TransactionSearchBasic();
var sfType = new SearchEnumMultiSelectField
{
@operator = SearchEnumMultiSelectFieldOperator.anyOf,
operatorSpecified = true,
searchValue = new string[] { "_assemblyBuild" }
};
tsb.type = sfType;
ts.basic = tsb;
ts.inventoryDetailJoin = new InventoryDetailSearchBasic();
// perform the search
var response = service.search(ts);
response.pageSizeSpecified = true;
// Process response
if (response.status.isSuccess)
{
// Process the records returned in the response
// Get more records with pagination
if (response.totalRecords > 0)
{
for (var x = 1; x <= response.totalPages; x++)
{
var records = response.recordList;
foreach (var t in records)
{
var ab = (AssemblyBuild) t;
listAssemblyBuilds.Add(GetAssemblyBuildsResult(ab));
}
if (response.pageIndex < response.totalPages)
{
response = service.searchMoreWithId(response.searchId, x + 1);
}
}
}
}
// Parse and return NetSuite WorkOrder into assembly WorkOrderResult list
return listAssemblyBuilds;
}
公共静态列表Get()
{
var listAssemblyBuilds=新列表();
var service=service.Context();
var ts=新事务搜索();
var tsb=新事务搜索基本();
var sfType=新的SearchEnumMultiSelectField
{
@运算符=SearchEnumMultiSelectFieldOperator.anyOf,
运算符指定为true,
searchValue=新字符串[]{“\u assemblyBuild”}
};
tsb.type=sfType;
ts.basic=tsb;
ts.inventoryDetailJoin=新的InventoryDetailSearchBasic();
//执行搜索
var响应=服务搜索(ts);
response.pageSizeSpecified=true;
//过程响应
if(响应.状态.发布成功)
{
//处理响应中返回的记录
//通过分页获取更多记录
如果(response.totalRecords>0)
{
对于(var x=1;x,在经历了许多痛苦之后,我能够用以下代码解决这个问题:
/// <summary>
/// Returns List of AssemblyBuilds from NetSuite
/// </summary>
/// <returns></returns>
public static List<AssemblyBuildResult> Get(string id = "", bool getDetails = false)
{
// Object to populate and return results
var listAssemblyBuilds = new List<AssemblyBuildResult>();
// Initiate Service and SavedSearch (TransactionSearchAdvanced)
var service = Service.Context();
var tsa = new TransactionSearchAdvanced
{
savedSearchScriptId = "customsearch_web_assemblysearchmainlist"
};
// Filter by ID if specified
if (id != "")
{
tsa.criteria = new TransactionSearch()
{
basic = new TransactionSearchBasic()
{
internalId = new SearchMultiSelectField
{
@operator = SearchMultiSelectFieldOperator.anyOf,
operatorSpecified = true,
searchValue = new[] {
new RecordRef() {
type = RecordType.assemblyBuild,
typeSpecified = true,
internalId = id
}
}
}
}
};
}
// Construct custom columns to return
var tsr = new TransactionSearchRow();
var tsrb = new TransactionSearchRowBasic();
var orderIdCols = new SearchColumnSelectField[1];
var orderIdCol = new SearchColumnSelectField();
orderIdCols[0] = orderIdCol;
tsrb.internalId = orderIdCols;
var tranDateCols = new SearchColumnDateField[1];
var tranDateCol = new SearchColumnDateField();
tranDateCols[0] = tranDateCol;
tsrb.tranDate = tranDateCols;
var serialNumberCols = new SearchColumnStringField[1];
var serialNumberCol = new SearchColumnStringField();
serialNumberCols[0] = serialNumberCol;
tsrb.serialNumbers = serialNumberCols;
// Perform the Search
tsr.basic = tsrb;
tsa.columns = tsr;
var response = service.search(tsa);
// Process response
if (response.status.isSuccess)
{
var searchRows = response.searchRowList;
if (searchRows != null && searchRows.Length >= 1)
{
foreach (SearchRow t in searchRows)
{
var transactionRow = (TransactionSearchRow)t;
listAssemblyBuilds.Add(GetAssemblyBuildsResult(transactionRow, getDetails));
}
}
}
// Parse and return NetSuite WorkOrder into assembly WorkOrderResult list
return listAssemblyBuilds;
}
private static string GetAssemblyBuildLotNumbers(string id)
{
var service = Service.Context();
var serialNumbers = "";
var tsa = new TransactionSearchAdvanced
{
savedSearchScriptId = "customsearch_web_assemblysearchlineitems"
};
service.searchPreferences = new SearchPreferences { bodyFieldsOnly = false };
tsa.criteria = new TransactionSearch()
{
basic = new TransactionSearchBasic()
{
internalId = new SearchMultiSelectField
{
@operator = SearchMultiSelectFieldOperator.anyOf,
operatorSpecified = true,
searchValue = new[] {
new RecordRef() {
type = RecordType.assemblyBuild,
typeSpecified = true,
internalId = id
}
}
}
}
};
// Construct custom columns to return
var tsr = new TransactionSearchRow();
var tsrb = new TransactionSearchRowBasic();
var orderIdCols = new SearchColumnSelectField[1];
var orderIdCol = new SearchColumnSelectField();
orderIdCols[0] = orderIdCol;
tsrb.internalId = orderIdCols;
var serialNumberCols = new SearchColumnStringField[1];
var serialNumberCol = new SearchColumnStringField();
serialNumberCols[0] = serialNumberCol;
tsrb.serialNumbers = serialNumberCols;
tsr.basic = tsrb;
tsa.columns = tsr;
var response = service.search(tsa);
if (response.status.isSuccess)
{
var searchRows = response.searchRowList;
if (searchRows != null && searchRows.Length >= 1)
{
foreach (SearchRow t in searchRows)
{
var transactionRow = (TransactionSearchRow)t;
if (transactionRow.basic.serialNumbers != null)
{
return transactionRow.basic.serialNumbers[0].searchValue;
}
}
}
}
return serialNumbers;
}
private static AssemblyBuildResult GetAssemblyBuildsResult(TransactionSearchRow tsr, bool getDetails)
{
if (tsr != null)
{
var assemblyInfo = new AssemblyBuildResult
{
NetSuiteId = tsr.basic.internalId[0].searchValue.internalId,
ManufacturedDate = tsr.basic.tranDate[0].searchValue,
SerialNumbers = tsr.basic.serialNumbers[0].searchValue
};
// If selected, this will do additional NetSuite queries to get detailed data (slower)
if (getDetails)
{
// Look up Lot Number
assemblyInfo.LotNumber = GetAssemblyBuildLotNumbers(tsr.basic.internalId[0].searchValue.internalId);
}
return assemblyInfo;
}
return null;
}
//
///从NetSuite返回AssemblyBuild的列表
///
///
公共静态列表获取(字符串id=“”,bool getDetails=false)
{
//对象来填充和返回结果
var listAssemblyBuilds=新列表();
//启动服务并保存搜索(TransactionSearchAdvanced)
var service=service.Context();
var tsa=新交易搜索高级
{
savedSearchScriptId=“customsearch\u web\u assemblysearchmainlist”
};
//按ID筛选(如果指定)
如果(id!=“”)
{
tsa.criteria=新交易搜索()
{
basic=新事务搜索basic()
{
internalId=新的SearchMultiSelectField
{
@运算符=SearchMultiSelectFieldOperator.anyOf,
运算符指定为true,
searchValue=new[]{
新RecordRef(){
类型=RecordType.assemblyBuild,
指定的类型=真,
内部id=id
}
}
}
}
};
}
//构造要返回的自定义列
var tsr=new TransactionSearchRow();
var tsrb=newTransactionSearchRowBasic();
var orderIdCols=新的SearchColumnSelectField[1];
var orderIdCol=new SearchColumnSelectField();
orderIdCols[0]=orderIdCols;
tsrb.internalId=orderIdCols;
var transdatecols=新的SearchColumnDateField[1];
var tranDateCol=new SearchColumnDateField();
tranDateCols[0]=tranDateCol;
tsrb.tranDate=tranDateCols;
var serialNumberCols=newsearchColumnStringField[1];
var serialNumberCol=new SearchColumnStringField();
serialNumberCols[0]=serialNumberCol;
tsrb.serialNumbers=serialNumberCols;
//执行搜索
tsr.basic=tsrb;
tsa.columns=tsr;
var响应=服务搜索(tsa);
//过程响应
if(响应.状态.发布成功)
{
var searchRows=response.searchRowList;
if(searchRows!=null&&searchRows.Length>=1)
{
foreach(搜索行中的搜索行t)
{
var transactionRow=(TransactionSearchRow)t;
添加(GetAssemblyBuildsResult(transactionRow,getDetails));
}
}
}
//分析NetSuite工作指令并将其返回到程序集工作指令结果列表中
返回listAssemblyBuilds;
}
私有静态字符串GetAssemblyBuildLotNumber(字符串id)
{
var service=service.Context();
var serialNumbers=“”;
var tsa=新交易搜索高级
{
savedSearchScriptId=“customsearch\u web\u assemblysearchlineitems”
};
service.searchPreferences=newsearchPreferences{bodyFieldsOnly=false};
tsa.criteria=新交易搜索()
{
basic=新事务搜索basic()
{
internalId=新的SearchMultiSelectField
{
@运算符=SearchMultiSelectFieldOperator.anyOf,
运算符指定为true,
searchValue=new[]{
新RecordRef(){
类型=RecordType.assemblyBuild,
指定的类型=真,
内部id=id
}
}
}
}
};
//构造要返回的自定义列
var tsr=new TransactionSearchRow();
var tsrb=newTransactionSearchRowBasic();
var orderIdCols=新的SearchColumnSelectField[1];
var orderIdCol=new SearchColumnSelectField();
orderIdCols[0]=orderIdCols;
tsrb.internalId=orderIdCols;
var serialNumberCols=newsearchColumnStringField[1];
var serialNumberCol=new SearchColumnStringField();
serialNumberCols[0]=serialNumberCol;
tsrb.serialNumbers=serialNumberCols;
tsr.basic=tsrb;
tsa.columns=tsr;
var响应=服务搜索(tsa);
if(响应.状态.发布成功)
{
瓦尔海