diff --git a/app/controllers/api/bill_controller.rb b/app/controllers/api/bill_controller.rb index 03909dc4..86d50556 100644 --- a/app/controllers/api/bill_controller.rb +++ b/app/controllers/api/bill_controller.rb @@ -9,15 +9,17 @@ class Api::BillController < Api::ApiController #create Bill by Booking ID if (params[:booking_id]) booking = Booking.find(params[:booking_id]) - if booking - if booking.sale_id.nil? - @sale = Sale.new - @status, @sale_id = @sale.generate_invoice_from_booking(params[:booking_id], current_login_employee) - else - @status = true - @sale_id = booking.sale_id + + if booking + if booking.sale_id.nil? + @sale = Sale.new + @status, @sale_id = @sale.generate_invoice_from_booking(params[:booking_id], current_login_employee) + else + @status = true + @sale_id = booking.sale_id + end end - end + elsif (params[:order_id]) @sale = Sale.new @status, @sale_id = @sale.generate_invoice_from_order(params[:order_id], current_login_employee) diff --git a/app/controllers/api/bookings_controller.rb b/app/controllers/api/bookings_controller.rb index 401cd4a8..24973d63 100644 --- a/app/controllers/api/bookings_controller.rb +++ b/app/controllers/api/bookings_controller.rb @@ -6,11 +6,9 @@ class Api::BookingsController < Api::ApiController end def show - @booking = Booking.find(params[:id]) + booking = Booking.find(params[:id]) + if booking.dining_facility_id.to_i == params[:table_id].to_i + @booking = booking + end end - - # private - # def Bookings_params - # params.permit(:id, :order_id) - # end end diff --git a/app/controllers/api/orders_controller.rb b/app/controllers/api/orders_controller.rb index c383fafb..b42de7c5 100644 --- a/app/controllers/api/orders_controller.rb +++ b/app/controllers/api/orders_controller.rb @@ -7,11 +7,45 @@ class Api::OrdersController < Api::ApiController order = Order.find(params[:order_id]) order.order_items end + def get_order order = Order.find(params[:order_id]) order.order_items end + # API - This api will retrive current booking for android with table or room id + def view_orders + booking_id = params[:booking_id] + table_id = params[:table_id] + if Booking.exists?(booking_id) + booking = Booking.find(booking_id) + + if booking + if booking.dining_facility_id.to_i == table_id.to_i + @booking = booking + else + table = DiningFacility.find(table_id) + booking = table.get_current_booking + if booking + if booking.dining_facility_id.to_i == table_id.to_i + @booking = booking + end + end + end + end + else + puts "only table" + table = DiningFacility.find(table_id) + booking = table.get_current_booking + puts booking + if booking + if booking.dining_facility_id.to_i == table_id.to_i + @booking = booking + end + end + end + end + # Description # This API allow new order creation # Input Params @@ -38,18 +72,50 @@ class Api::OrdersController < Api::ApiController if !params["booking_id"].nil? # check booking id is already completed. booking = Booking.find(params[:booking_id]) - if !booking.sale_id.nil? - if booking.sale.sale_status == "completed" || booking.sale.sale_status == "billed" - @order.new_booking = true + if booking + if booking.dining_facility_id.to_i == params[:table_id].to_i + if !booking.sale_id.nil? + if booking.sale.sale_status == "completed" || booking.sale.sale_status == "billed" + @order.new_booking = true + else + @order.new_booking = false + @order.booking_id = params[:booking_id] + end + else + @order.new_booking = false + @order.booking_id = params[:booking_id] + puts "booking sale is null" + end else - @order.new_booking = false - @order.booking_id = params[:booking_id] + # booking.table id not equal current table + table = DiningFacility.find(params[:table_id]) + if table + booking = table.get_current_booking + if booking + if booking.sale.sale_status == "completed" || booking.sale.sale_status == "billed" + @order.new_booking = true + else + @order.new_booking = false + @order.booking_id = booking.booking_id + end + end + end end - else - @order.new_booking = false - @order.booking_id = params[:booking_id] - puts "booking sale is null" - end + end #booking exists + else + #no booking id + table = DiningFacility.find(params[:table_id]) + if table + booking = table.get_current_booking + if booking + if booking.sale.sale_status == "completed" || booking.sale.sale_status == "billed" + @order.new_booking = true + else + @order.new_booking = false + @order.booking_id = booking.booking_id + end + end + end end @status, @booking = @order.generate diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb index 3246ea44..4c35a918 100644 --- a/app/controllers/origami/home_controller.rb +++ b/app/controllers/origami/home_controller.rb @@ -4,7 +4,7 @@ class Origami::HomeController < BaseOrigamiController def index @tables = Table.all.active.order('status desc') @rooms = Room.all.active.order('status desc') - @complete = Sale.all + @complete = Sale.complete_sale @orders = Order.all.order('date desc') end @@ -12,13 +12,16 @@ class Origami::HomeController < BaseOrigamiController def show @tables = Table.all.active.order('status desc') @rooms = Room.all.active.order('status desc') - @complete = Sale.all + @complete = Sale.complete_sale @orders = Order.all.order('date desc') @status_order = "" + @status_sale = "" + @sale_array = Array.new @dining.bookings.each do |booking| if booking.sale_id.nil? - @order_items = Array.new + @order_items = Array.new booking.booking_orders.each do |booking_order| + order = Order.find(booking_order.order_id) @obj_order = order @date = order.created_at @@ -30,6 +33,7 @@ class Origami::HomeController < BaseOrigamiController else sale = Sale.find(booking.sale_id) if sale.sale_status != "completed" + @sale_array.push(sale) if @status_order == 'order' @status_order = 'sale' end diff --git a/app/controllers/origami/movetable_controller.rb b/app/controllers/origami/movetable_controller.rb index 8199411c..cc6281ce 100644 --- a/app/controllers/origami/movetable_controller.rb +++ b/app/controllers/origami/movetable_controller.rb @@ -5,13 +5,16 @@ class Origami::MovetableController < BaseOrigamiController @rooms = Room.all.active.order('status desc') @complete = Sale.all @orders = Order.all.order('date desc') + @dining = DiningFacility.find(params[:dining_id]) @status_order = "" - @dining = DiningFacility.find(params[:dining_id]) + @status_sale = "" + @sale_array = Array.new @dining.bookings.each do |booking| if booking.sale_id.nil? - @order_items = Array.new + @order_items = Array.new booking.booking_orders.each do |booking_order| + order = Order.find(booking_order.order_id) @obj_order = order @date = order.created_at @@ -23,6 +26,7 @@ class Origami::MovetableController < BaseOrigamiController else sale = Sale.find(booking.sale_id) if sale.sale_status != "completed" + @sale_array.push(sale) if @status_order == 'order' @status_order = 'sale' end diff --git a/app/controllers/origami/orders_controller.rb b/app/controllers/origami/orders_controller.rb index 09e0c541..e5eb2808 100644 --- a/app/controllers/origami/orders_controller.rb +++ b/app/controllers/origami/orders_controller.rb @@ -3,8 +3,13 @@ class Origami::OrdersController < BaseOrigamiController def show @tables = Table.all.active.order('status desc') @rooms = Room.all.active.order('status desc') - @complete = Sale.all - @orders = Order.all.order('date desc') + @complete = Sale.complete_sale + @orders = Order.all.order('status desc') @order = Order.find(params[:order_id]) + sale_order = SaleOrder.find_by_order_id(@order.order_id) + if sale_order + sale = Sale.find(sale_order.sale_id) + @sale_status = sale.sale_status + end end end diff --git a/app/controllers/origami/rooms_controller.rb b/app/controllers/origami/rooms_controller.rb index 1ac7f41a..56030d4f 100644 --- a/app/controllers/origami/rooms_controller.rb +++ b/app/controllers/origami/rooms_controller.rb @@ -3,7 +3,7 @@ class Origami::RoomsController < BaseOrigamiController def show @tables = Table.all.active.order('status desc') @rooms = Room.all.active.order('status desc') - @complete = Sale.all + @complete = Sale.complete_sale @orders = Order.all.order('date desc') @room = DiningFacility.find(params[:room_id]) @room.bookings.each do |booking| diff --git a/app/controllers/origami/sales_controller.rb b/app/controllers/origami/sales_controller.rb index e9eb2edc..b5200114 100644 --- a/app/controllers/origami/sales_controller.rb +++ b/app/controllers/origami/sales_controller.rb @@ -3,7 +3,7 @@ class Origami::SalesController < BaseOrigamiController def show @tables = Table.all.active.order('status desc') @rooms = Room.all.active.order('status desc') - @complete = Sale.all + @complete = Sale.complete_sale @orders = Order.all.order('date desc') @sale = Sale.find(params[:sale_id]) end diff --git a/app/models/dining_facility.rb b/app/models/dining_facility.rb index c699a534..abf39d7a 100644 --- a/app/models/dining_facility.rb +++ b/app/models/dining_facility.rb @@ -19,11 +19,10 @@ class DiningFacility < ApplicationRecord end def get_current_booking - puts "enter booking" booking = Booking.where("dining_facility_id = #{self.id} and booking_status ='assign' and checkin_at between '#{DateTime.now.utc - 5.hours}' and '#{DateTime.now.utc}' and checkout_at is null").limit(1) if booking.count > 0 then - return booking[0].booking_id + return booking[0] else return nil end diff --git a/app/models/order.rb b/app/models/order.rb index 4f60f74c..78585b52 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -4,7 +4,7 @@ class Order < ApplicationRecord #primary key - need to be unique before_create :generate_custom_id before_create :set_order_date - + has_many :sale_orders belongs_to :customer has_many :order_items, autosave: true , inverse_of: :order has_many :assigned_order_items diff --git a/app/views/api/bookings/show.json.jbuilder b/app/views/api/bookings/show.json.jbuilder index e1ebd5a9..a8236f05 100644 --- a/app/views/api/bookings/show.json.jbuilder +++ b/app/views/api/bookings/show.json.jbuilder @@ -1,4 +1,5 @@ if (@booking) + json.success true json.id @booking.booking_id json.status @booking.booking_status if Sale.exists?(@booking.sale_id) @@ -43,5 +44,6 @@ if (@booking) json.sub_total @total_amount json.commerical_tax @total_amount * 0.05 json.total @total_amount + (@total_amount * 0.05) - +else + json.success false end diff --git a/app/views/api/orders/view_orders.json.jbuilder b/app/views/api/orders/view_orders.json.jbuilder new file mode 100644 index 00000000..ef927af0 --- /dev/null +++ b/app/views/api/orders/view_orders.json.jbuilder @@ -0,0 +1,49 @@ +if (@booking) + json.success true + json.booking_id @booking.booking_id + json.status @booking.booking_status + if Sale.exists?(@booking.sale_id) + json.sale_status Sale.find(@booking.sale_id).sale_status + else + json.sale_status "" + end + json.checkin_at @booking.checkin_at.strftime("%d-%m-%Y") + json.checkin_by @booking.checkin_by + json.table_name @booking.dining_facility.name + + if @booking.type == "TableBooking" + json.table_id @booking.dining_facility_id + else + json.room_id @booking.dining_facility_id + end + @total_amount = 0.00 + @total_tax = 0.00 + + if @booking.booking_orders + order_items = [] + @booking.booking_orders.each do |bo| + order = Order.find(bo.order_id) + #if (order.status == "new") + order_items = order_items + order.order_items + #end + end + + json.order_items order_items do |item| + json.item_instance_code item.item_code + json.item_name item.item_name + json.price item.price + json.qty item.qty + json.options item.options + json.remark item.remark + json.item_status item.order_item_status + @total_amount = @total_amount + (item.price * item.qty) + end + + end + + json.sub_total @total_amount + json.commerical_tax @total_amount * 0.05 + json.total @total_amount + (@total_amount * 0.05) +else + json.success false +end diff --git a/app/views/api/restaurant/zones/index.json.jbuilder b/app/views/api/restaurant/zones/index.json.jbuilder index cbcf1424..e2d040c6 100644 --- a/app/views/api/restaurant/zones/index.json.jbuilder +++ b/app/views/api/restaurant/zones/index.json.jbuilder @@ -8,7 +8,7 @@ if @zones json.name table.name json.status table.status json.zone_id table.zone_id #Add this zone_id to keep data structure consistance - json.current_booking table.get_current_booking + json.current_booking table.get_current_booking.booking_id rescue "" end json.rooms zone.rooms do |room| @@ -16,7 +16,7 @@ if @zones json.name room.name json.status room.status json.zone_id room.zone_id #Add this zone_id to keep data structure consistance - json.current_booking room.get_current_booking + json.current_booking room.get_current_booking.booking_id rescue "" end end @@ -26,7 +26,7 @@ else #list all tables and rooms with out zones json.name table.name json.status table.status json.zone_id table.zone_id #Add this zone_id to keep data structure consistance - json.current_booking table.get_current_booking + json.current_booking table.get_current_booking.booking_id rescue "" end @@ -35,7 +35,7 @@ else #list all tables and rooms with out zones json.name room.name json.status room.status json.zone_id room.zone_id #Add this zone_id to keep data structure consistance - json.current_booking room.get_current_booking + json.current_booking room.get_current_booking.booking_id rescue "" end diff --git a/app/views/layouts/_header_orgiami.html.erb b/app/views/layouts/_header_orgiami.html.erb index 9fc53f02..0ae18ff5 100644 --- a/app/views/layouts/_header_orgiami.html.erb +++ b/app/views/layouts/_header_orgiami.html.erb @@ -1,7 +1,7 @@
Receipt No: <% if @status_sale == 'sale' %> - <%= @obj_sale.receipt_no rescue '' %> + <%= @sale_array[0].receipt_no rescue '' %> <% end %>
| # | Items | QTY | Price @@ -133,14 +134,18 @@ |
|---|---|---|---|
| <%= count %> | <%= sale_item.product_name %> | <%= sale_item.qty %> | <%= sale_item.price %> | @@ -150,13 +155,18 @@ end end - if @status_order == 'order' + if @status_order == 'order' && @status_sale != 'sale' unless @order_items.nil? + count = 0 @order_items.each do |order_item | + puts @order_items.size + puts "view" + count += 1 sub_total = sub_total + order_item.price unless order_item.price <= 0 %>
| <%= count %> | <%= order_item.item_name %> | <%= order_item.qty %> | <%= order_item.qty*order_item.price %> | @@ -217,8 +227,24 @@
| Receipt No - <%= sale.receipt_no %> | ++ |