2015-08-24 40 views
0

這涉及到一個問題,我以前問:如何查詢在NetSuite的API貸項通知單

How to get customer aging fields from a Netsuite restlet

在回答這個問題描述的技術的偉大工程,但它不處理信用卡備忘錄。我在解決如何考慮貸項憑單時遇到問題。

例如,我有一個顯示以下值的客戶記錄:

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

該查詢返回任何行。如果除去實體以外的所有條件,它將返回兩行,這兩行都不是實際的貸項憑證。

任何人有任何想法如何獲得這些正確的數字,包括貸記憑證?

回答

1

有沒有信貸備忘錄daysoverdue的概念。如果你運行下面的代碼,那麼總和爲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(''); 
}); 
+0

它看起來像我可以使用與以前相同的公式,但使用「daysopen」而不是「daysoverdue」。我在正確的軌道上嗎? –

+0

我嘗試使用像'new nlobjSearchColumn('formulanumeric',null,'sum')。setFormula('時,{daysopen} <31然後{amountremaining} else 0結束'),它似乎工作正常。 再次感謝您的幫助! –

0

我已經使用了一種不同的方法來在保存的搜索中構建老化報告,這可能對您更好,因爲它也考慮到了貸項憑證。 (以下年齡組,持續數月,而超過30天爲單位,但你可以與你之前使用的公式代替它們):

Criteria

Results

+0

您是否在那裏查詢「發票」或「貸記憑證」? –

+0

@DavidRanney這將搜索所有發送到應付賬款GL賬戶的交易,包括髮票,信用票據,期刊等。 – michoel

+0

我想我的問題是當你做報告>新搜索你選擇什麼作爲搜索類型?我假設「交易」,但我想確保我沒有做錯。 –

0

您可以在搜索定義「交易類型」標準,這樣您可以爲每個特定的交易類型創建保存的搜索。或者,您可以添加交易類型作爲過濾器,甚至可以通過交易類型對其進行顏色編碼。在我看來,交易搜索是NS中所有搜索的母親,因爲大多數對象和字段都暴露於這種搜索類型。