From 67bf6dd337d11639446afccb16aba42b98dffdc6 Mon Sep 17 00:00:00 2001 From: Max Kueng Date: Thu, 19 Jul 2012 01:54:14 +0200 Subject: [PATCH 1/2] Merchant account double-booking --- plugins/kiosk/accounts.js | 14 +++++++++++ plugins/kiosk/index.js | 50 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/plugins/kiosk/accounts.js b/plugins/kiosk/accounts.js index 40b06aa..4c88a6b 100644 --- a/plugins/kiosk/accounts.js +++ b/plugins/kiosk/accounts.js @@ -103,6 +103,20 @@ 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]; + console.log(relatedBookingId, booking); + 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..1aea2ee 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,47 @@ exports.init = function (y, config, messages, cron, logger) { callback(); }; + merchantBooking = function (userId, userBooking) { + var account, booking, type, name, originalBooking; + + account = accounts.get(config.kiosk.merchant_user); + + if (userBooking.type() === '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 +190,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 +285,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 +322,7 @@ exports.init = function (y, config, messages, cron, logger) { res.redirect('/account'); kioskLogger.log(userId, account, account.booking(bookingId)); + merchantBooking(userId, account.booking(bookingId)); }); }); }); @@ -464,6 +509,8 @@ exports.init = function (y, config, messages, cron, logger) { } kioskLogger.log(userId, account, account.booking(bookingId)); + + merchantBooking(userId, account.booking(bookingId)); }); }); @@ -644,6 +691,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()) { From 0b542824b576f3f97f4c142bdcf522d16d92127a Mon Sep 17 00:00:00 2001 From: Max Kueng Date: Thu, 19 Jul 2012 08:56:42 +0200 Subject: [PATCH 2/2] Reverse --- plugins/kiosk/accounts.js | 1 - plugins/kiosk/index.js | 7 ++++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/kiosk/accounts.js b/plugins/kiosk/accounts.js index 4c88a6b..6b6c899 100644 --- a/plugins/kiosk/accounts.js +++ b/plugins/kiosk/accounts.js @@ -108,7 +108,6 @@ Account.prototype.bookingByRelatedBookingId = function (relatedBookingId) { for (var i = 0; i < this._bookings.length; i++) { booking = this._bookings[i]; - console.log(relatedBookingId, booking); if (booking.relatedBookingId && booking.relatedBookingId === relatedBookingId) { return new Booking(booking); } diff --git a/plugins/kiosk/index.js b/plugins/kiosk/index.js index 1aea2ee..026ea22 100644 --- a/plugins/kiosk/index.js +++ b/plugins/kiosk/index.js @@ -108,12 +108,13 @@ exports.init = function (y, config, messages, cron, logger) { callback(); }; - merchantBooking = function (userId, userBooking) { + 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 (userBooking.type() === 'reverse') { + if (reverse) { originalBooking = account.bookingByRelatedBookingId(userBooking.id()); account.reverse(originalBooking.id(), function (err, bookingId) { kioskLogger.log(userId, account, account.booking(bookingId)); @@ -322,7 +323,7 @@ exports.init = function (y, config, messages, cron, logger) { res.redirect('/account'); kioskLogger.log(userId, account, account.booking(bookingId)); - merchantBooking(userId, account.booking(bookingId)); + merchantBooking(userId, account.booking(oldBooking.id()), true); }); }); });