diff --git a/Gemfile.lock b/Gemfile.lock index 899a471a..1c7e6534 100755 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -53,7 +53,7 @@ GEM bcrypt (3.1.11) bindex (0.5.0) builder (3.2.3) - byebug (10.0.0) + byebug (9.1.0) cancancan (1.17.0) capistrano (3.10.1) airbrussh (>= 1.0.0) @@ -66,7 +66,7 @@ GEM capistrano-rails (1.3.1) capistrano (~> 3.1) capistrano-bundler (~> 1.1) - carrierwave (1.2.2) + carrierwave (1.2.1) activemodel (>= 4.0.0) activesupport (>= 4.0.0) mime-types (>= 1.16) @@ -81,7 +81,7 @@ GEM coffee-script-source (1.12.2) concurrent-ruby (1.0.5) connection_pool (2.2.1) - crass (1.0.3) + crass (1.0.2) cups (0.1.10) database_cleaner (1.6.2) diff-lcs (1.3) @@ -92,17 +92,17 @@ GEM factory_girl_rails (4.9.0) factory_girl (~> 4.9.0) railties (>= 3.0.0) - faker (1.8.7) - i18n (>= 0.7) + faker (1.8.4) + i18n (~> 0.5) ffi (1.9.18) - filterrific (5.0.1) - font-awesome-rails (4.7.0.3) + filterrific (2.1.2) + font-awesome-rails (4.7.0.2) railties (>= 3.2, < 5.2) globalid (0.4.1) activesupport (>= 4.2.0) httparty (0.15.6) multi_xml (>= 0.5.2) - i18n (0.9.3) + i18n (0.9.1) concurrent-ruby (~> 1.0) jbuilder (2.7.0) activesupport (>= 4.2.0) @@ -142,32 +142,32 @@ GEM mini_magick (4.8.0) mini_mime (1.0.0) mini_portile2 (2.3.0) - minitest (5.11.3) + minitest (5.10.3) momentjs-rails (2.17.1) railties (>= 3.1) - multi_json (1.13.1) + multi_json (1.12.2) multi_xml (0.6.0) - mysql2 (0.4.10) + mysql2 (0.4.9) nested_form (0.3.2) net-scp (1.2.1) net-ssh (>= 2.6.5) net-ssh (4.2.0) - nio4r (2.2.0) - nokogiri (1.8.2) + nio4r (2.1.0) + nokogiri (1.8.1) mini_portile2 (~> 2.3.0) pdf-core (0.7.0) - pg (1.0.0) + pg (0.21.0) prawn (2.2.2) pdf-core (~> 0.7.0) ttfunk (~> 1.5) prawn-table (0.2.2) prawn (>= 1.3.0, < 3.0.0) - puma (3.11.2) - rack (2.0.4) + puma (3.10.0) + rack (2.0.3) rack-cors (1.0.2) rack-protection (2.0.0) rack - rack-test (0.8.2) + rack-test (0.7.0) rack (>= 1.0, < 3) rails (5.1.4) actioncable (= 5.1.4) @@ -192,12 +192,12 @@ GEM method_source rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rake (12.3.0) + rake (12.2.1) rb-fsevent (0.10.2) rb-inotify (0.9.10) ffi (>= 0.5.0, < 2) redis (3.3.5) - rspec-core (3.7.1) + rspec-core (3.7.0) rspec-support (~> 3.7.0) rspec-expectations (3.7.0) diff-lcs (>= 1.2.0, < 2.0) @@ -205,7 +205,7 @@ GEM rspec-mocks (3.7.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.7.0) - rspec-rails (3.7.2) + rspec-rails (3.7.1) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) @@ -213,14 +213,14 @@ GEM rspec-expectations (~> 3.7.0) rspec-mocks (~> 3.7.0) rspec-support (~> 3.7.0) - rspec-support (3.7.1) + rspec-support (3.7.0) ruby-ole (1.2.12.1) - sass (3.5.5) + sass (3.5.3) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - sass-rails (5.0.7) + sass-rails (5.0.6) railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) @@ -238,7 +238,7 @@ GEM simple_form (3.5.0) actionpack (> 4, < 5.2) activemodel (> 4, < 5.2) - spreadsheet (1.1.5) + spreadsheet (1.1.4) ruby-ole (>= 1.0) spring (2.0.2) activesupport (>= 4.2) @@ -263,12 +263,12 @@ GEM to_xls-rails (1.3.1) spreadsheet (>= 0.8.5) ttfunk (1.5.1) - turbolinks (5.1.0) - turbolinks-source (~> 5.1) - turbolinks-source (5.1.0) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.3) tzinfo (1.2.4) thread_safe (~> 0.1) - uglifier (4.1.5) + uglifier (3.2.0) execjs (>= 0.3.0, < 3) web-console (3.5.1) actionview (>= 5.0) @@ -277,8 +277,8 @@ GEM railties (>= 5.0) websocket-driver (0.6.5) websocket-extensions (>= 0.1.0) - websocket-extensions (0.1.3) - whenever (0.10.0) + websocket-extensions (0.1.2) + whenever (0.9.7) chronic (>= 0.6.3) PLATFORMS diff --git a/README.md b/README.md index cb35bff4..b42782e7 100755 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ SQL Update after rake clear:data runned Change type in mysql *run if you got font error for Myanmar, Chinese, etc... => ALTER TABLE [table_name] CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci #for table - => ALTER DATABASE [database_name] CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci #for database + => ALTER DATABASE [database_name] CHARACTER SET utf8 COLLATE utf8_unicode_ci #for database For split bill 1) settings/lookups => { type:split_bill, name:SplitBill, value:1 } diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb index 129735a6..0e3eef26 100755 --- a/app/controllers/origami/home_controller.rb +++ b/app/controllers/origami/home_controller.rb @@ -27,40 +27,37 @@ class Origami::HomeController < BaseOrigamiController @membership = MembershipSetting::MembershipSetting @payment_methods = PaymentMethodSetting.all - # bookings = Booking.all - # if !bookings.nil? - # @order_items_count = Hash.new - # bookings.each do |booking| - # if booking.sale_id.nil? && booking.booking_status != 'moved' - # if !booking.booking_orders.empty? - # booking.booking_orders.each do |booking_order| - # order = Order.find(booking_order.order_id) - # if !order.order_items.empty? - # if !@order_items_count.key?(booking.dining_facility_id) - # @order_items_count.store(booking.dining_facility_id, order.order_items.count) - # else - # @order_items_count[booking.dining_facility_id] += order.order_items.count - # end - # end - # end - # end - # else - # if !booking.sale_id.nil? - # sale = Sale.find(booking.sale_id) - # if sale.sale_status !='completed' - # if !@order_items_count.key?(booking.dining_facility_id) - # @order_items_count.store(booking.dining_facility_id, sale.sale_items.count) - # else - # @order_items_count[booking.dining_facility_id] = sale.sale_items.count - # end - # end - # end - # end - # end - # end - - puts "@order_items_count" - puts @order_items_count.to_json + bookings = Booking.all + if !bookings.today.nil? + @order_items_count = Hash.new + bookings.each do |booking| + if booking.sale_id.nil? && booking.booking_status != 'moved' + if !booking.booking_orders.empty? + booking.booking_orders.each do |booking_order| + order = Order.find(booking_order.order_id) + if !order.order_items.empty? + if !@order_items_count.key?(booking.dining_facility_id) + @order_items_count.store(booking.dining_facility_id, order.order_items.count) + else + @order_items_count[booking.dining_facility_id] += order.order_items.count + end + end + end + end + else + if !booking.sale_id.nil? + sale = Sale.find(booking.sale_id) + if sale.sale_status !='completed' + if !@order_items_count.key?(booking.dining_facility_id) + @order_items_count.store(booking.dining_facility_id, sale.sale_items.count) + else + @order_items_count[booking.dining_facility_id] = sale.sale_items.count + end + end + end + end + end + end @dining.bookings.active.each do |booking| if booking.sale_id.nil? && booking.booking_status != 'moved' @@ -126,12 +123,12 @@ class Origami::HomeController < BaseOrigamiController #for bank integration @checkout_time = Lookup.collection_of('checkout_time') @checkout_alert_time = Lookup.collection_of('checkout_alert_time') - #for split bill - lookup_spit_bill = Lookup.collection_of('split_bill') - @spit_bill = 0 - if !lookup_spit_bill[0].nil? - @spit_bill = lookup_spit_bill[0][1] - end + end + + #Shop Name in Navbor + helper_method :shop_detail + def shop_detail + @shop = Shop.first end private @@ -140,9 +137,4 @@ def set_dining @dining = DiningFacility.find(params[:dining_id]) end - #Shop Name in Navbor - helper_method :shop_detail - def shop_detail - @shop = Shop.first - end end diff --git a/app/controllers/origami/orders_controller.rb b/app/controllers/origami/orders_controller.rb index 08970fed..f5b71bf8 100755 --- a/app/controllers/origami/orders_controller.rb +++ b/app/controllers/origami/orders_controller.rb @@ -5,6 +5,23 @@ class Origami::OrdersController < BaseOrigamiController @complete = Sale.where("DATE_FORMAT(created_at,'%Y-%m-%d') = ? and sale_status != 'new'",DateTime.now.strftime('%Y-%m-%d')) @orders = Order.where("DATE_FORMAT(date,'%Y-%m-%d') = ? and status != 'billed'",DateTime.now.strftime('%Y-%m-%d')).order('date desc') @order = Order.find(params[:order_id]) + booking = Booking.select('bookings.booking_id, bookings.dining_facility_id') + .joins(" JOIN booking_orders as bo on bo.booking_id = bookings.booking_id") + .where("bo.order_id='#{params[:order_id]}'").first() + + @booking = Array.new + if !booking.nil? + dining_facilities = DiningFacility.find_by_id(booking.dining_facility_id) + @booking.push({'booking_id' => booking.booking_id, 'dining_facility_id' => booking.dining_facility_id, 'type' => dining_facilities.type}) + end + + #for split bill + lookup_spit_bill = Lookup.collection_of('split_bill') + @split_bill = 0 + if !lookup_spit_bill[0].nil? + @split_bill = lookup_spit_bill[0][1] + end + sale_order = SaleOrder.find_by_order_id(@order.order_id) if sale_order unless sale_order.sale_id.nil? @@ -12,9 +29,22 @@ class Origami::OrdersController < BaseOrigamiController @sale_status = sale.sale_status end end + + @order.order_items.each_with_index do |item, order_item_index| + if !item.set_menu_items.nil? + instance_item_sets = JSON.parse(item.set_menu_items) + arr_instance_item_sets = Array.new + instance_item_sets.each do |instance_item| + item_instance_name = MenuItemInstance.find_by_item_instance_code(instance_item["item_instance_code"]).item_instance_name + arr_instance_item_sets.push(item_instance_name) + item.price = item.price.to_f + instance_item["price"].to_f + end + @order.order_items[order_item_index].set_menu_items = arr_instance_item_sets + end + end bookings = Booking.all - if !bookings.nil? + if !bookings.today.nil? @order_items_count = Hash.new bookings.each do |booking| if booking.sale_id.nil? && booking.booking_status != 'moved' diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index fe384a89..82761dd1 100755 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -8,7 +8,8 @@ class Origami::PaymentsController < BaseOrigamiController sale_data = Sale.find_by_sale_id(sale_id) sale_items = SaleItem.where("sale_id=?",sale_id) member_info = nil - + survey = Survey.find_by_receipt_no(sale_data.receipt_no) + # For Cashier by Zone bookings = Booking.where("sale_id='#{sale_id}'") # if bookings.count > 1 @@ -66,7 +67,7 @@ class Origami::PaymentsController < BaseOrigamiController printer = Printer::ReceiptPrinter.new(print_settings) - printer.print_receipt_bill(print_settings,cashier_terminal,sale_items,sale_data,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info, shop_details, "Frt",current_balance,nil) + printer.print_receipt_bill(print_settings,cashier_terminal,sale_items,sale_data,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info, shop_details, "Frt",current_balance,nil,survey) end end @@ -78,6 +79,7 @@ class Origami::PaymentsController < BaseOrigamiController if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) shop_details = Shop::ShopDetail + survey = Survey.find_by_receipt_no(saleObj.receipt_no) # rounding adjustment if shop_details.is_rounding_adj a = saleObj.grand_total % 25 # Modulus @@ -151,7 +153,7 @@ class Origami::PaymentsController < BaseOrigamiController discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items) printer = Printer::ReceiptPrinter.new(print_settings) - printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Paid",current_balance,card_data) + printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Paid",current_balance,card_data,survey) if params[:type] == "quick_service" booking = Booking.find_by_sale_id(sale_id) @@ -273,7 +275,8 @@ class Origami::PaymentsController < BaseOrigamiController member_info = nil saleObj = Sale.find(sale_id) - + survey = Survey.find_by_receipt_no(saleObj.receipt_no) + # For Cashier by Zone bookings = Booking.where("sale_id='#{sale_id}'") # if bookings.count > 1 @@ -326,7 +329,7 @@ class Origami::PaymentsController < BaseOrigamiController discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items) printer = Printer::ReceiptPrinter.new(print_settings) - printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Re-print",current_balance,card_data) + printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Re-print",current_balance,card_data,survey) end end @@ -340,7 +343,8 @@ class Origami::PaymentsController < BaseOrigamiController if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) - + survey = Survey.find_by_receipt_no(saleObj.receipt_no) + if saleObj.discount_type == "member_discount" saleObj.update_attributes(rounding_adjustment: 0) saleObj.compute_by_sale_items(sale_id, saleObj.sale_items,0) @@ -384,7 +388,7 @@ class Origami::PaymentsController < BaseOrigamiController discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items) printer = Printer::ReceiptPrinter.new(print_settings) - printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "FOC",nil,nil) + printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "FOC",nil,nil,survey) end end end diff --git a/app/controllers/origami/rooms_controller.rb b/app/controllers/origami/rooms_controller.rb index 72517cc9..03e864fa 100755 --- a/app/controllers/origami/rooms_controller.rb +++ b/app/controllers/origami/rooms_controller.rb @@ -24,7 +24,7 @@ class Origami::RoomsController < BaseOrigamiController @payment_methods = PaymentMethodSetting.all bookings = Booking.all - if !bookings.nil? + if !bookings.today.nil? @order_items_count = Hash.new bookings.each do |booking| if booking.sale_id.nil? && booking.booking_status != 'moved' @@ -125,9 +125,9 @@ class Origami::RoomsController < BaseOrigamiController # end lookup_spit_bill = Lookup.collection_of('split_bill') - @spit_bill = 0 + @split_bill = 0 if !lookup_spit_bill[0].nil? - @spit_bill = lookup_spit_bill[0][1] + @split_bill = lookup_spit_bill[0][1] end end diff --git a/app/controllers/origami/split_bill_controller.rb b/app/controllers/origami/split_bill_controller.rb index 12f5780f..037f3f6c 100644 --- a/app/controllers/origami/split_bill_controller.rb +++ b/app/controllers/origami/split_bill_controller.rb @@ -18,6 +18,7 @@ class Origami::SplitBillController < BaseOrigamiController if @booking @booking.booking_orders.each do |booking_order| + arr_order_items = Array.new @order = Order.find(booking_order.order_id) if (@order.status == "new") @orders.push(@order) @@ -28,12 +29,44 @@ class Origami::SplitBillController < BaseOrigamiController arr_instance_item_sets = Array.new instance_item_sets.each do |instance_item| item_instance_name = MenuItemInstance.find_by_item_instance_code(instance_item["item_instance_code"]).item_instance_name + item.price = item.price.to_f + instance_item["price"].to_f arr_instance_item_sets.push(item_instance_name) end item.set_menu_items = arr_instance_item_sets end - @order_items.push(item) + + arr_item = Hash.new + if item.qty.to_i > 1 + i = 1 + while i <= item.qty.to_i do + arr_item = {'order_items_id' => item.order_items_id, + 'order_id' => item.order_id, + 'order_item_status' => item.order_item_status, + 'item_order_by' => item.item_order_by, + 'item_code' => item.item_code, + 'item_instance_code' => item.item_instance_code, + 'item_name' => item.item_name, + 'alt_name' => item.alt_name, + 'account_id' => item.account_id, + 'qty' => '1.0', + 'price' => item.price, + 'remark' => item.remark, + 'options' => item.options, + 'set_menu_items' => item.set_menu_items, + 'taxable' => item.taxable, + 'completed_by' => item.completed_by, + 'created_at' => item.created_at, + 'updated_at' => item.updated_at} + i += 1 + @order_items.push({@order.order_id => arr_item}) + arr_order_items.push(arr_item) + end + else + arr_order_items.push(item) + @order_items.push({@order.order_id => item}) + end end + @order_items.push({'all_order' => arr_order_items}) end end else @@ -116,6 +149,8 @@ class Origami::SplitBillController < BaseOrigamiController if !order_id.nil? if order_id_count > 1 + puts "order_id_count > 1" + updated_order_id = Array.new order_ids.each do |odr_id| odr = Order.find(odr_id) @@ -124,6 +159,9 @@ class Origami::SplitBillController < BaseOrigamiController end end + puts "updated_order_id" + puts updated_order_id + if !updated_order_id.empty? order_ids.each do |odr_id| unless updated_order_id.include?(odr_id) @@ -134,30 +172,115 @@ class Origami::SplitBillController < BaseOrigamiController order_items.each do |order_item| if updated_order_id.include?(order_item["order_id"]) - orderItem = OrderItem.find(order_item["id"]) - orderItem.order_id = order_id - orderItem.save! + update_order_item(order_id, order_item) end end else order_ids.each do |odr_id| - BookingOrder.find_by_order_id(odr_id).delete - BookingOrder.create({:booking_id => booking.booking_id, :order_id => odr_id}) + new_order_status = true + order_items.each do |order_item| + orderItem = OrderItem.find_by_order_id(odr_id) + if !orderItem.nil? + if order_item["id"] == orderItem.order_items_id + if orderItem.qty.to_f != order_item['qty'].to_f + new_order_status = false + end + end + end + end + + if new_order_status + BookingOrder.find_by_order_id(odr_id).delete + BookingOrder.create({:booking_id => booking.booking_id, :order_id => odr_id}) + else + customer = Customer.find(params[:customer_id]) + order_type = "dine_in" + if !customer.nil? + if customer.customer_type == "Takeaway" + order_type = "takeaway" + elsif customer.customer_type == "Delivery" + order_type = "delivery" + end + end + + # begin + order = Order.new + order.source = "cashier" + order.order_type = order_type + order.customer_id = params[:customer_id] == ""? "CUS-000000000001" : params[:customer_id] # for no customer id from mobile + order.item_count = order_items.count + order.status = "new" + order.table_id = params[:dining_id] # this is dining facilities's id + order.waiters = current_user.name + order.employee_name = current_user.name + order.guest_info = nil + order.save! + + BookingOrder.create({:booking_id => booking.booking_id, :order_id => order.order_id}) + + order_items.each do |order_item| + update_order_item(order.order_id, order_item) + end + end end end else - BookingOrder.find_by_order_id(order_id).delete - - BookingOrder.create({:booking_id => booking.booking_id, :order_id => order_id}) + puts "order_id_count < 1" + new_order_status = true order_items.each do |order_item| - orderItem = OrderItem.find(order_item["id"]) - orderItem.order_id = order_id - orderItem.save! + orderItem = OrderItem.find_by_order_id(order_id) + if !orderItem.nil? + if order_item["id"] == orderItem.order_items_id + if orderItem.qty.to_f != order_item['qty'].to_f + new_order_status = false + end + end + end + end + + if new_order_status + BookingOrder.find_by_order_id(order_id).delete + BookingOrder.create({:booking_id => booking.booking_id, :order_id => order_id}) + order_items.each do |order_item| + update_order_item(order_id, order_item) + end + else + customer = Customer.find(params[:customer_id]) + order_type = "dine_in" + if !customer.nil? + if customer.customer_type == "Takeaway" + order_type = "takeaway" + elsif customer.customer_type == "Delivery" + order_type = "delivery" + end + end + + # begin + order = Order.new + order.source = "cashier" + order.order_type = order_type + order.customer_id = params[:customer_id] == ""? "CUS-000000000001" : params[:customer_id] # for no customer id from mobile + order.item_count = order_items.count + order.status = "new" + order.table_id = params[:dining_id] # this is dining facilities's id + order.waiters = current_user.name + order.employee_name = current_user.name + order.guest_info = nil + order.save! + + BookingOrder.create({:booking_id => booking.booking_id, :order_id => order.order_id}) + + order_items.each do |order_item| + update_order_item(order.order_id, order_item) + end end end else if order_ids.count == 1 && order_id_count > 0 && order_item_count == 1 BookingOrder.create({:booking_id => booking.booking_id, :order_id => order_ids[0]}) + order_items.each do |order_item| + update_order_item(order_ids[0], order_item) + end else customer = Customer.find(params[:customer_id]) order_type = "dine_in" @@ -185,9 +308,7 @@ class Origami::SplitBillController < BaseOrigamiController BookingOrder.create({:booking_id => booking.booking_id, :order_id => order.order_id}) order_items.each do |order_item| - orderItem = OrderItem.find(order_item["id"]) - orderItem.order_id = order.order_id - orderItem.save! + update_order_item(order.order_id, order_item) end end end @@ -212,6 +333,29 @@ class Origami::SplitBillController < BaseOrigamiController end end + def update_order_item(order_id, order_item) + orderItem = OrderItem.find(order_item["id"]) + if orderItem.qty.to_f != order_item['qty'].to_f + OrderItem.processs_item(orderItem.item_code, + orderItem.item_instance_code, + orderItem.item_name, + orderItem.alt_name, + orderItem.account_id, + order_item['qty'], + orderItem.price, + orderItem.options, + orderItem.set_menu_items, + order_id, + orderItem.item_order_by, + orderItem.taxable) + + orderItem.qty = orderItem.qty.to_f - order_item['qty'].to_f + else + orderItem.order_id = order_id + end + orderItem.save! + end + #Shop Name in Navbor helper_method :shop_detail def shop_detail diff --git a/app/controllers/origami/surveys_controller.rb b/app/controllers/origami/surveys_controller.rb index 4ecdf95f..09f97bfd 100644 --- a/app/controllers/origami/surveys_controller.rb +++ b/app/controllers/origami/surveys_controller.rb @@ -1,17 +1,25 @@ class Origami::SurveysController < BaseOrigamiController def new + @survey = Survey.new @id = params[:id] @cashier_type = params[:type] + if(@id[0,3] == "SAL") @sale = Sale.find(@id) @receipt_no = @sale.receipt_no @grand_total = @sale.grand_total @booking = Booking.find_by_sale_id(@id) + if @booking.dining_facility_id.to_i>0 - @dining_facility = DiningFacility.find(@booking.dining_facility_id) - @table_type = @dining_facility.type + @dining_facility = DiningFacility.find(@booking.dining_facility_id) + @table_type = @dining_facility.type + @survey_data = Survey.find_by_dining_name(@dining_facility.name) + survey_process = Survey.find_by_receipt_no(@receipt_no) + if !survey_process.nil? + @survey_data = survey_process + end else @dining_facility = nil @table_type = nil @@ -22,6 +30,7 @@ class Origami::SurveysController < BaseOrigamiController @table_type = @dining_facility.type @receipt_no = nil @grand_total = nil + @survey_data = Survey.find_by_dining_name(@dining_facility.name) end end @@ -36,20 +45,71 @@ class Origami::SurveysController < BaseOrigamiController else @url = "/origami/"+@dining_facility.type.downcase+"/"+params[:table_id] end - @survey = Survey.new(survey_params) - @survey.foreigner = params["survey"]["foreigner"].to_json - # respond_to do |format| - if @survey.save - redirect_to @url - end - # end + cashier_zone = CashierTerminalByZone.find_by_zone_id(@dining_facility.zone_id) + shift_by_terminal = ShiftSale.find_by_cashier_terminal_id_and_shift_closed_at(cashier_zone.cashier_terminal_id,nil) + + if params[:survey_id].nil? || params[:survey_id] == "" + @survey = Survey.new(survey_params) + @survey.shift_id = shift_by_terminal.id + @survey.foreigner = params["survey"]["foreigner"].to_json + # respond_to do |format| + if @survey.save + redirect_to @url + end + # end + else + survey = Survey.find_by_id(params[:survey_id]) + survey.child = params["survey"]["child"] + survey.adult = params["survey"]["adult"] + survey.male = params["survey"]["male"] + survey.female = params["survey"]["female"] + survey.local = params["survey"]["local"] + survey.dining_name = params["survey"]["dining_name"] + survey.receipt_no = params["survey"]["receipt_no"] + survey.shift_id = shift_by_terminal.id + survey.created_by = params["survey"]["created_by"] + survey.total_customer = params["survey"]["total_customer"] + survey.total_amount = params["survey"]["total_amount"] + survey.foreigner = params["survey"]["foreigner"].to_json + if survey.save! + redirect_to @url + end + end + end + + def create_survey + if shift_by_terminal = ShiftSale.current_open_shift(get_cashier[0].id) + dining_facility = DiningFacility.find(params[:dining_id]) + cashier_zone = CashierTerminalByZone.find_by_zone_id(dining_facility.zone_id) + shift_by_terminal = ShiftSale.find_by_cashier_terminal_id_and_shift_closed_at(cashier_zone.cashier_terminal_id,nil) + + survey = Survey.find_by_dining_name(dining_facility.name) + + if survey.nil? + survey = Survey.new + survey.dining_name = dining_facility.name + survey.receipt_no = params[:receipt_no] + survey.shift_id = shift_by_terminal.id + survey.created_by = current_user.name + survey.total_customer = params[:total_customer] + survey.total_amount = params[:total_amount] + survey.save! + else + survey.receipt_no = params[:receipt_no] + survey.total_customer = params[:total_customer] + survey.save! + end + render :json => {status: true} + else + render :json => { status: false, error_message: 'No Current Open Shift!'} + end end private # Never trust parameters from the scary internet, only allow the white list through. def survey_params - params.require(:survey).permit(:child, :adult,:male,:female,:local,:foreigner, :dining_name,:receipt_no,:shift_id,:created_by,:total_customer,:total_amount) + params.require(:survey).permit(:child, :adult,:male,:female,:local,:foreigner, :dining_name,:receipt_no,:shift_id,:created_by,:total_customer,:total_amount,:survey_id) end #Shop Name in Navbor diff --git a/app/controllers/origami/table_invoices_controller.rb b/app/controllers/origami/table_invoices_controller.rb index a9d5d340..f2dd132a 100755 --- a/app/controllers/origami/table_invoices_controller.rb +++ b/app/controllers/origami/table_invoices_controller.rb @@ -59,6 +59,12 @@ class Origami::TableInvoicesController < BaseOrigamiController @date = @sale.created_at @status_sale = 'sale' @customer = @sale.customer + #for split bill + lookup_spit_bill = Lookup.collection_of('split_bill') + @split_bill = 0 + if !lookup_spit_bill[0].nil? + @split_bill = lookup_spit_bill[0][1] + end end #Shop Name in Navbor diff --git a/app/controllers/origami/void_controller.rb b/app/controllers/origami/void_controller.rb index d535c767..e4190cf7 100755 --- a/app/controllers/origami/void_controller.rb +++ b/app/controllers/origami/void_controller.rb @@ -6,6 +6,8 @@ class Origami::VoidController < BaseOrigamiController if Sale.exists?(sale_id) sale = Sale.find_by_sale_id(sale_id) + survey = Survey.find_by_receipt_no(sale.receipt_no) + if sale.discount_type == "member_discount" sale.update_attributes(total_discount: 0) sale.compute_by_sale_items(sale_id, sale.sale_items,0) @@ -123,7 +125,7 @@ class Origami::VoidController < BaseOrigamiController discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(sale.sale_items) printer = Printer::ReceiptPrinter.new(print_settings) - printer.print_receipt_bill(print_settings,cashier_terminal,sale.sale_items,sale,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "VOID",current_balance,nil) + printer.print_receipt_bill(print_settings,cashier_terminal,sale.sale_items,sale,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "VOID",current_balance,nil,survey) end #end print diff --git a/app/models/booking.rb b/app/models/booking.rb index 826d585d..7e5470d0 100755 --- a/app/models/booking.rb +++ b/app/models/booking.rb @@ -9,6 +9,7 @@ class Booking < ApplicationRecord has_many :booking_orders has_many :orders, :through => :booking_orders scope :active, -> {where("booking_status != 'moved'")} + scope :today, -> {where("created_at >= #{Time.now.utc}")} def self.update_dining_facility(booking_arr, newd, old) table = DiningFacility.find(newd) diff --git a/app/models/license.rb b/app/models/license.rb index d025e349..cdebdbdd 100755 --- a/app/models/license.rb +++ b/app/models/license.rb @@ -60,9 +60,9 @@ class License return true end else - @license = Marshal.load(cache_license) - assign(aes_key, aes_iv) - Rails.logger.info 'API License' + # @license = Marshal.load(cache_license) + # assign(aes_key, aes_iv) + # Rails.logger.info 'API License' return true end end diff --git a/app/models/printer/receipt_printer.rb b/app/models/printer/receipt_printer.rb index 0cf6526f..c60fcc35 100755 --- a/app/models/printer/receipt_printer.rb +++ b/app/models/printer/receipt_printer.rb @@ -173,19 +173,19 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker end #Bill Receipt Print - def print_receipt_bill(printer_settings,cashier_terminal,sale_items,sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info = nil,rebate_amount=nil,shop_details, printed_status,balance,card_data) + def print_receipt_bill(printer_settings,cashier_terminal,sale_items,sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info = nil,rebate_amount=nil,shop_details, printed_status,balance,card_data,survey) #Use CUPS service #Generate PDF #Print - pdf = ReceiptBillPdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data) + pdf = ReceiptBillPdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,survey) receipt_bill_a5_pdf = Lookup.collection_of("print_settings") #print_settings with name:ReceiptBillA5Pdf if !receipt_bill_a5_pdf.empty? receipt_bill_a5_pdf.each do |receipt_bilA5| if receipt_bilA5[0] == 'ReceiptBillA5Pdf' if receipt_bilA5[1] == '1' - pdf = ReceiptBillA5Pdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data) + pdf = ReceiptBillA5Pdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,survey) else - pdf = ReceiptBillPdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data) + pdf = ReceiptBillPdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,survey) end end end diff --git a/app/pdf/receipt_bill_a5_pdf.rb b/app/pdf/receipt_bill_a5_pdf.rb index 2dde9c93..6125078b 100644 --- a/app/pdf/receipt_bill_a5_pdf.rb +++ b/app/pdf/receipt_bill_a5_pdf.rb @@ -1,7 +1,7 @@ class ReceiptBillA5Pdf < Prawn::Document include ActionView::Helpers::NumberHelper attr_accessor :label_width,:price_column_width,:page_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_width,:total_width,:item_description_width, :description_width, :price_num_width - def initialize(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info = nil,rebate_amount = nil,shop_details, printed_status,current_balance) + def initialize(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info = nil,rebate_amount = nil,shop_details, printed_status,current_balance,card_data,survey) self.page_width = printer_settings.page_width self.page_height = printer_settings.page_height self.margin = 15 @@ -65,6 +65,12 @@ class ReceiptBillA5Pdf < Prawn::Document customer(customer_name) + #start card sale trans data + if card_data != nil + card_sale_data(card_data) + end + #end card sale trans data + if discount_price_by_accounts.length > 0 && shop_details.show_account_info discount_account(discount_price_by_accounts,printer_settings.precision,delimiter) end @@ -73,6 +79,12 @@ class ReceiptBillA5Pdf < Prawn::Document items_account(item_price_by_accounts,printer_settings.precision,delimiter) end + #start for individual payment + if !survey.nil? + individual_payment(sale_data, survey, printer_settings.precision, delimiter) + end + #end for individual payment + sign(sale_data) footer(printed_status) @@ -459,6 +471,28 @@ class ReceiptBillA5Pdf < Prawn::Document end end + #individual payment per person + def individual_payment(sale_data, survey, precision, delimiter) + per_person = sale_data.grand_total.to_f / survey.total_customer.to_i + move_down 5 + stroke_horizontal_rule + move_down 5 + y_position = cursor + bounding_box([0,y_position], :width =>self.label_width+50) do + text "Individual amount for #{survey.total_customer} persons", :size => self.item_font_size+1,:align => :left + end + + bounding_box([0,y_position], :width =>self.label_width) do + move_down 15 + text "Total", :size => self.item_font_size,:align => :left + end + + bounding_box([self.label_width,y_position], :width =>self.item_description_width) do + move_down 15 + text "#{number_with_precision(per_person, :precision => precision.to_i, :delimiter => delimiter)} per person", :size => self.item_font_size,:align => :right + end + end + def sign(sale_data) SalePayment.where('sale_id = ?', sale_data.sale_id).each do |payment| if payment.payment_method == "creditnote" @@ -513,6 +547,29 @@ class ReceiptBillA5Pdf < Prawn::Document move_down 10 end + #start card sale trans data + def card_sale_data(card_data) + if card_data != nil && !card_data.empty? + move_down 5 + stroke_horizontal_rule + move_down 5 + + y_position = cursor + card_data.each do |data| + if data['app'] == 'CUP' + data['app'] = 'UNIONPAY' + elsif data['app'] == 'MASTERCARD' + data['app'] = 'MASTER' + end + text "DATE/TIME: #{data['res_date']} #{data['res_time']} ", :size => @item_font_size, :align => :left + text "BATCH NUM: #{data['batch_no']} TRACE#: #{data['trace']}",:size => @item_font_size, :align => :left + text "RREF NUM: #{data['ref_no']} APPR CODE: #{data['app_code']} ",:size => @item_font_size, :align => :left + text "TID: #{data['tid']} ",:size => @item_font_size, :align => :left + text "#{data['app']} #{data['pan']} ",:size => @item_font_size, :align => :left + end + end + end + #check ReceiptBillAltName included def show_alt_name bill_alt_name = Lookup.collection_of("print_settings") #print_settings with name:ReceiptBillA5Pdf diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb index dece55cb..2f7fa0eb 100755 --- a/app/pdf/receipt_bill_pdf.rb +++ b/app/pdf/receipt_bill_pdf.rb @@ -1,7 +1,7 @@ class ReceiptBillPdf < Prawn::Document include ActionView::Helpers::NumberHelper attr_accessor :label_width,:price_column_width,:page_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_width,:total_width,:item_description_width, :description_width, :price_num_width - def initialize(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info = nil,rebate_amount = nil,shop_details, printed_status,current_balance,card_data) + def initialize(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info = nil,rebate_amount = nil,shop_details, printed_status,current_balance,card_data,survey) self.page_width = printer_settings.page_width self.page_height = printer_settings.page_height self.margin = 0 @@ -79,6 +79,12 @@ class ReceiptBillPdf < Prawn::Document items_account(item_price_by_accounts,printer_settings.precision,delimiter) end + #start for individual payment + if !survey.nil? + individual_payment(sale_data, survey, printer_settings.precision, delimiter) + end + #end for individual payment + sign(sale_data) footer(printed_status) @@ -474,6 +480,28 @@ class ReceiptBillPdf < Prawn::Document end end + #individual payment per person + def individual_payment(sale_data, survey, precision, delimiter) + per_person = sale_data.grand_total.to_f / survey.total_customer.to_i + move_down 5 + stroke_horizontal_rule + move_down 5 + y_position = cursor + bounding_box([0,y_position], :width =>self.label_width+50) do + text "Individual amount for #{survey.total_customer} persons", :size => self.item_font_size+1,:align => :left + end + + bounding_box([0,y_position], :width =>self.label_width) do + move_down 15 + text "Total", :size => self.item_font_size,:align => :left + end + + bounding_box([self.label_width,y_position], :width =>self.item_description_width) do + move_down 15 + text "#{number_with_precision(per_person, :precision => precision.to_i, :delimiter => delimiter)} per person", :size => self.item_font_size,:align => :right + end + end + def sign(sale_data) SalePayment.where('sale_id = ?', sale_data.sale_id).each do |payment| if payment.payment_method == "creditnote" diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb index 0fdc275e..3577aa48 100755 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -251,8 +251,8 @@ $('#back').on('click',function(){ function warnBeforeRedirect(linkURL) { swal({ - title: "Oops", - text: "Are you sure you want to Logout ?", + title: "Alert!", + text: "Are you sure you want to close cashier?", type: "warning", showCancelButton: true }, function() { diff --git a/app/views/origami/home/show.html.erb b/app/views/origami/home/show.html.erb index d1535fcc..8454f726 100755 --- a/app/views/origami/home/show.html.erb +++ b/app/views/origami/home/show.html.erb @@ -386,10 +386,8 @@ end %> - - <% if !@spit_bill.nil? && @spit_bill == '1' %> - - <% end %> + + <% end %> <% if @sale_array.size > 1 %>

@@ -439,6 +437,11 @@ + <% if !@split_bill.nil? %> + <% if @split_bill == '1' %> + + <% end %> + <% end %> @@ -461,6 +464,11 @@ <%end%> <% end %> + <% if !@split_bill.nil? %> + <% if @split_bill == '1' %> + + <% end %> + <% end %> <% end %> @@ -571,7 +579,7 @@ $("#survey").on('click', function () { var sale = $('#sale_id').val(); if (sale) { - var sale_id = sale + var sale_id = sale; } else { var sale_id = "<%= @dining.id %>"; } @@ -712,30 +720,6 @@ // Bill Request $('#request_bills').click(function () { - var lookup_split_bill = '<%= @spit_bill %>'; - if(lookup_split_bill == '1'){ - swal({ - title: "Information!", - text: "Do you want to Split bill?", - type: "success", - showCancelButton: true, - confirmButtonColor: "#009900", - confirmButtonText: "Yes, split it!", - closeOnConfirm: false - }, function (isConfirm) { - if (isConfirm) { - var dining_id = "<%= @dining.id %>"; - window.location.href = '/origami/table/' + dining_id + "/split_bills"; - }else{ - requestBillProcess(); - } - }); - }else{ - requestBillProcess(); - } - }); - - function requestBillProcess(){ var order_id = $('#save_order_id').attr('data-order'); var ajax_url = "/origami/" + order_id + "/request_bills"; $.ajax({ @@ -750,8 +734,14 @@ location.reload(); } } - }); - } + }); + }); + + //split bill process + $('#split_bills').click(function(){ + var dining_id = "<%= @dining.id %>"; + window.location.href = '/origami/table/' + dining_id + "/split_bills"; + }); $('#move').on('click', function () { var dining_id = "<%= @dining.id %>"; diff --git a/app/views/origami/orders/show.html.erb b/app/views/origami/orders/show.html.erb index d98e9bc2..4ffe9de6 100755 --- a/app/views/origami/orders/show.html.erb +++ b/app/views/origami/orders/show.html.erb @@ -200,7 +200,14 @@ %> <% unless sale_item.price <= 0 %> - <%= sale_item.item_name %> + + <%= sale_item.item_name %> + <% if !sale_item.set_menu_items.nil? + sale_item.set_menu_items.each do |item_instance| %> +
<%= item_instance %> + <% end + end %> + <%= sale_item.qty %> <%= sale_item.price %> @@ -233,7 +240,10 @@
- + + <% if !@split_bill.nil? && @split_bill == '1' %> + + <% end %> <% if @sale_status != 'completed' %> <% end %> @@ -278,5 +288,59 @@ }) $('#move').on('click',function(){ - }) + }); + + //order_split + $('#by_order').on('click',function () { + swal({ + title: "Alert", + text: "Are you sure, you want to Split?", + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "Yes, split it!", + closeOnConfirm: false + }, function (isConfirm) { + if(isConfirm){ + orderSplitBillProcess(); + } + }); + }); + + /* function for order items split bill process */ + function orderSplitBillProcess(){ + var booking = JSON.parse('<%= @booking.to_json.html_safe %>'); + var orders = JSON.parse('<%= @orders.to_json.html_safe %>'); + var order = JSON.parse('<%= @order.to_json.html_safe %>'); + var arr_order = []; + arr_order.push({id : order.order_id}); + + var dining_id = booking[0].dining_facility_id || 0; + var type = booking[0].type || ''; + var customer_id = order.customer_id || ''; + var booking_id = ""; + if(orders.length == 1){ + booking_id = booking[0].booking_id; + } + + var ajax_url = "/origami/split_bills"; + $.ajax({ + type: "POST", + url: ajax_url, + dataType: 'JSON', + data: {'dining_id' : dining_id, 'type': type, 'customer_id' : customer_id, 'booking_id' : booking_id, 'order_ids' : [], 'order_items' : '', 'orders' : JSON.stringify(arr_order)}, + success: function (result) { + if (!result.status) { + swal("Information!", result.error_message); + } + else{ + if(type=='Table'){ + window.location.href = '/origami/table/' + dining_id; + }else{ + window.location.href = '/origami/room/' + dining_id; + } + } + } + }); + } diff --git a/app/views/origami/rooms/show.html.erb b/app/views/origami/rooms/show.html.erb index a837b478..74c81b77 100755 --- a/app/views/origami/rooms/show.html.erb +++ b/app/views/origami/rooms/show.html.erb @@ -364,10 +364,7 @@ end %> - - <% if !@spit_bill.nil? && @spit_bill == '1' %> - - <% end %> + <% end %> <% if @sale_array.size > 1 %>

@@ -411,6 +408,11 @@ + <% if !@split_bill.nil? %> + <% if @split_bill == '1' %> + + <% end %> + <% end %> @@ -435,6 +437,11 @@ <%end%> <%end%> + <% if !@split_bill.nil? %> + <% if @split_bill == '1' %> + + <% end %> + <% end %> <% end %> @@ -714,30 +721,6 @@ $('#pay').on('click',function() { }); // Bill Request $('#request_bills').click(function() { - var lookup_split_bill = '<%= @spit_bill %>'; - if(lookup_split_bill == '1'){ - swal({ - title: "Information!", - text: "Do you want to Split bill?", - type: "success", - showCancelButton: true, - confirmButtonColor: "#009900", - confirmButtonText: "Yes, split it!", - closeOnConfirm: false - }, function (isConfirm) { - if (isConfirm) { - var dining_id = "<%= @room.id %>"; - window.location.href = '/origami/room/' + dining_id + "/split_bills"; - }else{ - requestBillProcess(); - } - }); - }else{ - requestBillProcess(); - } -}); - -function requestBillProcess(){ var order_id = $('#save_order_id').attr('data-order'); var ajax_url = "/origami/" + order_id + "/request_bills"; $.ajax({ @@ -753,7 +736,13 @@ function requestBillProcess(){ } } }); -} +}); + +//split bill process +$('#split_bills').click(function(){ + var dining_id = "<%= @room.id %>"; + window.location.href = '/origami/room/' + dining_id + "/split_bills"; +}); $('#move').on('click',function(){ var dining_id = "<%= @room.id %>" diff --git a/app/views/origami/split_bill/index.html.erb b/app/views/origami/split_bill/index.html.erb index 4e9dda80..31e6a5d0 100755 --- a/app/views/origami/split_bill/index.html.erb +++ b/app/views/origami/split_bill/index.html.erb @@ -20,31 +20,93 @@
- <% if !@orders.nil? %> + <% if !@orders.empty? %>
+
+
+

Order Items

+
+
+
+ + + + + + + + + + <% if !@order_items.nil? %> + <% sub_total = 0 %> + <% @order_items.each do |order_item| %> + <% if order_item.include? ('all_order') %> + <% order_item['all_order'].each do |odr_item| %> + <% + sub_total += odr_item['qty'].to_f * odr_item['price'].to_f + %> + > + + + + + <% end %> + <% end %> + <% + end + %> + <% end %> + +
ItemsQTYPrice
+ + + + <%=odr_item['item_name'] %> + <% if !odr_item['set_menu_items'].nil? + odr_item['set_menu_items'].each do |item_instance| %> +
<%= item_instance %> + <% end + end %> +
+
+ <%=odr_item['qty']%> + + <%=(odr_item['qty'].to_f * odr_item['price'].to_f)%> +
+
+
+ + + + + + +
Sub Total:<%=sub_total%>
+ +
+ <% @orders.each.with_index(0) do |order, order_index| %> <% active_class = "" %> <% if order_index == 0 %> <% active_class = "active" %> <% end %> -
+

Order Items

@@ -59,32 +121,34 @@ - <% if !order.order_items.nil? %> + <% if !@order_items.nil? %> <% sub_total = 0 %> - <% order.order_items.each do |order_item| %> + <% @order_items.each do |order_item| %> + <% if order_item.include? (order.order_id.to_s) %> <% - sub_total += order_item.qty*order_item.price + sub_total += order_item[order.order_id.to_s]['qty'].to_f * order_item[order.order_id.to_s]['price'].to_f %> - > + > - - + + - <%=order_item.item_name%> - <% if !order_item.set_menu_items.nil? - order_item.set_menu_items.each do |item_instance| %> + <%=order_item[order.order_id.to_s]['item_name'] %> + <% if !order_item[order.order_id.to_s]['set_menu_items'].nil? + order_item[order.order_id.to_s]['set_menu_items'].each do |item_instance| %>
<%= item_instance %> <% end end %>
- <%=order_item.qty%> + <%=order_item[order.order_id.to_s]['qty']%> - <%=(order_item.qty*order_item.price)%> + <%=(order_item[order.order_id.to_s]['qty'].to_f * order_item[order.order_id.to_s]['price'].to_f)%> + <% end %> <% end %> @@ -124,13 +188,28 @@
- <% if !@sale_data.nil? %> + <% if !@sale_data.empty? %> + + + + + + - <% @sale_data.each do |sale_data| %> - <% if sale_data.sale_status != 'completed' %> - > - + <% @sale_data.each_with_index do |sale_data, sale_index| %> + <% if sale_data.sale_status != 'completed' && sale_data.sale_status != 'void' %> + <% checked = "" %> + <% if sale_index == 1 %> + <% checked = "checked" %> + <% end %> + data=<%= sale_data.grand_total %> > + + + + <% end %> <% end %> @@ -148,16 +227,96 @@
- - - + + + +
+ + + + diff --git a/config/routes.rb b/config/routes.rb index bee3538e..ee09b593 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -205,7 +205,7 @@ scope "(:locale)", locale: /en|mm/ do post '/:sale_id/get_customer' => "customers#get_customer" get '/:id/:type/surveys', to: "surveys#new" - post '/:id/create_survey' => "surveys#create", :as => "create_surveys" + match '/:id/create_survey', to: "surveys#create", as: "create_surveys", via: [:post, :patch, :put] get '/addorders/get_menu/:id' => "addorders#get_menu",:as => "get_menu", :defaults => { :format => 'json' } get '/addorders/get_menu_category/:id' => "addorders#get_menu_category",:as => "get_menu_category", :defaults => { :format => 'json' } @@ -238,6 +238,8 @@ scope "(:locale)", locale: /en|mm/ do get '/room/:dining_id/split_bills' => 'split_bill#index' post '/split_bills', to: 'split_bill#create', as:"order_item_split_bills" + post '/split_bills/surveys', to: 'surveys#create_survey' + end #--------- Waiter/Ordering Station ------------# diff --git a/lib/tasks/clear_data.rake b/lib/tasks/clear_data.rake index 126d8db7..17dcde74 100755 --- a/lib/tasks/clear_data.rake +++ b/lib/tasks/clear_data.rake @@ -14,6 +14,7 @@ namespace :clear do SalePayment.delete_all ShiftSale.delete_all PaymentJournal.delete_all + Survey.delete_all DiningFacility.update_all(status:'available') CashierTerminal.update_all(is_currently_login: 0) puts "Clear Data Done."
#Receipt No.TotalAction
Receipt No. - <%= sale_data.receipt_no %>
><%= sale_data.receipt_no %><%= sale_data.grand_total %> + +