【问题标题】:Search Customer by custom field in Netsuite在 Netsuite 中按自定义字段搜索客户
【发布时间】:2013-08-13 07:35:55
【问题描述】:

我能够使 api 在 php 中工作并通过内部 id 搜索客户。 但是我有一个场景,我将通过自定义字段搜索客户。 在客户下,它有一个自定义选项卡,其中包含多个域名和域详细信息。

例如:

主要搜索条件:域名

在 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 } }

【问题讨论】:

    标签: php api netsuite


    【解决方案1】:

    这是一个通过自定义字段搜索客户的一般示例。

    您可以根据需要进行修改。

    $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);
    

    【讨论】:

      【解决方案2】:

      您将想要执行SearchRequest,而不是执行GetRequest。您的 $request 应该成为 CustomerSearchBasic 对象。然后,您可以使用$request->customFieldList 添加SearchCustom*Field 过滤器列表。构建一个新的SearchCustomStringField,例如,如果您过滤的自定义字段是一个文本字段。然后您将使用$service->search($request); 执行搜索。有关完整的 PHP 工具包文档,请参阅 here。

      听起来您的域名实际上可能是自定义子列表,而不仅仅是自定义字段。如果是这种情况,您将希望搜索自定义域记录而不是客户记录。然后,您可以查找 Customer 为 1780 的所有域,以及您可能需要的任何其他过滤器。

      【讨论】:

      • 是的,更可能是客户模块的自定义子列表,例如地址选项卡。开始从自定义域记录中检索客户是更快的方法吗? TY
      • 你能用java帮忙解决同样的问题吗?
      【解决方案3】:

      根据预览和代码客户按自定义字段搜索只有 1 个问题。

      $domain = new SearchCustomStringField();

      替换:

      $domain = new SearchStringCustomField();

      【讨论】:

      • 请edit这个答案解释它是如何工作的。该问题似乎不包含此答案中使用的任何标识符(名称)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多