在 SuiteScript 2.0 中执行求和或分组查询
Performing a Sum or Grouped Query in SuiteScript 2.0
任何人都可以给出一个关于如何执行分组或求和查询的可靠示例,即 suitescript 2.0 中的“Jane Smith 这个月完成了多少销售订单”。 2.0 的 NetSuite 帮助中心示例和文档非常分散和半生不熟。
如有任何帮助,我们将不胜感激。下面是我使用的代码。其中 returns 一个 未知错误 。如果您将 search.Summary.GROUP 和 search.Summary.COUNT 更改为小写(search.Summary.group,等等),那么您会得到一个结果,其中 orderCount 列实际上包含内部 ID , 不是总计数
var results = [],
GROUP = search.Summary.GROUP,
COUNT = search.Summary.COUNT;
var mySalesOrderSearch = search.create({
type: 'salesorder',
columns: [
"trandate",
{
name: 'salesrep',
summary: GROUP
}, {
name: 'internalid',
summary: COUNT
}],
filters: [{
name: 'mainline',
operator: 'is',
values: ['T']
}, {
name: "trandate",
operator: "within",
values: ["thisyear"]
}]
});
mySalesOrderSearch.run().each(function (result) {
var repName = result.getText({
"name": "salesrep",
"summary": GROUP
});
var orderCount = parseInt(result.getValue({
"name": "internalid",
"summary": COUNT
}), 10);
var msg = {
"title": "Order Count by Sales Rep",
"details": repName + " has sold " + orderCount + " orders."
};
results.push(msg);
log.debug(msg);
});
return results;
这是我将摘要更改为小写后的结果(search.Summary。组,等等)
{
"error": false,
"msg": "TESTING_POST_METHOD",
"data": [
{
"title": "Order Count by Sales Rep",
"details": "Victor Beisel has sold 524963 orders."
}
]
}
details key中的524963数字是销售订单的内部id,不是真实的数量。这是使用大写摘要标记(search.Summary.GROUP 等)的结果,如 NetSuite 文档所述
{
"error": true,
"msg": {
"type": "error.SuiteScriptError",
"name": "UNEXPECTED_ERROR",
"message": null,
"stack": [
"each(N/searchObject)",
"TESTING_POST_METHOD(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:159)",
"<anonymous>(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:40)",
"post(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:117)"
],
"cause": {
"type": "internal error",
"code": "UNEXPECTED_ERROR",
"details": null,
"userEvent": null,
"stackTrace": [
"each(N/searchObject)",
"TESTING_POST_METHOD(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:159)",
"<anonymous>(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:40)",
"post(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:117)"
],
"notifyOff": false
},
"id": "",
"notifyOff": false
},
"data": null
}
// Assuming N/search is imported as `s`
var mySalesOrderSearch = s.create({
type: 'salesorder'
// Use the summary property of a Column to perform grouping/summarizing
columns: [{
name: 'salesrep',
summary: s.Summary.GROUP
},{
name: 'internalid',
summary: s.Summary.COUNT
}],
filters: [{
name: 'mainline',
operator: 'is',
values: ['T']
}]
});
mySalesOrderSearch.run().each(function (result) {
var repId = result.getValue({
"name": "salesrep",
"summary": s.Summary.GROUP
});
var repName = result.getText({
"name": "salesrep",
"summary": s.Summary.GROUP
});
var orderCount = parseInt(result.getValue({
"name": "internalid",
"summary": s.Summary.COUNT
}), 10);
log.debug({
"title": "Order Count by Sales Rep",
"details": repName + " has sold " + orderCount + " orders."
});
return true;
});
具体按月分组有点困难,因为您需要在适当的日期字段上使用带有 TO_CHAR
的公式来获得正确的月份。
任何人都可以给出一个关于如何执行分组或求和查询的可靠示例,即 suitescript 2.0 中的“Jane Smith 这个月完成了多少销售订单”。 2.0 的 NetSuite 帮助中心示例和文档非常分散和半生不熟。
如有任何帮助,我们将不胜感激。下面是我使用的代码。其中 returns 一个 未知错误 。如果您将 search.Summary.GROUP 和 search.Summary.COUNT 更改为小写(search.Summary.group,等等),那么您会得到一个结果,其中 orderCount 列实际上包含内部 ID , 不是总计数
var results = [],
GROUP = search.Summary.GROUP,
COUNT = search.Summary.COUNT;
var mySalesOrderSearch = search.create({
type: 'salesorder',
columns: [
"trandate",
{
name: 'salesrep',
summary: GROUP
}, {
name: 'internalid',
summary: COUNT
}],
filters: [{
name: 'mainline',
operator: 'is',
values: ['T']
}, {
name: "trandate",
operator: "within",
values: ["thisyear"]
}]
});
mySalesOrderSearch.run().each(function (result) {
var repName = result.getText({
"name": "salesrep",
"summary": GROUP
});
var orderCount = parseInt(result.getValue({
"name": "internalid",
"summary": COUNT
}), 10);
var msg = {
"title": "Order Count by Sales Rep",
"details": repName + " has sold " + orderCount + " orders."
};
results.push(msg);
log.debug(msg);
});
return results;
这是我将摘要更改为小写后的结果(search.Summary。组,等等)
{
"error": false,
"msg": "TESTING_POST_METHOD",
"data": [
{
"title": "Order Count by Sales Rep",
"details": "Victor Beisel has sold 524963 orders."
}
]
}
details key中的524963数字是销售订单的内部id,不是真实的数量。这是使用大写摘要标记(search.Summary.GROUP 等)的结果,如 NetSuite 文档所述
{
"error": true,
"msg": {
"type": "error.SuiteScriptError",
"name": "UNEXPECTED_ERROR",
"message": null,
"stack": [
"each(N/searchObject)",
"TESTING_POST_METHOD(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:159)",
"<anonymous>(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:40)",
"post(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:117)"
],
"cause": {
"type": "internal error",
"code": "UNEXPECTED_ERROR",
"details": null,
"userEvent": null,
"stackTrace": [
"each(N/searchObject)",
"TESTING_POST_METHOD(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:159)",
"<anonymous>(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:40)",
"post(/SuiteScripts/XpelAffiliateOrders/XPELSS2_3PO_Index.js:117)"
],
"notifyOff": false
},
"id": "",
"notifyOff": false
},
"data": null
}
// Assuming N/search is imported as `s`
var mySalesOrderSearch = s.create({
type: 'salesorder'
// Use the summary property of a Column to perform grouping/summarizing
columns: [{
name: 'salesrep',
summary: s.Summary.GROUP
},{
name: 'internalid',
summary: s.Summary.COUNT
}],
filters: [{
name: 'mainline',
operator: 'is',
values: ['T']
}]
});
mySalesOrderSearch.run().each(function (result) {
var repId = result.getValue({
"name": "salesrep",
"summary": s.Summary.GROUP
});
var repName = result.getText({
"name": "salesrep",
"summary": s.Summary.GROUP
});
var orderCount = parseInt(result.getValue({
"name": "internalid",
"summary": s.Summary.COUNT
}), 10);
log.debug({
"title": "Order Count by Sales Rep",
"details": repName + " has sold " + orderCount + " orders."
});
return true;
});
具体按月分组有点困难,因为您需要在适当的日期字段上使用带有 TO_CHAR
的公式来获得正确的月份。