NetSuite和PHP:搜索SelectCustomFieldRef自定义字段

时间:2019-09-04 08:52:19

标签: php netsuite

我有一个脚本,需要从netsuite获取执行数据并有一个代码

$ myWebService = app('NetSuiteWebService');         $ myWebService-> setSearchPreferences(false,10);

    $search = new TransactionSearchBasic();

    // Record that is sales order type
    $so = new RecordRef();
    $so->type = 'salesOrder';

    // get the order item fulfillment
    $type = new SearchEnumMultiSelectField();
    $type->searchValue = '_itemFulfillment';
    $type->operator = 'anyOf';
    $search->type= $type;

    // custom field filter to get only custom field custbody_do_no_send_macship to FALSE
    $searchBooleanCustomFieldList = new SearchColumnBooleanCustomField();
    $searchBooleanCustomFieldList->searchValue = false;
    $searchBooleanCustomFieldList->scriptId = 'custbody_do_not_send_machship';

    // custom field filter to get only tracking that is not empty
    $searchStringCustomField =  new SearchStringCustomField();
    $searchStringCustomField->operator = 'notEmpty';
    $searchStringCustomField->scriptId = 'custbody13';

    // TODO: NOT CORRECT custom field filter to get only the shipping group that does not have pickup
    $searchMultiSelectCustomField = new SearchMultiSelectCustomField();
    $searchMultiSelectCustomField->scriptId = 'custbody12';
    $searchMultiSelectCustomField->operator = 'doesNotContain';
    $searchMultiSelectCustomField->searchValue = 'Pick Up';


    // set all custom field as an array to get from the search
    $searchColumnCustomFieldList = new SearchColumnCustomFieldList();
    $searchColumnCustomFieldList->customField = array(
        $searchBooleanCustomFieldList,
        $searchStringCustomField,
        $searchMultiSelectCustomField);

    // filter for the last 12 hours
    $searchDateField = new SearchDateField();
    $searchDateField->operator = "after";
    $searchDateField->searchValue = date('Y-m-d\TH:i:s.000\Z', strtotime('-12 hour'));
    $search->dateCreated = $searchDateField;

    $request = new SearchRequest();
    $request->searchRecord = $search;
    $response = $myWebService->search($request);

到目前为止,除此查询外,每个查询都为我提供了正确的结果

// TODO: NOT CORRECT custom field filter to get only the shipping group that does not have pickup
        $searchMultiSelectCustomField = new SearchMultiSelectCustomField();
        $searchMultiSelectCustomField->scriptId = 'custbody12';
        $searchMultiSelectCustomField->operator = 'doesNotContain';
        $searchMultiSelectCustomField->searchValue = 'Pick Up';

问题是自定义字段是一个SelectCustomFieldRef,其值是一个ListOrRecordRef,其值是

+customField: array:8 [▼
      0 => SelectCustomFieldRef {#410 ▼
        +value: ListOrRecordRef {#411 ▼
          +name: "Pick Up Bundaberg"
          +internalId: "10"
          +externalId: null
          +typeId: "199"
        }
        +internalId: "1551"
        +scriptId: "custbody12"
      }

我需要在此自定义字段中删除名称为“ Pick Up”的订单,但是当我运行此订单时,它仍然包含名称中带有“ Pick Up”的订单?什么是正确的查询?

1 个答案:

答案 0 :(得分:0)

多选搜索的值应该是列表中内部ID的数组。