Netsuite Suitescript 2 - 搜索中的客户存款余额
Netsuite Suitescript 2 - Customer Deposit remaining amount in Search
我在使用 SuiteScript 2.0 在 NetSuite 中对客户存款执行自定义搜索时遇到问题
我需要获取所有客户存款 ID、状态、存款金额和剩余金额(我指的是尚未应用于任何发票的金额)。我的问题是我不知道如何获取剩余的金额。
我试过这个:
var results = [];
search.create({
type: search.Type.CUSTOMER_DEPOSIT,
filters: [['lastmodifieddate', 'within', context.from_datetime, context.to_datetime]],
columns: [
'entity',
'status',
'amount',
'amountremaining'
]
}).run().forEach(function() {
results.push(result);
return true;
});
return results;
但是 amountremaining
所有存款的字段都为空。
amountremaining
列与客户存款无关,但您可以使用以下方法实现您的需要。
首先你需要添加一个过滤器来确保你拉取正确的'applying transactions':
["applyingtransaction.type","anyof","DepAppl"]
这可确保您得到 'Deposit Applications' 而不是 'Deposits',后者可能正在应用客户存款的交易。然后,您需要添加一个包含公式的列,以将所有这些存款申请中的金额添加到客户存款总额中:
search.createColumn({
name: "formulacurrency",
summary: "MIN",
formula: "min({amount}) + SUM({applyingtransaction.amount})",
label: "Formula (Currency)"
})
请注意,这是 添加 而不是减去,因为 applyingtransaction.amount
被 return 编辑为负数。
也不是说这需要汇总列才能工作(因为每个客户存款可能有多个应用交易),因此您需要对所有需要的列应用分组或汇总功能return。最重要的是,您需要按客户存款内部 ID 或文档编号进行 GROUP。
使用加入的applyingtransaction
字段,我设法用这段代码得到了我想要的:
var results = [];
search.create({
type: search.Type.CUSTOMER_DEPOSIT,
filters: [['lastmodifieddate', 'within', context.from_datetime, context.to_datetime]],
columns: [
'entity',
'status',
'amount',
search.createColumn({
name: "total",
join: "applyingtransaction"
})
]
}).run().forEach(function(result) {
var appliedValue = parseFloat(result.getValue({ name: 'total', join: 'applyingtransaction' }));
if (result.id in results) {
results[result.id].remaining_credit += appliedValue;
} else {
var total = parseFloat(result.getValue('total'));
results[result.id] = {
remaining_credit: parseFloat(total + appliedValue),
}
}
});
return results;
我在使用 SuiteScript 2.0 在 NetSuite 中对客户存款执行自定义搜索时遇到问题
我需要获取所有客户存款 ID、状态、存款金额和剩余金额(我指的是尚未应用于任何发票的金额)。我的问题是我不知道如何获取剩余的金额。
我试过这个:
var results = [];
search.create({
type: search.Type.CUSTOMER_DEPOSIT,
filters: [['lastmodifieddate', 'within', context.from_datetime, context.to_datetime]],
columns: [
'entity',
'status',
'amount',
'amountremaining'
]
}).run().forEach(function() {
results.push(result);
return true;
});
return results;
但是 amountremaining
所有存款的字段都为空。
amountremaining
列与客户存款无关,但您可以使用以下方法实现您的需要。
首先你需要添加一个过滤器来确保你拉取正确的'applying transactions':
["applyingtransaction.type","anyof","DepAppl"]
这可确保您得到 'Deposit Applications' 而不是 'Deposits',后者可能正在应用客户存款的交易。然后,您需要添加一个包含公式的列,以将所有这些存款申请中的金额添加到客户存款总额中:
search.createColumn({
name: "formulacurrency",
summary: "MIN",
formula: "min({amount}) + SUM({applyingtransaction.amount})",
label: "Formula (Currency)"
})
请注意,这是 添加 而不是减去,因为 applyingtransaction.amount
被 return 编辑为负数。
也不是说这需要汇总列才能工作(因为每个客户存款可能有多个应用交易),因此您需要对所有需要的列应用分组或汇总功能return。最重要的是,您需要按客户存款内部 ID 或文档编号进行 GROUP。
使用加入的applyingtransaction
字段,我设法用这段代码得到了我想要的:
var results = [];
search.create({
type: search.Type.CUSTOMER_DEPOSIT,
filters: [['lastmodifieddate', 'within', context.from_datetime, context.to_datetime]],
columns: [
'entity',
'status',
'amount',
search.createColumn({
name: "total",
join: "applyingtransaction"
})
]
}).run().forEach(function(result) {
var appliedValue = parseFloat(result.getValue({ name: 'total', join: 'applyingtransaction' }));
if (result.id in results) {
results[result.id].remaining_credit += appliedValue;
} else {
var total = parseFloat(result.getValue('total'));
results[result.id] = {
remaining_credit: parseFloat(total + appliedValue),
}
}
});
return results;