如何在 Netsuite 中查询贷记凭证 API

How to query for credit memos in Netsuite API

这与我之前问过的一个问题有关:

该问题的答案中描述的技术非常有效,但它不能处理贷记凭证。我在弄清楚如何考虑贷项通知单时遇到问题。

例如,我有一条显示以下值的客户记录:

BALANCE
1950.00

OVERDUE BALANCE
2000.00

CURRENT     1-30 DAYS     31-60 DAYS     61-90 DAYS     OVER 90 DAYS
0.00        -50.00        2,000.00       0.00           0.00

我可以很好地提取 2000,但我似乎无法从贷项通知单中提取 -50。

我尝试调整发票查询来执行此操作:

new nlobjSearchFilter('amountremaining', null, 'notequalto', 0),

我还尝试单独查询贷项通知单:

var agingcmemo = nlapiSearchRecord(
    'creditmemo',
    null,
    [
        new nlobjSearchFilter('daysoverdue', null, 'greaterthan', 0),
        new nlobjSearchFilter('mainline', null, 'is', 'T'),
        new nlobjSearchFilter('amountremaining', null, 'notequalto', 0),
        new nlobjSearchFilter('entity', null, 'is', result[0].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')                    
    ]
);

该查询 returns 没有行。如果我删除除实体之外的所有条件,它 returns 两行,这两行都不是实际的贷记凭证。

有人知道如何获得包括贷项通知单在内的正确数字吗?

贷记凭证没有逾期天数的概念。如果您 运行 下面的代码总和为 50 美元?您应该能够使用它来获取您的未结贷记凭证价值并将其与您的未结发票金额相结合。

除此之外,您是否有未使用的付款或客户存款?

var agingcmemo = nlapiSearchRecord(
    'creditmemo',
    null,
    [
        new nlobjSearchFilter('mainline', null, 'is', 'T'),
        new nlobjSearchFilter('status', null, 'anyof', ['CustCred:A']),
        new nlobjSearchFilter('entity', null, 'is', 996)
    ],
    [
        new nlobjSearchColumn('entity', null, 'group'),
        new nlobjSearchColumn('amountremaining', null, 'sum')                 
    ]
);
agingcmemo.forEach(function(c){
var cols = c.getAllColumns();
cols.forEach(function(col, idx){ console.log(idx +': '+c.getValue(col));});
console.log('');
});

我使用了一种不同的方法在“保存的搜索”中构建老化报告,这种方法可能更适合您,因为它也考虑了贷记凭证。 (年龄以下的组按月而不是 30 天递增,但您可以将它们替换为您之前使用的公式):

您可以在搜索条件中定义 "Transaction Type",这样您就可以为每个特定的交易类型创建保存的搜索。或者,您可以将交易类型添加为过滤器,甚至可以按交易类型对其进行颜色编码。在我看来,事务搜索是 NS 中所有搜索之母,因为大多数对象和字段都暴露于这种搜索类型。