feat: start working on backend support for dynamic cassette number
fix: multiple small fixes to both the front and back-end multi-cassette support
This commit is contained in:
parent
13e6401b22
commit
3c1a58da4a
7 changed files with 86 additions and 65 deletions
|
|
@ -109,12 +109,12 @@ function plugins (settings, deviceId) {
|
|||
if (_.isEmpty(redeemableTxs)) return orderedCassettes
|
||||
|
||||
const sumTxs = (sum, tx) => {
|
||||
const bills = tx.bills
|
||||
const sameDenominations = a => a[0].denomination === a[1].denomination
|
||||
// cash-out-helper sends 0 as fallback value, need to filter it out as there are no '0' denominations
|
||||
const bills = _.filter(it => it.denomination > 0, tx.bills)
|
||||
const sameDenominations = a => a[0]?.denomination === a[1]?.denomination
|
||||
|
||||
// Order cassettes and bills to make sure they match
|
||||
const orderedBills = _.orderBy(['denomination'], ['desc'], bills)
|
||||
console.log('orderedBills', orderedBills)
|
||||
|
||||
const doDenominationsMatch = _.every(sameDenominations, _.zip(orderedCassettes, orderedBills))
|
||||
|
||||
|
|
@ -133,24 +133,15 @@ function plugins (settings, deviceId) {
|
|||
throw new Error('Negative note count: %j', counts)
|
||||
}
|
||||
|
||||
return [
|
||||
{
|
||||
denomination: orderedCassettes[0].denomination,
|
||||
count: counts[0]
|
||||
},
|
||||
{
|
||||
denomination: orderedCassettes[1].denomination,
|
||||
count: counts[1]
|
||||
},
|
||||
{
|
||||
denomination: orderedCassettes[2].denomination,
|
||||
count: counts[2]
|
||||
},
|
||||
{
|
||||
denomination: orderedCassettes[3].denomination,
|
||||
count: counts[3]
|
||||
}
|
||||
]
|
||||
const computedCassettes = []
|
||||
_.forEach(it => {
|
||||
computedCassettes.push({
|
||||
denomination: orderedCassettes[it].denomination,
|
||||
count: counts[it]
|
||||
})
|
||||
}, _.times(_.identity(), _.size(orderedCassettes)))
|
||||
|
||||
return computedCassettes
|
||||
}
|
||||
|
||||
function buildAvailableCassettes (excludeTxId) {
|
||||
|
|
@ -158,36 +149,32 @@ function plugins (settings, deviceId) {
|
|||
|
||||
if (!cashOutConfig.active) return Promise.resolve()
|
||||
|
||||
const denominations = [cashOutConfig.cassette1, cashOutConfig.cassette2, cashOutConfig.cassette3, cashOutConfig.cassette4]
|
||||
|
||||
const virtualCassettes = [Math.max(...denominations) * 2]
|
||||
|
||||
return Promise.all([dbm.cassetteCounts(deviceId), cashOutHelper.redeemableTxs(deviceId, excludeTxId)])
|
||||
.then(([rec, _redeemableTxs]) => {
|
||||
const redeemableTxs = _.reject(_.matchesProperty('id', excludeTxId), _redeemableTxs)
|
||||
|
||||
const denominations = []
|
||||
_.forEach(it => {
|
||||
denominations.push(cashOutConfig[`cassette${it + 1}`])
|
||||
}, _.times(_.identity(), rec.numberOfCassettes))
|
||||
|
||||
const virtualCassettes = [Math.max(...denominations) * 2]
|
||||
|
||||
const counts = argv.cassettes
|
||||
? argv.cassettes.split(',')
|
||||
: rec.counts
|
||||
|
||||
const cassettes = [
|
||||
{
|
||||
denomination: parseInt(denominations[0], 10),
|
||||
count: parseInt(counts[0], 10)
|
||||
},
|
||||
{
|
||||
denomination: parseInt(denominations[1], 10),
|
||||
count: parseInt(counts[1], 10)
|
||||
},
|
||||
{
|
||||
denomination: parseInt(denominations[2], 10),
|
||||
count: parseInt(counts[2], 10)
|
||||
},
|
||||
{
|
||||
denomination: parseInt(denominations[3], 10),
|
||||
count: parseInt(counts[3], 10)
|
||||
}
|
||||
]
|
||||
if (rec.counts.length !== denominations.length) {
|
||||
throw new Error('Denominations and respective counts do not match!')
|
||||
}
|
||||
|
||||
const cassettes = []
|
||||
_.forEach(it => {
|
||||
cassettes.push({
|
||||
denomination: parseInt(denominations[it], 10),
|
||||
count: parseInt(counts[it], 10)
|
||||
})
|
||||
}, _.times(_.identity(), rec.numberOfCassettes))
|
||||
|
||||
try {
|
||||
return {
|
||||
|
|
@ -267,8 +254,6 @@ function plugins (settings, deviceId) {
|
|||
const coinsWithoutRate = _.map(mapCoinSettings, coinParams)
|
||||
const areThereAvailablePromoCodes = arr[arr.length - 1] > 0
|
||||
|
||||
console.log('cassettes', cassettes)
|
||||
|
||||
return {
|
||||
cassettes,
|
||||
rates: buildRates(tickers),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue