diff --git a/index.js b/index.js index 10e69b9..bcba7bc 100644 --- a/index.js +++ b/index.js @@ -141,14 +141,14 @@ function splitPostpaidDetail(str) { return retval; } -function calculateBaseBillAmount(detailSpitted) { +function calculateBaseBillAmount(detailSplitted) { const keywords = ['TAGIHAN', 'DENDA', 'RPPREMI']; let retval = 0; - let detailCount = (detailSpitted || []).length; + let detailCount = (detailSplitted || []).length; for (let i = 0; i < detailCount; i += 1) { - const item = detailSpitted[i]; + const item = detailSplitted[i]; if (keywords.indexOf(item.keyword.toUpperCase()) >= 0) { retval += Number(item.value) || 0; } @@ -157,6 +157,11 @@ function calculateBaseBillAmount(detailSpitted) { return retval; } +function getBillCount(msg) { + const matches = (msg || '').match(/JMLBLN:(\d+)BLN/); + return (matches && Number(matches[1])) || null; +} + exports.getRcFromMessage = getRcFromMessage; exports.getPriceFromMessage = getPriceFromMessage; exports.getSnFromMessage = getSnFromMessage; @@ -167,3 +172,4 @@ exports.isPostpaidResponseMessage = isPostpaidResponseMessage; exports.getDetailFromMessage = getDetailFromMessage; exports.splitPostpaidDetail = splitPostpaidDetail; exports.calculateBaseBillAmount = calculateBaseBillAmount; +exports.getBillCount = getBillCount; diff --git a/test/main.js b/test/main.js index 6f125a5..b53f5cb 100644 --- a/test/main.js +++ b/test/main.js @@ -130,5 +130,14 @@ describe('#irs', function() { irs.calculateBaseBillAmount(splitted).should.equal(140560); }) + }); + + describe('#getBillCount', () => { + it('should return correct value', () => { + irs.getBillCount('0BNS25G5087744307740/NAMA:SUYATMAN/DAYA:900/TARIF:R1M/JMLBLN:2BLN/PERIODE:201911,201912/METERKINI:3606/METERLALU:3564/TAGIHAN:117260/ADM:5000/DENDA:9000/TOTALBAYAR:131260').should.equal(2); + should.not.exists(irs.getBillCount('0BNS25G5087744307740/NAMA:SUYATMAN/DAYA:900/TARIF:R1M/JMLBLN:BLN/PERIODE:201911,201912/METERKINI:3606/METERLALU:3564/TAGIHAN:117260/ADM:5000/DENDA:9000/TOTALBAYAR:131260')); + should.not.exists(irs.getBillCount('')); + should.not.exists(irs.getBillCount()); + }); }); }); \ No newline at end of file