supply cartridges id; don't update cartridge counts on dispense

This commit is contained in:
Josh Harvey 2015-04-20 00:20:56 -04:00
parent 668f745a5e
commit aebdc618bc
2 changed files with 9 additions and 48 deletions

View file

@ -191,7 +191,7 @@ exports.logEvent = function event(session, rawEvent) {
db.recordDeviceEvent(session, rawEvent);
};
function buildCartridges(counts) {
function buildCartridges(rec) {
var cartridges = cachedConfig.exchanges.settings.cartridges;
var virtualCartridges = cachedConfig.exchanges.settings.virtualCartridges;
if (!cartridges) return null;
@ -199,14 +199,15 @@ function buildCartridges(counts) {
cartridges: [
{
denomination: cartridges[0],
count: counts[0]
count: rec.counts[0]
},
{
denomination: cartridges[1],
count: counts[1]
},
count: rec.counts[1]
}
],
virtualCartridges: virtualCartridges
virtualCartridges: virtualCartridges,
id: rec.id
};
}

View file

@ -480,51 +480,11 @@ exports.addInitialIncoming = function addInitialIncoming(session, tx, cb) {
});
};
function lastDispenseCount(client, session, transactionId, cb) {
var sql = 'SELECT count1, count2 FROM dispenses ' +
'WHERE device_fingerprint=$1 ' +
'ORDER BY id DESC LIMIT 1';
client.query(sql, [session.fingerprint], function(err, results) {
if (err) return cb(err);
if (results.rows.length === 0) return cb(null, transactionId, [0, 0]);
cb(null, transactionId, [results.rows[0].count1, results.rows[0].count2]);
});
}
function insertDispense(client, session, tx, transactionId, counts, cb) {
var fields = [
'device_fingerprint', 'transaction_id',
'dispense1', 'reject1', 'count1',
'dispense2', 'reject2', 'count2',
'refill', 'error'
];
var sql = getInsertQuery('dispenses', fields, true);
var dispense1 = tx.billDistribution[0].actualDispense;
var dispense2 = tx.billDistribution[1].actualDispense;
var reject1 = tx.billDistribution[0].rejected;
var reject2 = tx.billDistribution[1].rejected;
var count1 = Math.max(counts[0] - (dispense1 + reject1), 0);
var count2 = Math.max(counts[1] - (dispense2 + reject2), 0);
var values = [
session.fingerprint, transactionId,
dispense1, reject1, count1, dispense2, reject2, count2,
false, tx.error
];
client.query(sql, values, cb);
}
exports.addDispense = function addDispense(session, tx) {
connect(function(cerr, client, done) {
if (cerr) return;
async.waterfall([
async.apply(insertIncoming, client, session, tx, 0, tx.fiat,
'dispense', 'authorized'),
async.apply(lastDispenseCount, client, session),
async.apply(insertDispense, client, session, tx)
], function(err) {
insertIncoming(client, session, tx, 0, tx.fiat, 'dispense', 'authorized', function () {
done();
if (err) logger.error(err);
});
@ -534,7 +494,7 @@ exports.addDispense = function addDispense(session, tx) {
exports.cartridgeCounts = function cartridgeCounts(session, cb) {
connect(function(cerr, client, done) {
if (cerr) return cb(cerr);
var sql = 'SELECT count1, count2 FROM dispenses ' +
var sql = 'SELECT id, count1, count2 FROM dispenses ' +
'WHERE device_fingerprint=$1 ' +
'ORDER BY id DESC LIMIT 1';
query(client, sql, [session.fingerprint], function(err, results) {
@ -543,7 +503,7 @@ exports.cartridgeCounts = function cartridgeCounts(session, cb) {
var counts = results.rows.length === 1 ?
[results.rows[0].count1, results.rows[0].count2] :
[0, 0];
cb(null, counts);
cb(null, {id: results.rows[0].id, counts: counts});
});
});
};