diff --git a/plugins/kiosk/accounts.js b/plugins/kiosk/accounts.js index 40b06aa..6b6c899 100644 --- a/plugins/kiosk/accounts.js +++ b/plugins/kiosk/accounts.js @@ -103,6 +103,19 @@ Account.prototype.booking = function (bookingId) { return new Booking(booking); }; +Account.prototype.bookingByRelatedBookingId = function (relatedBookingId) { + var booking; + + for (var i = 0; i < this._bookings.length; i++) { + booking = this._bookings[i]; + if (booking.relatedBookingId && booking.relatedBookingId === relatedBookingId) { + return new Booking(booking); + } + } + + return null; +}; + Account.prototype.bookings = function () { var bookings = []; for (var i = 0; i < this._bookings.length; i++) { diff --git a/plugins/kiosk/index.js b/plugins/kiosk/index.js index 8f863f1..026ea22 100644 --- a/plugins/kiosk/index.js +++ b/plugins/kiosk/index.js @@ -32,6 +32,7 @@ exports.init = function (y, config, messages, cron, logger) { dataDir, app, authCheck, + merchantBooking, purchaseItem, tallyCarryOver, archiveAll, @@ -107,6 +108,48 @@ exports.init = function (y, config, messages, cron, logger) { callback(); }; + merchantBooking = function (userId, userBooking, reverse) { + var account, booking, type, name, originalBooking; + + if (typeof reverse === 'undefined') { reverse = false; } + account = accounts.get(config.kiosk.merchant_user); + + if (reverse) { + originalBooking = account.bookingByRelatedBookingId(userBooking.id()); + account.reverse(originalBooking.id(), function (err, bookingId) { + kioskLogger.log(userId, account, account.booking(bookingId)); + }); + + + } else { + if (userBooking.type() === 'purchase' || userBooking.type() === 'tally carry over') { + type = 'sell'; + name = '[sell] ' + userBooking.name(); + } + + if (userBooking.type() === 'stock') { + type = 'buy'; + name = '[buy] ' + userBooking.name(); + } + + booking = new Booking({ + 'id' : bookings.uuid(), + 'itemId' : userBooking.itemId(), + 'time' : Date.now(), + 'amount' : userBooking.amount() * -1, + 'name' : name, + 'description' : name, + 'type' : type, + 'relatedBookingId' : userBooking.id() + }); + + account.book(booking, function (err, bookingId) { + kioskLogger.log(userId, account, account.booking(bookingId)); + }); + } + + }; + purchaseItem = function (userId, itemId, callback) { var account, item, booking; @@ -148,7 +191,7 @@ exports.init = function (y, config, messages, cron, logger) { booking = new Booking({ 'id' : bookings.uuid(), - 'itemId' : null, + 'itemId' : rec.item.id(), 'time' : Date.now(), 'amount' : rec.total * -1, 'name' : rec.marks + ' x ' + rec.item.name(), @@ -243,6 +286,8 @@ exports.init = function (y, config, messages, cron, logger) { res.redirect('/paid/' + bookingId); kioskLogger.log(userId, account, account.booking(bookingId)); + + merchantBooking(userId, account.booking(bookingId)); }); }); }); @@ -278,6 +323,7 @@ exports.init = function (y, config, messages, cron, logger) { res.redirect('/account'); kioskLogger.log(userId, account, account.booking(bookingId)); + merchantBooking(userId, account.booking(oldBooking.id()), true); }); }); }); @@ -464,6 +510,8 @@ exports.init = function (y, config, messages, cron, logger) { } kioskLogger.log(userId, account, account.booking(bookingId)); + + merchantBooking(userId, account.booking(bookingId)); }); }); @@ -644,6 +692,7 @@ exports.init = function (y, config, messages, cron, logger) { var stock, text; kioskLogger.log(userId, account, account.booking(bookingId)); + merchantBooking(userId, account.booking(bookingId)); bookings.push(account.booking(bookingId)); if (rec.item.isStockable()) {