From d927538f2bc028da88fdd7370c1e2bb9726e5543 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <gua@adhisimon.org> Date: Wed, 8 Jul 2015 22:21:41 +0700 Subject: [PATCH] out of stock detection --- partner-scrappingkisel.js | 22 ++++++++++++++++++++++ test.js | 22 +++++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/partner-scrappingkisel.js b/partner-scrappingkisel.js index ac41c76..10f58aa 100644 --- a/partner-scrappingkisel.js +++ b/partner-scrappingkisel.js @@ -91,6 +91,11 @@ function topupRequest(task) { var stocks = result.trx_response.stock.join(' ').trim(); var stock = parseStock(stocks, product); + if (stock == 0) { + console.log('OUT OF STOCK: ' + task['product']); + config.globals.products = productsWithout(task['product']); + } + response_code = '00'; message = 'SN=' + kode_voucher + '; ' + product + ' ' + destination + ' ' + harga + ' ref_num: ' + ref_num + ' kode_voucher: ' + kode_voucher + ' sisa stock: ' + stock + ' unit'; @@ -139,7 +144,24 @@ function parseStock(stocks, product_desc) { return 0; } +function productsWithout(to_be_removed, products) { + if (products === undefined) { + products = config.globals.products; + } + + if (products.search(/,$/) == -1) { + products = products + ','; + } + + products = products.replace(/\s+/, ''); + products = products.replace(to_be_removed + ',' , ''); + products = products.replace(/,$/, ''); + + return products; +} + exports.start = start; exports.topupRequest = topupRequest; exports.stockKeyword = stockKeyword; exports.parseStock = parseStock; +exports.productsWithout = productsWithout; diff --git a/test.js b/test.js index 7a7d429..8f9f1ad 100644 --- a/test.js +++ b/test.js @@ -32,7 +32,7 @@ describe('aaa', function() { }); }); -describe('aaa', function() { +describe('partner', function() { var partner = require('./partner-scrappingkisel'); describe("#stockKeyword", function() { @@ -87,4 +87,24 @@ describe('aaa', function() { }); }); + + describe('#productsWithout', function () { + + it('should return S10,S20,S50,S100', function() { + assert.equal('S10,S20,S50,S100', partner.productsWithout('S25', 'S10,S20,S25,S50,S100')); + }); + + it('should return S10,S20,S25,S50', function() { + assert.equal('S10,S20,S25,S50', partner.productsWithout('S100', 'S10,S20,S25,S50,S100')); + }); + + it('should return S20,S25,S50,S100', function() { + assert.equal('S20,S25,S50,S100', partner.productsWithout('S10', 'S10,S20,S25,S50,S100')); + }); + + it('should return S10,S20,S25,S50', function() { + assert.equal('S10,S20,S25,S50', partner.productsWithout('S100', 'S10,S20,S25,S50')); + }); + + }); }); -- 1.9.0