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()
|
const amountNum = amount.toNumber()
|
||||||
|
|
||||||
|
console.log('cassettes', cassettes)
|
||||||
|
|
||||||
const sortedCassettes = _.orderBy(cassetteMap, ['denomination'], ['desc'])
|
const sortedCassettes = _.orderBy(cassetteMap, ['denomination'], ['desc'])
|
||||||
|
|
||||||
const finalDist = []
|
const finalDist = []
|
||||||
|
|
|
||||||
|
|
@ -37,22 +37,14 @@ function mapDispense (tx) {
|
||||||
|
|
||||||
if (_.isEmpty(bills)) return {}
|
if (_.isEmpty(bills)) return {}
|
||||||
|
|
||||||
return {
|
const res = {}
|
||||||
provisioned_1: bills[0].provisioned,
|
|
||||||
provisioned_2: bills[1].provisioned,
|
_.forEach(it => {
|
||||||
provisioned_3: bills[2].provisioned,
|
res[`provisioned_${it + 1}`] = bills[it].provisioned
|
||||||
provisioned_4: bills[3].provisioned,
|
res[`denomination_${it + 1}`] = bills[it].denomination
|
||||||
dispensed_1: bills[0].dispensed,
|
res[`dispensed_${it + 1}`] = bills[it].dispensed
|
||||||
dispensed_2: bills[1].dispensed,
|
res[`rejected_${it + 1}`] = bills[it].rejected
|
||||||
dispensed_3: bills[2].dispensed,
|
}, _.times(_.identity(), _.size(bills)))
|
||||||
dispensed_4: bills[3].dispensed,
|
|
||||||
rejected_1: bills[0].rejected,
|
return res
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -111,20 +111,24 @@ function updateCassettes (t, tx) {
|
||||||
if (!dispenseOccurred(tx.bills)) return Promise.resolve()
|
if (!dispenseOccurred(tx.bills)) return Promise.resolve()
|
||||||
|
|
||||||
const sql = `update devices set
|
const sql = `update devices set
|
||||||
cassette1 = cassette1 - $1,
|
${_.size(tx.bills) > 0 ? `cassette1 = cassette1 - $1` : ``}
|
||||||
cassette2 = cassette2 - $2,
|
${_.size(tx.bills) > 1 ? `, cassette2 = cassette2 - $2` : ``}
|
||||||
cassette3 = cassette3 - $3,
|
${_.size(tx.bills) > 2 ? `, cassette3 = cassette3 - $3` : ``}
|
||||||
cassette4 = cassette4 - $4
|
${_.size(tx.bills) > 3 ? `, cassette4 = cassette4 - $4` : ``}
|
||||||
where device_id = $5
|
where device_id = $${_.size(tx.bills) + 1}
|
||||||
returning cassette1, cassette2, cassette3, cassette4`
|
returning
|
||||||
|
${_.size(tx.bills) > 0 ? `cassette1` : ``}
|
||||||
|
${_.size(tx.bills) > 1 ? `, cassette2`: ``}
|
||||||
|
${_.size(tx.bills) > 2 ? `, cassette3` : ``}
|
||||||
|
${_.size(tx.bills) > 3 ? `, cassette4` : ``}`
|
||||||
|
|
||||||
const values = [
|
const values = []
|
||||||
tx.bills[0]?.dispensed ?? 0 + tx.bills[0]?.rejected ?? 0,
|
|
||||||
tx.bills[1]?.dispensed ?? 0 + tx.bills[1]?.rejected ?? 0,
|
_.forEach(it => values.push(
|
||||||
tx.bills[2]?.dispensed ?? 0 + tx.bills[2]?.rejected ?? 0,
|
tx.bills[it].dispensed + tx.bills[it].rejected
|
||||||
tx.bills[3]?.dispensed ?? 0 + tx.bills[3]?.rejected ?? 0,
|
), _.times(_.identity(), _.size(tx.bills)))
|
||||||
tx.deviceId
|
|
||||||
]
|
values.push(tx.deviceId)
|
||||||
|
|
||||||
return t.one(sql, values)
|
return t.one(sql, values)
|
||||||
.then(r => socket.emit(_.assign(r, {op: 'cassetteUpdate', deviceId: tx.deviceId})))
|
.then(r => socket.emit(_.assign(r, {op: 'cassetteUpdate', deviceId: tx.deviceId})))
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,6 @@ function convertField (key) {
|
||||||
|
|
||||||
function addDbBills (tx) {
|
function addDbBills (tx) {
|
||||||
const bills = tx.bills
|
const bills = tx.bills
|
||||||
console.log('tx', tx)
|
|
||||||
if (_.isEmpty(bills)) return tx
|
if (_.isEmpty(bills)) return tx
|
||||||
|
|
||||||
const billsObj = {
|
const billsObj = {
|
||||||
|
|
@ -55,7 +54,6 @@ function addDbBills (tx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function toDb (tx) {
|
function toDb (tx) {
|
||||||
console.log('tx1', tx)
|
|
||||||
const massager = _.flow(convertBigNumFields, addDbBills,
|
const massager = _.flow(convertBigNumFields, addDbBills,
|
||||||
_.omit(['direction', 'bills']), _.mapKeys(convertField))
|
_.omit(['direction', 'bills']), _.mapKeys(convertField))
|
||||||
|
|
||||||
|
|
@ -89,7 +87,7 @@ function toObj (row) {
|
||||||
if (_.every(_.isNil, _.at(billFields, newObj))) return newObj
|
if (_.every(_.isNil, _.at(billFields, newObj))) return newObj
|
||||||
if (_.some(_.isNil, _.at(billFields, newObj))) throw new Error('Missing cassette values')
|
if (_.some(_.isNil, _.at(billFields, newObj))) throw new Error('Missing cassette values')
|
||||||
|
|
||||||
const bills = [
|
const billFieldsArr = [
|
||||||
{
|
{
|
||||||
denomination: newObj.denomination1,
|
denomination: newObj.denomination1,
|
||||||
provisioned: newObj.provisioned1
|
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))
|
return _.set('bills', bills, _.omit(billFields, newObj))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,25 +70,12 @@ function postProcess (txVector, justAuthorized, pi) {
|
||||||
return bills
|
return bills
|
||||||
})
|
})
|
||||||
.then(bills => {
|
.then(bills => {
|
||||||
const provisioned1 = bills[0].provisioned
|
const rec = {}
|
||||||
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 = {
|
_.forEach(it => {
|
||||||
provisioned_1: provisioned1,
|
rec[`provisioned_${it + 1}`] = bills[it].provisioned
|
||||||
provisioned_2: provisioned2,
|
rec[`denomination_${it + 1}`] = bills[it].denomination
|
||||||
provisioned_3: provisioned3,
|
}, _.times(_.identity(), _.size(bills)))
|
||||||
provisioned_4: provisioned4,
|
|
||||||
denomination_1: denomination1,
|
|
||||||
denomination_2: denomination2,
|
|
||||||
denomination_3: denomination3,
|
|
||||||
denomination_4: denomination4
|
|
||||||
}
|
|
||||||
|
|
||||||
return cashOutActions.logAction(db, 'provisionNotes', rec, newTx)
|
return cashOutActions.logAction(db, 'provisionNotes', rec, newTx)
|
||||||
.then(_.constant({bills}))
|
.then(_.constant({bills}))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue