SuiteScript 2.0 search.createFilter с формулой не работает - PullRequest
1 голос
/ 28 марта 2019

Я пытаюсь отфильтровать клиентов по данным электронной почты и мобильного телефона. Эти клиенты должны совпадать на обоих. У меня есть поиск

function getCustomerByCriteria(data)
{
    var search = data.modules.search;
    var filters = data.filters;

    var crit = search.create({
        type: search.Type.CUSTOMER,
        filters:filters
    });

    /*var crit = search.load({
        id: 'customsearch1112'
    });*/
    log.debug({
        title: "Data Criteria",
        details: JSON.stringify(crit)
    });

    var results = crit.run().getRange({
        start : 0,
        end : 1000
    });

    return results;
}

var customerList = customerService.getCustomerByCriteria({
        filters : [
            search.createFilter({
                name : 'email',
                operator : search.Operator.IS,
                values : email,
                isor: false
            }),
            search.createFilter({
                name : 'formulanumeric',
                operator : search.Operator.IS,
                values : [1],
                formula : "CASE WHEN {mobilephone} ='"+mobile+"' THEN 1 ELSE 0 END",
            })
        ],
        modules : {
            search : search
        }
    });

В настоящее время он фильтрует выдачу всем клиентам с указанным адресом электронной почты, но не фильтрует их по мобильному телефону. Я не понимаю, почему, поскольку isor на первом фильтре имеет значение false, это должен быть набор фильтров AND.

1 Ответ

1 голос
/ 06 июня 2019

С formulanumeric в качестве поискового фильтра ваш оператор поиска должен быть equalto (search.Operator.EQUALTO), поскольку возвращаемое значение будет числом, тогда как вы можете использовать formulatext с поисковым фильтром с is (search.Operator.IS).

Для дальнейшего чтения проверьте Оператор поиска NetSuite .

...