【问题标题】:Limit the amount of invoice objects returned in NetSuite限制 NetSuite 中返回的发票对象数量
【发布时间】:2016-06-29 20:39:43
【问题描述】:

我正在与客户的 NetSuite 帐户进行集成,其中包括提取发票数据以创建“第一个销售日期”(创建的第一个发票)和一个“最后一个销售日期”(创建的最新发票)。我的问题涉及限制响应中返回的发票数量,因为目前他们的系统中有大约 265,000 个发票记录——其中数百个可以属于一个客户记录。有没有办法只为每个客户请求两个必要的发票记录?

这是我当前的 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();
    transactionSearchBasic.type.@operator = 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 服务搜索操作,您需要使用高级搜索而不是基本搜索来以这种方式执行此操作。

标签: c# web-services netsuite invoice


【解决方案1】:

totalRecords 的长度是 265k 吗?

如果是这样,那么你不能真的说给我返回 X 条记录,但你可以做一些事情,比如按日期过滤。

【讨论】:

    【解决方案2】:

    首先创建一个包含所有客户的搜索,然后创建一个 foreach 以获取发票或像这样玩 trandate:

    SearchDateField date = new SearchDateField();
    date.@operator = SearchDateFieldOperator.before;
    date.operatorSpecified = true;
    date.searchValue = DateTime.Now.AddDays
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多