SuiteScript 2.0 search.createFilter 公式无效
SuiteScript 2.0 search.createFilter with formula not working
我正在尝试根据给定的电子邮件和手机过滤客户 phone。这些客户必须在两者上都匹配。我的搜索是
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
}
});
它目前会过滤给所有具有给定电子邮件地址的客户,但不会根据手机 phone 进行过滤。我不明白为什么第一个过滤器上的 isor 是错误的,所以这应该是一组 AND 过滤器。
如果 formulanumeric
为 search-filter,您的 search-operator 应该是 equalto
(search.Operator.EQUALTO) 因为您的 return 值将是数字,而,您可以使用 formulatext
和 search-filter 以及 is
(search.Operator.IS).
进一步阅读检查NetSuite's Search Operator。
我正在尝试根据给定的电子邮件和手机过滤客户 phone。这些客户必须在两者上都匹配。我的搜索是
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
}
});
它目前会过滤给所有具有给定电子邮件地址的客户,但不会根据手机 phone 进行过滤。我不明白为什么第一个过滤器上的 isor 是错误的,所以这应该是一组 AND 过滤器。
如果 formulanumeric
为 search-filter,您的 search-operator 应该是 equalto
(search.Operator.EQUALTO) 因为您的 return 值将是数字,而,您可以使用 formulatext
和 search-filter 以及 is
(search.Operator.IS).
进一步阅读检查NetSuite's Search Operator。