diff --git a/lib/plugins.js b/lib/plugins.js index 9356137a..7f4934b5 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -161,20 +161,18 @@ function plugins (settings, deviceId) { return _.map(([acc, bill]) => acc + bill.provisioned, _.zip(sum, bills)) } - const counts = _.flow( + recyclers = _.flow( + // Sum "used" bills per recycler _.reduce(sumTxs, _.map(_.constant(0), recyclers)), - _.zip(_.map('count', recyclers)), - _.map(([count, provisioned]) => count - provisioned), + _.zip(recyclers), + // Remove used bills from recycler counts + _.map(([recycler, provisioned]) => _.set('count', recycler.count - provisioned, recycler)), )(redeemableTxs) - if (_.some(_.lt(_, 0), counts)) { + if (_.some(({ count }) => count < 0, recyclers)) throw new Error('Negative note count: %j', counts) - } - return _.map( - recycler => _.set('count', counts[recycler.number], recycler), - recyclers - ) + return recyclers } function buildAvailableCassettes (excludeTxId) {