fix: backend dynamic bill array usage
This commit is contained in:
parent
3c1a58da4a
commit
96fa94fde6
5 changed files with 41 additions and 54 deletions
|
|
@ -16,6 +16,8 @@ exports.makeChange = function makeChange (cassettes, amount) {
|
|||
}))
|
||||
const amountNum = amount.toNumber()
|
||||
|
||||
console.log('cassettes', cassettes)
|
||||
|
||||
const sortedCassettes = _.orderBy(cassetteMap, ['denomination'], ['desc'])
|
||||
|
||||
const finalDist = []
|
||||
|
|
|
|||
|
|
@ -37,22 +37,14 @@ function mapDispense (tx) {
|
|||
|
||||
if (_.isEmpty(bills)) return {}
|
||||
|
||||
return {
|
||||
provisioned_1: bills[0].provisioned,
|
||||
provisioned_2: bills[1].provisioned,
|
||||
provisioned_3: bills[2].provisioned,
|
||||
provisioned_4: bills[3].provisioned,
|
||||
dispensed_1: bills[0].dispensed,
|
||||
dispensed_2: bills[1].dispensed,
|
||||
dispensed_3: bills[2].dispensed,
|
||||
dispensed_4: bills[3].dispensed,
|
||||
rejected_1: bills[0].rejected,
|
||||
rejected_2: bills[1].rejected,
|
||||
rejected_3: bills[2].rejected,
|
||||
rejected_4: bills[3].rejected,
|
||||
denomination_1: bills[0].denomination,
|
||||
denomination_2: bills[1].denomination,
|
||||
denomination_3: bills[2].denomination,
|
||||
denomination_4: bills[3].denomination
|
||||
}
|
||||
const res = {}
|
||||
|
||||
_.forEach(it => {
|
||||
res[`provisioned_${it + 1}`] = bills[it].provisioned
|
||||
res[`denomination_${it + 1}`] = bills[it].denomination
|
||||
res[`dispensed_${it + 1}`] = bills[it].dispensed
|
||||
res[`rejected_${it + 1}`] = bills[it].rejected
|
||||
}, _.times(_.identity(), _.size(bills)))
|
||||
|
||||
return res
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,20 +111,24 @@ function updateCassettes (t, tx) {
|
|||
if (!dispenseOccurred(tx.bills)) return Promise.resolve()
|
||||
|
||||
const sql = `update devices set
|
||||
cassette1 = cassette1 - $1,
|
||||
cassette2 = cassette2 - $2,
|
||||
cassette3 = cassette3 - $3,
|
||||
cassette4 = cassette4 - $4
|
||||
where device_id = $5
|
||||
returning cassette1, cassette2, cassette3, cassette4`
|
||||
${_.size(tx.bills) > 0 ? `cassette1 = cassette1 - $1` : ``}
|
||||
${_.size(tx.bills) > 1 ? `, cassette2 = cassette2 - $2` : ``}
|
||||
${_.size(tx.bills) > 2 ? `, cassette3 = cassette3 - $3` : ``}
|
||||
${_.size(tx.bills) > 3 ? `, cassette4 = cassette4 - $4` : ``}
|
||||
where device_id = $${_.size(tx.bills) + 1}
|
||||
returning
|
||||
${_.size(tx.bills) > 0 ? `cassette1` : ``}
|
||||
${_.size(tx.bills) > 1 ? `, cassette2`: ``}
|
||||
${_.size(tx.bills) > 2 ? `, cassette3` : ``}
|
||||
${_.size(tx.bills) > 3 ? `, cassette4` : ``}`
|
||||
|
||||
const values = [
|
||||
tx.bills[0]?.dispensed ?? 0 + tx.bills[0]?.rejected ?? 0,
|
||||
tx.bills[1]?.dispensed ?? 0 + tx.bills[1]?.rejected ?? 0,
|
||||
tx.bills[2]?.dispensed ?? 0 + tx.bills[2]?.rejected ?? 0,
|
||||
tx.bills[3]?.dispensed ?? 0 + tx.bills[3]?.rejected ?? 0,
|
||||
tx.deviceId
|
||||
]
|
||||
const values = []
|
||||
|
||||
_.forEach(it => values.push(
|
||||
tx.bills[it].dispensed + tx.bills[it].rejected
|
||||
), _.times(_.identity(), _.size(tx.bills)))
|
||||
|
||||
values.push(tx.deviceId)
|
||||
|
||||
return t.one(sql, values)
|
||||
.then(r => socket.emit(_.assign(r, {op: 'cassetteUpdate', deviceId: tx.deviceId})))
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ function convertField (key) {
|
|||
|
||||
function addDbBills (tx) {
|
||||
const bills = tx.bills
|
||||
console.log('tx', tx)
|
||||
if (_.isEmpty(bills)) return tx
|
||||
|
||||
const billsObj = {
|
||||
|
|
@ -55,7 +54,6 @@ function addDbBills (tx) {
|
|||
}
|
||||
|
||||
function toDb (tx) {
|
||||
console.log('tx1', tx)
|
||||
const massager = _.flow(convertBigNumFields, addDbBills,
|
||||
_.omit(['direction', 'bills']), _.mapKeys(convertField))
|
||||
|
||||
|
|
@ -89,7 +87,7 @@ function toObj (row) {
|
|||
if (_.every(_.isNil, _.at(billFields, newObj))) return newObj
|
||||
if (_.some(_.isNil, _.at(billFields, newObj))) throw new Error('Missing cassette values')
|
||||
|
||||
const bills = [
|
||||
const billFieldsArr = [
|
||||
{
|
||||
denomination: newObj.denomination1,
|
||||
provisioned: newObj.provisioned1
|
||||
|
|
@ -108,6 +106,10 @@ function toObj (row) {
|
|||
}
|
||||
]
|
||||
|
||||
// There can't be bills with denomination === 0.
|
||||
// If a bill has denomination === 0, then that cassette is not set and should be filtered out.
|
||||
const bills = _.filter(it => it.denomination > 0, billFieldsArr)
|
||||
|
||||
return _.set('bills', bills, _.omit(billFields, newObj))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -70,25 +70,12 @@ function postProcess (txVector, justAuthorized, pi) {
|
|||
return bills
|
||||
})
|
||||
.then(bills => {
|
||||
const provisioned1 = bills[0].provisioned
|
||||
const provisioned2 = bills[1].provisioned
|
||||
const provisioned3 = bills[2].provisioned
|
||||
const provisioned4 = bills[3].provisioned
|
||||
const denomination1 = bills[0].denomination
|
||||
const denomination2 = bills[1].denomination
|
||||
const denomination3 = bills[2].denomination
|
||||
const denomination4 = bills[3].denomination
|
||||
const rec = {}
|
||||
|
||||
const rec = {
|
||||
provisioned_1: provisioned1,
|
||||
provisioned_2: provisioned2,
|
||||
provisioned_3: provisioned3,
|
||||
provisioned_4: provisioned4,
|
||||
denomination_1: denomination1,
|
||||
denomination_2: denomination2,
|
||||
denomination_3: denomination3,
|
||||
denomination_4: denomination4
|
||||
}
|
||||
_.forEach(it => {
|
||||
rec[`provisioned_${it + 1}`] = bills[it].provisioned
|
||||
rec[`denomination_${it + 1}`] = bills[it].denomination
|
||||
}, _.times(_.identity(), _.size(bills)))
|
||||
|
||||
return cashOutActions.logAction(db, 'provisionNotes', rec, newTx)
|
||||
.then(_.constant({bills}))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue