我正在与客户的NetSuite帐户进行集成,其中包括提取发票数据以创建“第一个销售日期”(创建第一个发票)和“最后一个销售日期“(最新发票)。我的问题涉及限制响应中返回的发票金额,因为系统中目前有约265,000个发票记录 - 其中数百个可能属于一个客户记录。有没有办法只为每个客户申请两个必要的发票记录?限制在NetSuite中返回的发票对象的数量
这里是我当前的代码在C#:
int invoiceCount = 0;
private void searchInvoices()
{
// This operation requires a valid session
this.login(true);
TransactionSearch transactionsSearch = new TransactionSearch();
TransactionSearchBasic transactionSearchBasic = new TransactionSearchBasic();
transactionSearchBasic.type = new SearchEnumMultiSelectField();
[email protected] = SearchEnumMultiSelectFieldOperator.anyOf;
transactionSearchBasic.type.operatorSpecified = true;
transactionSearchBasic.type.searchValue = new string[] { "_invoice" };
transactionsSearch.basic = transactionSearchBasic;
SearchResult transactionResponse = _service.search(transactionsSearch);
Invoice[] invoices = new Invoice[transactionResponse.totalRecords];
if (transactionResponse.status.isSuccess)
{
if (transactionResponse.totalRecords > 0)
{
for (int i = 1; i <= transactionResponse.totalPages; i++)
{
invoices = processTransactionSearchResponse(transactionResponse, invoices);
if (transactionResponse.pageIndex < transactionResponse.totalPages)
{
this.setPreferences();
this.login(true);
transactionResponse = _service.searchMoreWithId(transactionResponse.searchId, i + 1);
}
}
}
else
{
_out.info("\nNothing found.");
}
}
}
private Invoice[] processTransactionSearchResponse(SearchResult transResult, Invoice[] invoices)
{
Record[] transactionRecords = transResult.recordList;
Invoice invoice = new Invoice();
foreach (Record rec in transactionRecords)
{
invoice = (Invoice)rec;
invoices[invoiceCount] = invoice;
invoiceCount++;
}
return invoices;
}
我不知道很多关于Web服务,但是从接口即可定义一个搜索,其中有一列作为发票日期的最小值,另一列是发票日期的最大值。您可以设置搜索过滤器以过滤到客户的内部ID。通过浏览Web服务搜索操作,您需要使用高级搜索而不是基本搜索来以此方式执行此操作。 – Eidolon108