#php #netsuite
#php #NetSuite
Вопрос:
У меня есть несколько простых кодов, которые ищут в NetSuite заказы клиентов. Сначала возвращаются самые старые заказы. Есть ли простой способ вернуть их, упорядоченные по newest first? Я попытался просмотреть внутренности используемого нами Ryan Winchester SDK, а также провел множество поисковых запросов в Google, но, на удивление, не нашел ничего полезного
Вот код
<?php
namespace AppControllerProduct;
use AppComponentNetSuiteServiceFactoryInterface;
use NetSuiteClassesCustomerSearchBasic;
use NetSuiteClassesRecordRef;
use NetSuiteClassesSearchEnumMultiSelectField;
use NetSuiteClassesSearchMultiSelectField;
use NetSuiteClassesSearchRequest;
use NetSuiteClassesTransactionSearch;
use NetSuiteClassesTransactionSearchBasic;
use SymfonyComponentRoutingAnnotationRoute;
class QuickTest
{
private ServiceFactoryInterface $netSuiteServiceFactory;
public function __construct(ServiceFactoryInterface $netSuiteServiceFactory) {
$this->netSuiteServiceFactory = $netSuiteServiceFactory;
}
/**
* @Route(path="benstest")
*/
public function bensTest()
{
$customerSearchBasic = new CustomerSearchBasic();
$searchValue = new RecordRef();
// @phpstan-ignore-next-line
$searchValue->type = 'customer';
$searchValue->internalId = (string) '14835';
$searchMultiSelectField = new SearchMultiSelectField();
setFields($searchMultiSelectField, ['operator' => 'anyOf', 'searchValue' => $searchValue]);
$customerSearchBasic->internalId = $searchMultiSelectField;
$transactionSearchBasic = new TransactionSearchBasic();
$searchMultiSelectEnumField = new SearchEnumMultiSelectField();
setFields($searchMultiSelectEnumField, ['operator' => 'anyOf', 'searchValue' => "_salesOrder"]);
$transactionSearchBasic->type = $searchMultiSelectEnumField;
$transactionSearch = new TransactionSearch();
$transactionSearch->basic = $transactionSearchBasic;
$transactionSearch->customerJoin = $customerSearchBasic;
$request = new SearchRequest();
$request->searchRecord = $transactionSearch;
$nsService = $this->netSuiteServiceFactory->getNetSuiteService();
$nsService->setSearchPreferences(false, 10);
$response = $nsService->search($request);
dd($response);
}
}
Ответ №1:
Я не вижу способа сделать это на лету как часть вашего поиска. Похоже, что в API нет элементов управления типа OrderBy / sortBy, только размер страницы результатов. Мне кажется, что для достижения этой цели вам нужно создать пользовательский поиск в NetSuite, затем использовать TransactionSearchAdvanced
объект, установив $savedSearchScriptId
(который, по-видимому, ожидает поле «ID» из интерфейса) соответствующим образом. Прикрепите TransactionSearch
к нему a в качестве $criteria
свойства, и вы должны быть в пути.