Поиск клиента по специальному полю в Netsuite
Я смог заставить API работать в php и искать клиентов по внутреннему идентификатору. Однако у меня есть сценарий, где я буду искать клиента по специальному полю. Под Заказчиком есть настраиваемая вкладка, содержащая несколько доменных имен и доменных данных.
Например:
Основные критерии поиска: доменное имя
Как это возможно в netsuite php api? Очень ценю за любую помощь. Я только новичок в NetSuite. Как я могу изменить этот пример кода для поиска по настраиваемому полю?
$service = new NetSuiteService();
$request = new GetRequest();
$request->baseRef = new RecordRef();
$request->baseRef->internalId = "1780";
$request->baseRef->type = "customer";
$getResponse = $service->get($request);
if (!$getResponse->readResponse->status->isSuccess) {
echo "GET ERROR";
} else {
$customer = $getResponse->readResponse->record;
//var_dump($customer);
echo "GET SUCCESS, customer:";
echo "\nCompany name: ". $customer->companyName;
echo "\nInternal Id: ". $customer->internalId;
echo "\nEmail: ". $customer->email;
echo "\nCustomerID: ". $customer->firstName;
}
Хорошо, я пытаюсь получить пользовательскую запись всех доменов из egrubaugh360.
$service = new NetSuiteService();
$request = new GetRequest();
$request->baseRef = new CustomRecordRef();
$request->baseRef->internalId = "47";
//$request->baseRef->externalId = "xxxx";
$request->baseRef->typeId = "custom_list_domains";
$getResponse = $service->get($request);
var_dump($getResponse);
if (!$getResponse->readResponse->status->isSuccess) {
echo "GET ERROR";
} else {
var_dump($getResponse->readResponse->record);
echo "GET SUCCESS";
}
Я не уверен, что положить в "typeId", что именно тип для ввода? Это дает мне ошибку "Неверный ключ типа пользовательской записи"
object(GetResponse)#8 (1) { ["readResponse"]=> object(ReadResponse)#9 (2) { ["status"]=> object(Status)#10 (2) { ["statusDetail"]=> array(1) { [0]=> object(StatusDetail)#11 (3) { ["code"]=> string(26) "INVALID_CSTM_RCRD_TYPE_KEY" ["message"]=> string(31) "Invalid custom record type key." ["type"]=> string(5) "ERROR" } } ["isSuccess"]=> bool(false) } ["record"]=> NULL } }
2 ответа
Вот общий пример поиска клиента по настраиваемому полю.
Вы можете изменить, чтобы соответствовать вашим потребностям.
$NSservice = new NetSuiteService();
$NSservice->setSearchPreferences(false, 10);
$cs = new CustomerSearch();
$csb = new CustomerSearchBasic();
$domain = new SearchCustomStringField();
$domain->internalId = 'yourcustomfieldinternalid';
$domain->searchValue = 'text you are searching for';
$domain->operator = 'is';
$scfl = new SearchCustomFieldList();
$scfl->customField = array($domain);
$csb->customFieldList = $scfl;
$cs->basic = $csb;
$request = new SearchRequest();
$request->searchRecord = $cs;
$searchResponse = $NSservice->search($request);
В соответствии с предварительным просмотром и кодом клиента Поиск по пользовательскому полю всего на 1 вопрос ниже строки.
$ domain = new SearchCustomStringField ();
заменить:
$ domain = new SearchStringCustomField ();
Вместо того, чтобы делать GetRequest
, вы хотите сделать SearchRequest
, Ваш $request
должен стать CustomerSearchBasic
объект. Вы можете использовать $request->customFieldList
добавить список SearchCustom*Field
фильтры. Построить новый SearchCustomStringField
Например, если настраиваемое поле, по которому вы фильтруете, является текстовым полем. Тогда вы будете использовать $service->search($request);
выполнить поиск. Смотрите здесь для полной документации PHP Toolkit.
Похоже, ваши доменные имена на самом деле могут быть настраиваемым подсписком, а не просто настраиваемым полем. В этом случае вам нужно будет выполнить поиск пользовательской записи домена вместо записи клиента. После этого вы можете найти все домены, для которых "Клиент" 1780, а также любые другие фильтры, которые вам могут понадобиться.