From e3f9d62bce3243b52a65cb556c36e23f8fd7d189 Mon Sep 17 00:00:00 2001 From: Cherry Date: Sun, 4 Jun 2017 16:02:55 +0630 Subject: [PATCH] Sale Save --- app/controllers/origami/home_controller.rb | 22 ++- .../origami/request_bills_controller.rb | 14 +- app/models/order.rb | 54 +++--- app/models/order_item.rb | 16 +- app/models/sale.rb | 15 +- app/models/sale_item.rb | 14 ++ app/views/origami/home/index.html.erb | 181 ++++++++++++++---- app/views/origami/request_bills/show.html.erb | 14 +- 8 files changed, 241 insertions(+), 89 deletions(-) diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb index cbca1424..e27013e5 100644 --- a/app/controllers/origami/home_controller.rb +++ b/app/controllers/origami/home_controller.rb @@ -1,15 +1,23 @@ class Origami::HomeController < BaseOrigamiController def index - @order_table = Order.get_order_table() - @order_rooms = Order.get_order_rooms() + @booking_orders = Order.get_booking_order_table() + @booking_rooms = Order.get_booking_order_rooms() @orders = Order.get_orders() end def show str = [] - @order_details = OrderItem.get_order_items_details(params[:order_id]) - @order_details.each do |ord_detail| - str.push(ord_detail) - end - render :json => str.to_json + if !params[:sale_id].nil? + @order_details = SaleItem.get_order_items_details(params[:sale_id]) + @order_details.each do |ord_detail| + str.push(ord_detail) + end + render :json => str.to_json + else + @order_details = OrderItem.get_order_items_details(params[:order_id]) + @order_details.each do |ord_detail| + str.push(ord_detail) + end + render :json => str.to_json + end end end diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb index c202d4dc..79a0874e 100644 --- a/app/controllers/origami/request_bills_controller.rb +++ b/app/controllers/origami/request_bills_controller.rb @@ -1,13 +1,13 @@ class Origami::RequestBillsController < BaseOrigamiController def show @sale = Sale.new - check_order = Order.find_by_id(params[:id]) - if check_order - @order_details = OrderItem.get_order_items_details(check_order.id) - @order_details = OrderItem.get_order_items_details(check_order.id) - @status, @sale_id = @sale.generate_invoice_from_order(check_order.id, nil,current_login_employee.name) - @sale_data = Sale.find_by_id(@sale_id) - @sale_items = SaleItem.where("sale_id=?",@sale_id) + booking_id = params[:id] + check_booking = Booking.find_by_id(booking_id) + if check_booking.sale_id.nil? + #check if it doesn't exist + @status = @sale.generate_invoice_from_booking(check_booking.id,current_login_employee.name) + @sale_data = Sale.find_by_id(check_booking.sale_id) + @sale_items = SaleItem.where("sale_id=?",check_booking.sale_id) end end end diff --git a/app/models/order.rb b/app/models/order.rb index 5011276c..9898922f 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -193,7 +193,7 @@ class Order < ApplicationRecord # Count number of different items self.item_count = self.order_items.item_count self.quantity_count = quantity_count - # Counter number of quantity + # Counter number of quantityf end #Process order items and send to order queue @@ -203,38 +203,48 @@ class Order < ApplicationRecord end #Origami: Cashier : to view order type Table - def self.get_order_table - order_table = Order.select("orders.id as order_id,sum(order_items.qty*order_items.price) as total_price, - order_items.id as order_items_id,dining_facilities.name as table_name") - .joins("left join booking_orders on booking_orders.order_id = orders.id - left join bookings on bookings.id = booking_orders.id - left join dining_facilities on dining_facilities.id = bookings.dining_facility_id - left join order_items on order_items.order_id = orders.id") - .where("dining_facilities.type=? and orders.order_type=? and dining_facilities.is_active=?",DiningFacility::TABLE_TYPE,"dine_in",true) - .group("orders.id") + def self.get_booking_order_table + booking_orders = Booking.select("sales.receipt_no,orders.status as order_status,bookings.id,sales.id as sale_id,dining_facilities.name as table_name") + .joins("left join booking_orders on booking_orders.booking_id = bookings.id") + .joins("left join dining_facilities on dining_facilities.id = bookings.dining_facility_id") + .joins("left join orders on orders.id = booking_orders.order_id") + .joins("left join sale_orders on sale_orders.order_id = orders.id") + .joins("left join sales on sales.id = sale_orders.sale_id") + .where("booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::TABLE_TYPE,true) + .group("bookings.id") end #Origami: Cashier : to view order type Room - def self.get_order_rooms - order_rooms = Order.select("orders.id as order_id,sum(order_items.qty*order_items.price) as total_price, - order_items.id as order_items_id,dining_facilities.name as room_name") - .joins("left join booking_orders on booking_orders.order_id = orders.id - left join bookings on bookings.id = booking_orders.id - left join dining_facilities on dining_facilities.id = bookings.dining_facility_id - left join order_items on order_items.order_id = orders.id") - .where("dining_facilities.type=? and orders.order_type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,"dine_in",true) - .group("orders.id") + def self.get_booking_order_rooms + booking_rooms = Booking.select("sales.receipt_no,orders.status as order_status,bookings.id,sales.id as sale_id,dining_facilities.name as room_name") + .joins("left join booking_orders on booking_orders.booking_id = bookings.id") + .joins("left join dining_facilities on dining_facilities.id = bookings.dining_facility_id") + .joins("left join orders on orders.id = booking_orders.order_id") + .joins("left join sale_orders on sale_orders.order_id = orders.id") + .joins("left join sales on sales.id = sale_orders.sale_id") + .where("booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,true) + .group("bookings.id") end #Origami: Cashier : to view orders def self.get_orders from = Time.now.beginning_of_day.utc to = Time.now.end_of_day.utc - orders = Order.select("orders.id as order_id,sum(order_items.qty*order_items.price) as total_price, - order_items.id as order_items_id,dining_facilities.name as table_or_room_name") + orders = Order.select("orders.id as order_id,sales.receipt_no,orders.status as order_status,bookings.id,sales.id as sale_id,dining_facilities.name as table_name") .joins("left join booking_orders on booking_orders.order_id = orders.id left join bookings on bookings.id = booking_orders.id left join dining_facilities on dining_facilities.id = bookings.dining_facility_id - left join order_items on order_items.order_id = orders.id") + left join order_items on order_items.order_id = orders.id + left join sale_orders on sale_orders.order_id = orders.id + left join sales on sales.id = sale_orders.sale_id") .where("dining_facilities.is_active=? and orders.date between ? and ?",true,from,to) .group("orders.id") + + # Booking.select("sales.receipt_no,orders.status as order_status,bookings.id,sales.id as sale_id,dining_facilities.name as table_name") + # .joins("left join booking_orders on booking_orders.booking_id = bookings.id") + # .joins("left join dining_facilities on dining_facilities.id = bookings.dining_facility_id") + # .joins("left join orders on orders.id = booking_orders.order_id") + # .joins("left join sale_orders on sale_orders.order_id = orders.id") + # .joins("left join sales on sales.id = sale_orders.sale_id") + # .where("booking_orders.order_id IS NOT NULL and dining_facilities.is_active=? and orders.date between ? and ?",true,from,to) + # .group("orders.id") end end diff --git a/app/models/order_item.rb b/app/models/order_item.rb index f839ad99..7958409a 100644 --- a/app/models/order_item.rb +++ b/app/models/order_item.rb @@ -34,9 +34,17 @@ class OrderItem < ApplicationRecord end #Origami : Cashier : to show order items details - def self.get_order_items_details(order_id) - order_details = OrderItem.select("order_items.item_name,order_items.qty,order_items.price,(order_items.qty*order_items.price) as total_price") - .joins("left join orders on orders.id = order_items.order_id") - .where("order_items.order_id=?",order_id) + def self.get_order_items_details(booking_id) + booking_orders = BookingOrder.where("booking_id=?",booking_id) + if booking_orders + booking_orders.each do |book_order| + order_details = OrderItem.select("order_items.item_name,order_items.qty,order_items.price,(order_items.qty*order_items.price) as total_price") + .joins("left join orders on orders.id = order_items.order_id") + .where("order_items.order_id=?",book_order.order_id) + return order_details + end + else + return false + end end end diff --git a/app/models/sale.rb b/app/models/sale.rb index 88f0d846..8a16fa71 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -20,9 +20,9 @@ class Sale < ApplicationRecord #get all order attached to this booking and combine into 1 invoice booking.booking_orders.each do |order| if booking.sale_id - status, sale_id = generate_invoice_from_order(order.order_id, nil, requested_by) + status, sale_id = generate_invoice_from_order(order.order_id, nil, booking, requested_by) else - status, sale_id = generate_invoice_from_order(order.order_id, booking.sale_id, requested_by) + status, sale_id = generate_invoice_from_order(order.order_id, booking.sale_id, booking, requested_by) end booking.sale_id = sale_id end @@ -31,7 +31,7 @@ class Sale < ApplicationRecord end end - def generate_invoice_from_order (order_id, sale_id, requested_by) + def generate_invoice_from_order (order_id, sale_id, booking, requested_by) taxable = true #if sale_id is exsit and validate #add order to that invoice @@ -62,8 +62,8 @@ class Sale < ApplicationRecord add_item(item) end - link_order_sale(order.id) - + link_order_sale(order.id) + end @@ -73,6 +73,11 @@ class Sale < ApplicationRecord #Update the order items that is billed order.update_items_status_to_billed(nil) + order.status = "billed" + order.save + + booking.sale_id = self.id + booking.save return true, self.id end diff --git a/app/models/sale_item.rb b/app/models/sale_item.rb index 82b20237..443dca20 100644 --- a/app/models/sale_item.rb +++ b/app/models/sale_item.rb @@ -4,4 +4,18 @@ class SaleItem < ApplicationRecord #compute items - discount, tax, price_change def compute_item end + + def self.get_order_items_details(sale_id) + sale_orders = SaleOrder.where("sale_id=?",sale_id) + if sale_orders + sale_orders.each do |sale_order| + order_details = SaleItem.select("sales.total_discount as discount_amount,DATE_FORMAT(sales.receipt_date,'%Y-%m-%d %h:%m') as receipt_date,sales.cashier_name,sales.receipt_no,sale_items.product_name as item_name,sale_items.qty,sale_items.price,sale_items.unit_price as total_price") + .joins("left join sales on sales.id = sale_items.sale_id") + .where("sale_items.sale_id=?",sale_order.sale_id) + return order_details + end + else + return false + end + end end diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb index 7dcc1ba8..9bfd80ac 100644 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -22,34 +22,56 @@
- <% if @order_table %> - <% @order_table.each do |order_table| %> -
-
-

<%=order_table.table_name%>

-

<%=order_table.total_price%>

-
-
+ <% if @booking_orders %> + <% @booking_orders.each do |booking_order| %> + <% if !booking_order.order_status = 'new'%> +
+
+

+ <%=booking_order.table_name%>

+ Receipt No : <%=booking_order.receipt_no%>
+ Order Status : <%=booking_order.order_status %> +
+
+ <% else %> +
+
+

<%=booking_order.table_name%>

+ Order Status : <%=booking_order.order_status %> +
+
+ <% end %> <%end %> <%end %>
-
- <% @order_rooms.each do |order_room| %> -
- -
- <% tablename = order_room.room_name%> -

<%=order_room.room_name%>

-

<%=order_room.total_price%>

-
-
+ <% if @booking_rooms %> + <% @booking_rooms.each do |booking_room| %> + <% if !booking_room.order_status = 'new'%> +
+
+

+ <%=booking_room.room_name%>

+ Receipt No : <%=booking_room.receipt_no%>
+ Order Status : <%=booking_room.order_status %> +
+
+ <% else %> +
+
+

<%=booking_room.room_name%>ddd

\ + Order Status : <%=booking_room.order_status %> +
+
+ <% end %> + <%end %> <%end %> +
@@ -60,15 +82,29 @@
- <% @orders.each do |order| %> -
- -
-

<%=order.table_or_room_name%>

-

<%=order.total_price%>

-
-
+ <% if @orders %> + <% @orders.each do |order| %> + <% if !order.order_status = 'new'%> +
+
+

+ Order No:<%=order.order_id%>

+ Receipt No : <%=order.receipt_no%>
+ Order Status : <%=order.order_status %> +
+
+ <% else %> +
+
+

Order No:<%=order.order_id%>

+ Order Status : <%=order.order_status %> +
+
+ <% end %> + <%end %> <%end %> + +
@@ -83,7 +119,9 @@
-
ORDER DETAILS
+
ORDER DETAILS +

+
@@ -120,7 +158,19 @@ Sub Total - + + + + + + + + + + + + + @@ -152,9 +202,22 @@ var old_table_name = "" var table_or_order_id = 0 -function callOrderDetails(order_id){ - table_or_order_id = order_id - $("#test").html(order_id) +function callOrderDetails(sale_order_id){ + var order_id = 0 + var data_val = "" + sale_order = sale_order_id.split("_")[0] + if (sale_order == 'sale') { + order_id = sale_order_id.split("_")[1] + url = "origami/"+sale_order_id.split("_")[1] + data_val = { sale_id: sale_order_id.split("_")[1]} + + }else{ + order_id = sale_order_id.split("_")[1] + url = "origami/"+order_id + data_val = { order_id: sale_order_id.split("_")[1]} + + } + table_or_order_id = order_id var tbody = "" $("#append-table").html("") if (old_order_id != order_id){ @@ -163,30 +226,70 @@ function callOrderDetails(order_id){ old_order_id = order_id } $("#order-detail-header").html("") - $("#order-detail-header").append(document.getElementById("table-name-"+order_id).innerHTML) - $("#sub-total").html("") - url = "origami/"+order_id + $("#order-detail-header").append("Table Name : "+document.getElementById("table-name-"+order_id).innerHTML) + $("#sub-total").html("") $.ajax({type: "GET", url: url, - data: { order_id: order_id}, + data: data_val, success:function(result){ var sub_total = 0 + var discount_amount = 0 + var receipt_no = "" + var cashier_name = "" + var receipt_date = "" + var tax_amount = 0 + var grand_total_amount = 0 + row = "" for (i = 0; i < result.length; i++) { var data = JSON.stringify(result[i]); var parse_data = JSON.parse(data) sub_total += (parse_data.qty*parse_data.price) - row = ''+parse_data.item_name+"@"+(parse_data.price*1)+'' + row = ''+parse_data.item_name+"@"+(parse_data.price*1)+'' +''+(parse_data.qty*1)+'s' +''+(parse_data.qty*parse_data.price)+'' - +'' + +'>' tbody += row + discount_amount = result[i].discount_amount; + + tax_amount = result[i].tax_amount; + grand_total_amount = result[i].grand_total_amount; + + receipt_no = result[i].receipt_no; + cashier_name = result[i].cashier_name; + receipt_date = result[i].receipt_date; } - + row = "" $("#append-table").append(tbody) $("#sub-total").append((sub_total)+"
") - + if (discount_amount > 0 ) { + $("#discount-header").html("(Discount)") + $("#discount_amount").html("("+discount_amount+")") + } + + if (tax_amount > 0 ) { + $("#tax-header").html("Tax") + $("#tax_amount").html(tax_amount) + } + + if (grand_total_amount > 0 ) { + $("#grand-total-header").html("Grand Total") + $("#grand_total_amount").html(grand_total_amount) + } + + if (cashier_name == null){ + cashier_name = "" + } + if(receipt_no != null){ + $("#receipt-no").html("Receipt No : "+receipt_no) + } + if (receipt_date != null) { + $("#receipt-date").html("Receipt Date : "+receipt_date); + } + if (cashier_name != null) { + $("#cashier-name").html("Cashier Name : "+cashier_name); + } }, error:function(result){ // alert('error'); diff --git a/app/views/origami/request_bills/show.html.erb b/app/views/origami/request_bills/show.html.erb index 7fd5de39..0c726f46 100644 --- a/app/views/origami/request_bills/show.html.erb +++ b/app/views/origami/request_bills/show.html.erb @@ -3,7 +3,8 @@
- Receipt No <% if @sale_data%>- <%=@sale_data.receipt_no%><% end %> + Receipt No : <%=@sale_data.receipt_no rescue ' '%> + Receipt Date : <%=@sale_data.receipt_date rescue '-'%> Table No <% if @sale_data%>- <%=@sale_data.receipt_no%><% end %>
@@ -51,18 +52,21 @@ (Discount) - (<%=@sale_data.total_discount%>) + (<%=@sale_data.total_discount rescue 0%>) Tax - <%=@sale_data.total_tax%> + <%=@sale_data.total_tax rescue 0%> Grand Total - <%=@sale_data.grand_total%> + <%=@sale_data.grand_total rescue 0%> +
+
+ +
-