Netsuite 从一组内部 ID 中获取 SalesOrder 交易
Netsuite get SalesOrder transactions from an array of internal IDs
我正在寻找基于 Netsuite 内部 ID 的销售订单数组。
这是我正在处理的内容:
<?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);
我得到的 string
或 integer
值 $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
class 以查看 searchValue
是什么时,这正是我提供的; RecordRef[]
class SearchMultiSelectField {
public $searchValue;
public $operator;
static $paramtypesmap = array(
"searchValue" => "RecordRef[]",
"operator" => "SearchMultiSelectFieldOperator",
);
}
如何在传递内部 ID 数组时通过 Netsuites PHP 工具包获取列表或销售订单?
我已经有一段时间没用 PHP 了,但你是不是遗漏了这里的数组索引?
foreach ($salesOrderIds as $id) {
$ref = new RecordRef();
$ref->internalId = $id;
$ref->type = RecordType::salesOrder;
$salesOrders[MISSING INDEX] = $ref;
}
这就是解决方案,我在应用程序的另一部分深处找到了参考。说实话,我不确定有什么区别。我已经经历了这 2-3 倍,虽然我确定我遗漏了一些明显的东西,但我 认为 我正在将相同的变量链接到相同的位置,即使在在这种情况下,我将值链接到位,而不是在最初的问题中,我是单独构建每个部分,然后最后将它们链接在一起。从概念上讲,它们似乎是同一件事。无论哪种方式,希望这对将来的人有所帮助。
$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);
我正在寻找基于 Netsuite 内部 ID 的销售订单数组。
这是我正在处理的内容:
<?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);
我得到的 string
或 integer
值 $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
class 以查看 searchValue
是什么时,这正是我提供的; RecordRef[]
class SearchMultiSelectField {
public $searchValue;
public $operator;
static $paramtypesmap = array(
"searchValue" => "RecordRef[]",
"operator" => "SearchMultiSelectFieldOperator",
);
}
如何在传递内部 ID 数组时通过 Netsuites PHP 工具包获取列表或销售订单?
我已经有一段时间没用 PHP 了,但你是不是遗漏了这里的数组索引?
foreach ($salesOrderIds as $id) {
$ref = new RecordRef();
$ref->internalId = $id;
$ref->type = RecordType::salesOrder;
$salesOrders[MISSING INDEX] = $ref;
}
这就是解决方案,我在应用程序的另一部分深处找到了参考。说实话,我不确定有什么区别。我已经经历了这 2-3 倍,虽然我确定我遗漏了一些明显的东西,但我 认为 我正在将相同的变量链接到相同的位置,即使在在这种情况下,我将值链接到位,而不是在最初的问题中,我是单独构建每个部分,然后最后将它们链接在一起。从概念上讲,它们似乎是同一件事。无论哪种方式,希望这对将来的人有所帮助。
$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);