0

Is it possible to create a Search in SuiteTalk using multiple criteria? I need to search for specific Location and items, using AND/OR logical operators. Something like location = 123 AND (item = 1 OR item = 2).

My code so far returns the result for a given location, but I need only 20-30ish items (not the 1400 i have in the warehouse. The location and the items change in every search, so I need to pass an array of items as filter/criteria.

My code so far

$searchValue = new RecordRef();
$searchValue->type = 'location';
$searchValue->internalId = 123;

$searchMultiSelectField = new SearchMultiSelectField();
setFields($searchMultiSelectField, array(
'operator' => 'anyOf',
'searchValue' => $searchValue
));
$locationSearchBasic->internalId = $searchMultiSelectField;
$itemSearch->inventoryLocationJoin = $locationSearchBasic;
$itemSearchAdvance->criteria = $itemSearch;

$request = new SearchRequest();
$request->searchRecord = $itemSearchAdvance;
$searchResponse = $service->search($request);
Edgar
  • 162
  • 1
  • 10

1 Answers1

0

It is possible to have multiple criteria using AND, but as far as I know it is not possible to use OR criteria in a search. An example of the former would look something like this:

$searchValue = new RecordRef();
$searchValue->type = 'location';
$searchValue->internalId = 123;

$searchMultiSelectField = new SearchMultiSelectField();
setFields($searchMultiSelectField, array(
'operator' => 'anyOf',
'searchValue' => $searchValue
));
$locationSearchBasic->internalId = $searchMultiSelectField;
$itemSearch->inventoryLocationJoin = $locationSearchBasic;

// Add an item criteria
$searchStringField = new SearchStringField();
$searchStringField->searchValue = 1;
$itemSearchBasic = new ItemSearchBasic();
$itemSearchBasic->itemId = $searchStringField;
$itemSearch->basic = $itemSearchBasic;

$itemSearchAdvance->criteria = $itemSearch;

$request = new SearchRequest();
$request->searchRecord = $itemSearchAdvance;
$searchResponse = $service->search($request);