Поиск клиента по специальному полю в 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, а также любые другие фильтры, которые вам могут понадобиться.

Другие вопросы по тегам