diff --git a/lib/plugins.js b/lib/plugins.js index 935a13a4..4a7ba823 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -153,30 +153,27 @@ function plugins (settings, deviceId) { if (!cashOutConfig.active) return Promise.resolve() return Promise.all([dbm.cassetteCounts(deviceId), cashOutHelper.redeemableTxs(deviceId, excludeTxId)]) - .then(([_cassettes, _redeemableTxs]) => { - const redeemableTxs = _.reject(_.matchesProperty('id', excludeTxId), _redeemableTxs) + .then(([{ counts, numberOfCassettes }, redeemableTxs]) => { + redeemableTxs = _.reject(_.matchesProperty('id', excludeTxId), redeemableTxs) - const denominations = [] - _.forEach(it => { - denominations.push(cashOutConfig[`cassette${it + 1}`]) - }, _.times(_.identity(), _cassettes.numberOfCassettes)) + const denominations = _.map( + it => cashOutConfig[`cassette${it}`], + _.range(1, numberOfCassettes+1) + ) - const virtualCassettes = denominations.length ? [Math.max(...denominations) * 2] : [] - - const counts = _cassettes.counts - - if (counts.length !== denominations.length) { + if (counts.length !== denominations.length) throw new Error('Denominations and respective counts do not match!') - } - const cassettes = [] - _.forEach(it => { - cassettes.push({ + const cassettes = _.map( + it => ({ name: `cassette${it + 1}`, denomination: parseInt(denominations[it], 10), count: parseInt(counts[it], 10) - }) - }, _.times(_.identity(), _cassettes.numberOfCassettes)) + }), + _.range(0, numberOfCassettes) + ) + + const virtualCassettes = denominations.length ? [Math.max(...denominations) * 2] : [] try { return {