Netsuite Suitescript 2-客户在搜索中的存款余额

时间:2018-08-23 13:12:01

标签: javascript netsuite suitescript2.0

使用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字段对于所有存款都为空。

2 个答案:

答案 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;