2016-06-29 24 views
0

我正在与客户的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; 
} 
+0

我不知道很多关于Web服务,但是从接口即可定义一个搜索,其中有一列作为发票日期的最小值,另一列是发票日期的最大值。您可以设置搜索过滤器以过滤到客户的内部ID。通过浏览Web服务搜索操作,您需要使用高级搜索而不是基本搜索来以此方式执行此操作。 – Eidolon108

回答

0

是在总记录长度265K?

如果是这样,那么你不能真正说回我X记录,但你可以做一些按日期过滤。

0

首先创建与所有的客户搜索,然后进行一个foreach拿到发票或玩这样的TRANDATE:

SearchDateField date = new SearchDateField(); 
[email protected] = SearchDateFieldOperator.before; 
date.operatorSpecified = true; 
date.searchValue = DateTime.Now.AddDays