使用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
字段对于所有存款都为空。
答案 0 :(得分:1)
amountremaining
列与客户存款无关,但是您可以使用以下方法来实现所需的目的。
首先,您需要添加一个过滤器以确保提取正确的“正在应用的交易”:
["applyingtransaction.type","anyof","DepAppl"]
这可确保您获得的是“存款申请”,而不是“存款”,这可能是正在应用客户存款的交易。然后,您需要添加一个带有公式的列,以将所有这些存款申请中的金额添加到客户存款的总额中:
search.createColumn({
name: "formulacurrency",
summary: "MIN",
formula: "min({amount}) + SUM({applyingtransaction.amount})",
label: "Formula (Currency)"
})
请注意,这是加,而不是减去,因为applyingtransaction.amount
作为负数返回。
这也不是必须要有一个汇总列才能起作用(因为每个客户存款可能有多个应用交易),因此您将需要对所有需要返回的列应用分组或汇总功能。最重要的是,您需要按客户存款的内部ID或文件编号进行分组。
答案 1 :(得分:0)
使用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;