Netsuite从内部ID数组中获取SalesOrder事务

问题描述 投票:0回答:2

我正在寻找基于Netsuite内部ID的SalesOrder数组。

这是我正在使用的东西:

<?php

// Collect record references to sales orders by internal ID.
$salesOrderIds = [ 1, 2, 3, 4 ];
$salesOrders = [];

foreach ($salesOrderIds as $id) {
    $ref = new RecordRef();
    $ref->internalId = $id;
    $ref->type = RecordType::salesOrder;
    $salesOrders[] = $ref;
}

// Prepare Sales Orders as field for basic search.
$field = new SearchMultiSelectField();
$field->operator = SearchMultiSelectFieldOperator::anyOf;
$field->searchValue = $salesOrders; // I have also tried a RecordRefList here as well with no luck.

// Declare search to search sales order transactions with the internal id multiselect field above.
$basic = new TransactionSearchBasic();
$basic->type = RecordType::salesOrder;
$basic->internalId = $field; // Expected type is correct: SearchMultiSelectField

// Set the search record within the search request.
$search = new SearchRequest();
$search->searchRecord = $basic;

// This is based on application code and is working as expected. 
// As far as i'm concerned, this is out of scope of the question (to my knowledge).
$response = $this->basicSearch->queryNetsuite($search, RecordType::salesOrder);

我用stringinteger$ref->internalId值得到的响应是:

class NetSuite\Classes\Status#480 (2) {
    public $statusDetail =>
    array(1) {
      [0] =>
      class NetSuite\Classes\StatusDetail#557 (4) {
        public $code =>
        string(20) "INVALID_SEARCH_VALUE"
        public $message =>
        string(35) "You need to provide a search value."
        public $afterSubmitFailed =>
        NULL
        public $type =>
        string(5) "ERROR"
      }
    }
    public $isSuccess =>
    bool(false)
  }

并且当我查看SearchMultiSelectField类以查看searchValue是什么时,这正是我所提供的; RecordRef[]

class SearchMultiSelectField {
    public $searchValue;
    public $operator;
    static $paramtypesmap = array(
        "searchValue" => "RecordRef[]",
        "operator" => "SearchMultiSelectFieldOperator",
    );
}

[传递内部ID数组时如何通过Netsuites PHP工具包获取列表或销售订单?

php netsuite
2个回答
0
投票

这是解决方案,我在应用程序的另一部分中找到了参考。说真的,我不确定有什么区别。我经历了2-3倍,虽然我确定我遗漏了一些明显的东西,但我think我在相同的位置链接了相同的变量,即使在这种情况下,我正在链接在适当的位置建立价值,而不是在最初的问题中,我分别构建每个部分,然后最终将它们链接在一起。从概念上讲,它们似乎是同一回事。无论哪种方式,希望对以后的人有所帮助。

$ids = [1, 2, 3, 4];

$tranSearchBasic = new TransactionSearchBasic();
$tranSearchBasic->internalId = new SearchMultiSelectField();
$tranSearchBasic->internalId->operator = SearchMultiSelectFieldOperator::anyOf;

foreach ($ids as $id) {
    $internalIdField = new RecordRef();
    $internalIdField->internalId = $id;
    $internalIdField->type = RecordType::salesOrder;

    $tranSearchBasic->internalId->searchValue[] = $internalIdField;
}

$searchRequest = new SearchRequest();
$searchRequest->searchRecord = $tranSearchBasic;

// Same out of scope application code.
$response = $this->basicSearch->queryNetsuite($searchRequest, RecordType::salesOrder);

-1
投票

自从我使用PHP以来已经有一段时间了,但是您不是在这里错过了数组索引吗?

foreach ($salesOrderIds as $id) {
    $ref = new RecordRef();
    $ref->internalId = $id;
    $ref->type = RecordType::salesOrder;
    $salesOrders[MISSING INDEX] = $ref;
}
© www.soinside.com 2019 - 2024. All rights reserved.