如何从 Netsuite restlet 获取客户老化字段
How to get customer aging fields from a Netsuite restlet
我运行正在解决通过 Restlet 获取客户记录的老化信息的问题。具体来说,我希望从给定客户的客户表单中获取 aging、aging1、aging2、aging3 和 aging4 字段。
在 UI 中,这些值位于 "Financial" 部分下的客户表单中,类似于:
Current 1-30 Days 31-60 Days 61-90 Days Over 90 Days
1200.00 800.00 720.37 423.23 42.00
我的 Restlet 代码看起来像这样:
…
cols[6] = new nlobjSearchColumn('aging');
var result = nlapiSearchRecord(data.record_type, null, filter, cols);
return result;
它适用于其他字段,例如 "balance",但是当我包含 "aging" 字段和 运行 我的 GET 时,我看到了这个错误:
"error": {
"code": "SSS_INVALID_SRCH_COL",
"message": "An nlobjSearchColumn contains an invalid column, or is not in proper syntax: aging."
}
很明显我做错了什么。这些领域在某种程度上是特殊的吗?我如何检索这些值?
据我所知,没有名为 'aging' 的客户的搜索栏。这是无效搜索列错误的原因。
此外,这些字段可能不会暴露给搜索或 suitescript,这就是您收到错误的原因。
我真的接触过Netsuite,之前的评论是正确的,那些字段没有暴露,所以我根本无法使用它们。
目前有一个增强请求 #238854 来公开这些字段。
很容易添加到 suitescript 上下文中。例如
var aging = nlapiSearchRecord('invoice', null, [
new nlobjSearchFilter('daysoverdue', null, 'greaterthan', 0),
new nlobjSearchFilter('mainline', null, 'is', 'T'),
new nlobjSearchFilter('amountremaining', null, 'greaterthan', 0)
//for your RESTLet maybe you need this: , new nlobjSearchFilter('entity', null, 'is', data.customer_id)
], [
new nlobjSearchColumn('entity', null, 'group'),
new nlobjSearchColumn('formulanumeric', null, 'sum').setFormula('case when {daysoverdue} < 31 then {amountremaining} else 0 end'),
new nlobjSearchColumn('formulanumeric', null, 'sum').setFormula('case when {daysoverdue} between 31 and 60 then {amountremaining} else 0 end'),
new nlobjSearchColumn('formulanumeric', null, 'sum').setFormula('case when {daysoverdue} between 61 and 90 then {amountremaining} else 0 end'),
new nlobjSearchColumn('formulanumeric', null, 'sum').setFormula('case when {daysoverdue} > 90 then {amountremaining} else 0 end')
]);
aging.forEach(function (inv) {
var cols = inv.getAllColumns();
console.log(inv.getText('entity', null, 'group') +
' 0-30: ' + inv.getValue(cols[1]) +
' 31-60: ' + inv.getValue(cols[2]) +
' 61-90: ' + inv.getValue(cols[3]) +
' > 90: ' + inv.getValue(cols[4]));
});
关于此的后续说明:将近三年后,Netsuite 仍未对增强请求采取行动,尽管它已被投票支持 30 次。此外,上述解决方案生成的数字通常(但并非总是)与 Netsuite 显示的内容一致。
我运行正在解决通过 Restlet 获取客户记录的老化信息的问题。具体来说,我希望从给定客户的客户表单中获取 aging、aging1、aging2、aging3 和 aging4 字段。
在 UI 中,这些值位于 "Financial" 部分下的客户表单中,类似于:
Current 1-30 Days 31-60 Days 61-90 Days Over 90 Days
1200.00 800.00 720.37 423.23 42.00
我的 Restlet 代码看起来像这样:
…
cols[6] = new nlobjSearchColumn('aging');
var result = nlapiSearchRecord(data.record_type, null, filter, cols);
return result;
它适用于其他字段,例如 "balance",但是当我包含 "aging" 字段和 运行 我的 GET 时,我看到了这个错误:
"error": {
"code": "SSS_INVALID_SRCH_COL",
"message": "An nlobjSearchColumn contains an invalid column, or is not in proper syntax: aging."
}
很明显我做错了什么。这些领域在某种程度上是特殊的吗?我如何检索这些值?
据我所知,没有名为 'aging' 的客户的搜索栏。这是无效搜索列错误的原因。
此外,这些字段可能不会暴露给搜索或 suitescript,这就是您收到错误的原因。
我真的接触过Netsuite,之前的评论是正确的,那些字段没有暴露,所以我根本无法使用它们。
目前有一个增强请求 #238854 来公开这些字段。
很容易添加到 suitescript 上下文中。例如
var aging = nlapiSearchRecord('invoice', null, [
new nlobjSearchFilter('daysoverdue', null, 'greaterthan', 0),
new nlobjSearchFilter('mainline', null, 'is', 'T'),
new nlobjSearchFilter('amountremaining', null, 'greaterthan', 0)
//for your RESTLet maybe you need this: , new nlobjSearchFilter('entity', null, 'is', data.customer_id)
], [
new nlobjSearchColumn('entity', null, 'group'),
new nlobjSearchColumn('formulanumeric', null, 'sum').setFormula('case when {daysoverdue} < 31 then {amountremaining} else 0 end'),
new nlobjSearchColumn('formulanumeric', null, 'sum').setFormula('case when {daysoverdue} between 31 and 60 then {amountremaining} else 0 end'),
new nlobjSearchColumn('formulanumeric', null, 'sum').setFormula('case when {daysoverdue} between 61 and 90 then {amountremaining} else 0 end'),
new nlobjSearchColumn('formulanumeric', null, 'sum').setFormula('case when {daysoverdue} > 90 then {amountremaining} else 0 end')
]);
aging.forEach(function (inv) {
var cols = inv.getAllColumns();
console.log(inv.getText('entity', null, 'group') +
' 0-30: ' + inv.getValue(cols[1]) +
' 31-60: ' + inv.getValue(cols[2]) +
' 61-90: ' + inv.getValue(cols[3]) +
' > 90: ' + inv.getValue(cols[4]));
});
关于此的后续说明:将近三年后,Netsuite 仍未对增强请求采取行动,尽管它已被投票支持 30 次。此外,上述解决方案生成的数字通常(但并非总是)与 Netsuite 显示的内容一致。