0

これは、私が以前に尋ねた質問に関連しています。

Netsuit レストレットから顧客のエージング フィールドを取得する方法

その質問への回答で説明されている手法はうまく機能しますが、クレジット メモは処理しません。クレジットメモを考慮する方法がわかりません。

たとえば、次の値を表示する顧客レコードがあります。

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')                    
    ]
);

そのクエリは行を返しません。エンティティを除くすべての条件を削除すると、2 つの行が返されますが、どちらも実際のクレジット メモではありません。

クレジットメモを含むこれらの正しい番号を取得する方法について誰か考えがありますか?

4

3 に答える 3

1

クレジットメモには延滞の概念はありません。以下のコードを実行すると、合計で 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('');
});
于 2015-08-24T22:25:45.867 に答える
0

私は別のアプローチを使用して、保存された検索でエージング レポートを作成しました。これは、クレジット メモも考慮されるため、より適切に機能する可能性があります。(以下のグループは、30 日単位ではなく、月単位で年齢を計算しますが、以前に使用していた式に置き換えることができます):

基準

結果

于 2015-08-25T00:54:05.573 に答える
0

検索基準で「取引タイプ」を定義できます。この方法で、特定の取引タイプごとに保存された検索を作成できます。または、トランザクション タイプをフィルタとして追加し、トランザクション タイプごとに色分けすることもできます。私の意見では、トランザクション検索は NS のすべての検索の母です。これは、オブジェクトとフィールドの大部分がこの検索タイプに公開されているためです。

于 2015-08-26T18:10:30.293 に答える