diff --git a/lib/handlers/getBalance.js b/lib/handlers/getBalance.js index dcd40b6..e2fd176 100644 --- a/lib/handlers/getBalance.js +++ b/lib/handlers/getBalance.js @@ -18,7 +18,7 @@ exports.handler = function getBalance(req, res, next) { throw new AleError(`Book with id ${id} does not exist`, codes.BookDoesNotExist); } const { account, perPage, page } = req.query; - const inQuote = req.query.inQuoteCurrency !== "false"; + const inQuote = req.query.inQuoteCurrency !== false; return book.getBalance({ account, perPage, page }, inQuote); }).then(balance => { res.json(balance); diff --git a/models/book.js b/models/book.js index 489c8e9..5ffe818 100644 --- a/models/book.js +++ b/models/book.js @@ -79,14 +79,19 @@ Book.prototype.getJournalEntries = function(query) { */ Book.prototype.getBalance = function(query, inQuoteCurrency = false) { query = parseQuery(this.getDataValue('id'), query); - const credit = inQuoteCurrency ? sequelize.literal('credit * "exchangeRate"') : sequelize.col('credit'); - const debit = inQuoteCurrency ? sequelize.literal('debit * "exchangeRate"') : sequelize.col('debit'); + const delim= sequelize.getDialect() == 'mysql' ? '`' : '"'; + const credit = inQuoteCurrency ? sequelize.literal(`credit * ${delim}exchangeRate${delim}`) : sequelize.col('credit'); + const debit = inQuoteCurrency ? sequelize.literal(`debit * ${delim}exchangeRate${delim}`) : sequelize.col('debit'); + query.attributes = [ [sequelize.fn('SUM', credit), 'creditTotal'], [sequelize.fn('SUM', debit), 'debitTotal'], [sequelize.fn('COUNT', sequelize.col('id')), 'numTransactions'], [sequelize.fn('MAX', sequelize.col('currency')), 'currency'] ]; + + + return Transaction.findAll(query).then(result => { result = result.shift(); if (!result) {