From e3f9d62bce3243b52a65cb556c36e23f8fd7d189 Mon Sep 17 00:00:00 2001 From: Cherry Date: Sun, 4 Jun 2017 16:02:55 +0630 Subject: [PATCH 1/5] 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%> +
+
+ +
-
From 9b334a20fa217e0eed2c2fded99dac3244177602 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Sun, 4 Jun 2017 16:13:15 +0630 Subject: [PATCH 2/5] fixed receipt bill print view --- .../origami/request_bills_controller.rb | 3 +- app/jobs/order_queue_processor_job.rb | 2 +- app/models/printer/receipt_printer.rb | 8 +- app/pdf/receipt_bill_pdf.rb | 81 +++++++++++++++++-- app/views/crm/home/_queue.html.erb | 5 -- 5 files changed, 81 insertions(+), 18 deletions(-) diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb index 9f971289..2794d804 100644 --- a/app/controllers/origami/request_bills_controller.rb +++ b/app/controllers/origami/request_bills_controller.rb @@ -10,12 +10,13 @@ class Origami::RequestBillsController < BaseOrigamiController @sale_data = Sale.find_by_id(@sale_id) @sale_items = SaleItem.where("sale_id=?",@sale_id) end + unique_code="ReceiptBillPdf" print_settings=PrintSetting.find_by_unique_code(unique_code) printer = Printer::ReceiptPrinter.new(print_settings) - printer.print_receipt_bill(print_settings,@sale_items,@sale) + printer.print_receipt_bill(print_settings,@sale_items,@sale,@sale_data) end diff --git a/app/jobs/order_queue_processor_job.rb b/app/jobs/order_queue_processor_job.rb index e9a8c13f..eb298976 100644 --- a/app/jobs/order_queue_processor_job.rb +++ b/app/jobs/order_queue_processor_job.rb @@ -1,5 +1,5 @@ class OrderQueueProcessorJob < ApplicationJob - queue_as :default + queue_as :oqs def perform(order_id) # Do something later diff --git a/app/models/printer/receipt_printer.rb b/app/models/printer/receipt_printer.rb index d25dc8c3..86d43190 100644 --- a/app/models/printer/receipt_printer.rb +++ b/app/models/printer/receipt_printer.rb @@ -64,12 +64,12 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker self.print(filename) end #Bill Receipt Print - def print_receipt_bill(printer_settings,sale_items,sale) + def print_receipt_bill(printer_settings,sale_items,sale,sale_data) #Use CUPS service #Generate PDF #Print - pdf = ReceiptBillPdf.new(printer_settings,sale_items,sale) - pdf.render_file "tmp/receipt_bill_#{sale.id}.pdf" - self.print("tmp/receipt_bill_#{sale.id}.pdf") + pdf = ReceiptBillPdf.new(printer_settings,sale_items,sale,sale_data) + pdf.render_file "tmp/receipt_bill.pdf" + self.print("tmp/receipt_bill.pdf") end end diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb index e9ad042c..2f559403 100644 --- a/app/pdf/receipt_bill_pdf.rb +++ b/app/pdf/receipt_bill_pdf.rb @@ -1,11 +1,11 @@ class ReceiptBillPdf < Prawn::Document attr_accessor :receipt_width,:price_column_width,:p_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_column_width,:item_description_width - def initialize(printer_settings, sale_items,sale) + def initialize(printer_settings, sale_items,sale, sale_data) self.p_width = 200 self.page_height = 1450 self.margin = 10 # self.price_width = self.p_width / 2 - self.price_width=90 + self.price_width=80 self.item_width = self.p_width - self.price_width self.item_height = self.item_height self.qty_column_width = self.p_width / 2 @@ -14,7 +14,7 @@ class ReceiptBillPdf < Prawn::Document @item_width = self.p_width.to_i / 2 @qty_width = @item_width.to_i / 3 - @double = @qty_width * 2 + @double = @qty_width * 1.3 @half_qty = @qty_width / 2 #setting page margin and width super(:margin => [self.margin, self.margin, self.margin, self.margin], :page_size => [self.p_width, self.page_height]) @@ -25,6 +25,7 @@ class ReceiptBillPdf < Prawn::Document stroke_horizontal_rule cashier_info(sale.receipt_no,sale.customer.name, sale.receipt_date) line_items(sale_items) + all_total(sale_data) end @@ -89,7 +90,6 @@ class ReceiptBillPdf < Prawn::Document text_box "Items", :at =>[0,y_position], :width => @item_width.to_i - @half_qty.to_i , :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size text_box "Price", :at =>[@item_width.to_i - @half_qty.to_i,y_position], :width => @qty_width, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right text_box "Qty", :at =>[@item_width.to_i-@qty_width,y_position], :width => @half_qty, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right - text_box "Discount", :at =>[@item_width.to_i + @half_qty.to_i,y_position], :width => @qty_width, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right text_box "Total", :at =>[@item_width.to_i + @half_qty.to_i,y_position], :width => @double, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right } @@ -98,13 +98,80 @@ class ReceiptBillPdf < Prawn::Document stroke_horizontal_rule add_line_item_row(sale_items) - stroke_horizontal_rule + end def add_line_item_row(sale_items) - y_position = cursor - move_down 5 + y_position = cursor + move_down 5 + sub_total = 0.0 + sale_items.each do |item| + + sub_total += item.qty*item.unit_price + qty = item.qty + total_price = item.qty*item.unit_price + price = item.unit_price + product_name = item.product_name + + + y_position = cursor + + pad_top(15) { + # @item_width.to_i + @half_qty.to_i + text_box "#{product_name}", :at =>[0,y_position], :width => @item_width.to_i - @half_qty.to_i , :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size + text_box "#{price}", :at =>[@item_width.to_i - @half_qty.to_i,y_position], :width => @qty_width, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + text_box "#{qty.to_i}", :at =>[@item_width.to_i-@qty_width,y_position], :width => @half_qty, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + text_box "#{total_price}", :at =>[@item_width.to_i + @half_qty.to_i,y_position], :width => @double, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + + } + move_down 3 + end + stroke_horizontal_rule + move_down 5 + y_position = cursor + bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + text "Sub Total", :size => self.item_font_size,:align => :left + end + bounding_box([self.price_width,y_position], :width =>self.price_width) do + text "#{sub_total}" , :size => self.item_font_size,:align => :right + end + end + + def all_total(sale_data) + + move_down 5 + y_position =cursor + + bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + text "Discount", :size => self.item_font_size,:align => :left + end + bounding_box([self.price_width,y_position], :width =>self.price_width) do + text "( " +"#{sale_data.total_discount}" +" )" , :size => self.item_font_size,:align => :right + end + + move_down 5 + y_position =cursor + + bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + text "Total Tax", :size => self.item_font_size,:align => :left + end + bounding_box([self.price_width,y_position], :width =>self.price_width) do + text "( " +"#{sale_data.total_tax}" +" )" , :size => self.item_font_size,:align => :right + end + + move_down 5 + y_position = cursor + move_down 5 + bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + text "Grand Total", :size => self.item_font_size,:align => :left + end + bounding_box([self.price_width,y_position], :width =>self.price_width) do + text "#{sale_data.grand_total}" , :size => self.item_font_size,:align => :right + end + move_down 5 + # stroke_horizontal_rule + end end diff --git a/app/views/crm/home/_queue.html.erb b/app/views/crm/home/_queue.html.erb index 5bbbd2bf..a2fa6366 100644 --- a/app/views/crm/home/_queue.html.erb +++ b/app/views/crm/home/_queue.html.erb @@ -29,9 +29,4 @@
<% end %> <% end %> - - - - -
\ No newline at end of file From d058b1b1b8d82c1b564e7656e7c1b1e01e2d5525 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Sun, 4 Jun 2017 16:42:18 +0630 Subject: [PATCH 3/5] fixed conflict gem --- Gemfile | 8 +++----- Gemfile.lock | 2 -- app/pdf/receipt_bill_pdf.rb | 2 +- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index 985d976c..9d9e469b 100644 --- a/Gemfile +++ b/Gemfile @@ -9,19 +9,17 @@ end # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.1.0' # Use mysql as the database for Active Record -<<<<<<< HEAD + #gem 'mysql2', '>= 0.3.18', '< 0.5' -gem 'pg' -======= + gem 'mysql2', '>= 0.3.18', '< 0.5' #Use PosgreSQL -gem 'pg' +#gem 'pg' # redis server for cable # gem 'redis', '~> 3.0' ->>>>>>> a2c9996b765666db4cbcbef188fcfa2d27a7a6e2 # Use Puma as the app server gem 'puma', '~> 3.0' # Use SCSS for stylesheets diff --git a/Gemfile.lock b/Gemfile.lock index 5dce67dc..e2c1dd73 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -119,7 +119,6 @@ GEM nokogiri (1.7.2) mini_portile2 (~> 2.1.0) pdf-core (0.7.0) - pg (0.20.0) prawn (2.2.2) pdf-core (~> 0.7.0) ttfunk (~> 1.5) @@ -253,7 +252,6 @@ DEPENDENCIES kaminari! listen (~> 3.0.5) mysql2 (>= 0.3.18, < 0.5) - pg prawn prawn-table puma (~> 3.0) diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb index 2f559403..ffce7da2 100644 --- a/app/pdf/receipt_bill_pdf.rb +++ b/app/pdf/receipt_bill_pdf.rb @@ -23,7 +23,7 @@ class ReceiptBillPdf < Prawn::Document header( printer_settings.printer_name, printer_settings.name) stroke_horizontal_rule - cashier_info(sale.receipt_no,sale.customer.name, sale.receipt_date) + cashier_info(sale.receipt_no,sale.customer, sale.receipt_date) line_items(sale_items) all_total(sale_data) From 68e51c98c32aff51f5584c1e5ec13ed4dddec44c Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Mon, 5 Jun 2017 15:07:44 +0630 Subject: [PATCH 4/5] update origamitable,room query --- Gemfile.lock | 6 +- app/controllers/origami/home_controller.rb | 1 + app/models/customer.rb | 3 + app/models/menu_item.rb | 2 +- app/models/order.rb | 67 ++++++++++++---------- app/models/order_item.rb | 11 ++-- app/models/sale_item.rb | 9 +-- app/models/seed_generator.rb | 4 +- app/views/origami/home/index.html.erb | 21 +++++-- 9 files changed, 75 insertions(+), 49 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e2c1dd73..badb3aa4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: git://github.com/amatsuda/kaminari.git - revision: c3c853a944cd2bff072ae05e48c563b2c9a29597 + revision: bc52ae73d41386d344b5d1b18e689e5a988f1a03 branch: master specs: kaminari (1.0.1) @@ -92,7 +92,7 @@ GEM railties (>= 3.2, < 5.2) globalid (0.4.0) activesupport (>= 4.2.0) - i18n (0.8.1) + i18n (0.8.4) jbuilder (2.6.4) activesupport (>= 3.0.0) multi_json (>= 1.2) @@ -124,7 +124,7 @@ GEM ttfunk (~> 1.5) prawn-table (0.2.2) prawn (>= 1.3.0, < 3.0.0) - puma (3.8.2) + puma (3.9.1) rack (2.0.3) rack-cors (0.4.1) rack-protection (2.0.0) diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb index e27013e5..18a5819c 100644 --- a/app/controllers/origami/home_controller.rb +++ b/app/controllers/origami/home_controller.rb @@ -6,6 +6,7 @@ class Origami::HomeController < BaseOrigamiController end def show str = [] + if !params[:sale_id].nil? @order_details = SaleItem.get_order_items_details(params[:sale_id]) @order_details.each do |ord_detail| diff --git a/app/models/customer.rb b/app/models/customer.rb index a9ffbfc5..625e8fb2 100644 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -1,4 +1,7 @@ class Customer < ApplicationRecord + + #self.primary_key = :customer_id + before_create :generate_custom_id has_many :orders has_many :sales diff --git a/app/models/menu_item.rb b/app/models/menu_item.rb index 2a4e86be..0eafa612 100644 --- a/app/models/menu_item.rb +++ b/app/models/menu_item.rb @@ -1,5 +1,5 @@ class MenuItem < ApplicationRecord - belongs_to :account + #belongs_to :account belongs_to :menu_category, :optional => true has_many :menu_item_instances belongs_to :parent, :class_name => "MenuItem", foreign_key: "menu_item_id", :optional => true diff --git a/app/models/order.rb b/app/models/order.rb index 45d92462..1ba50ed6 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -209,54 +209,63 @@ class Order < ApplicationRecord #Origami: Cashier : to view order type Table 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") + booking_orders = Booking.select("sales.receipt_no, + orders.status as order_status, + bookings.booking_id, + sales.sale_id as sale_id, + dining_facilities.name as table_name") + .joins("left join booking_orders on booking_orders.booking = bookings.booking_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") + .joins("left join orders on orders.order_id = booking_orders.order") + .joins("left join sale_orders on sale_orders.order = orders.order_id") + .joins("left join sales on sales.sale_id = sale_orders.sale") + .where("booking_orders.order IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::TABLE_TYPE,true) + .group("bookings.booking_id") end #Origami: Cashier : to view order type Room 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") + booking_rooms = Booking.select("sales.receipt_no, + orders.status as order_status,bookings.booking_id, + sales.sale_id as sale_id, + dining_facilities.name as room_name") + .joins("left join booking_orders on booking_orders.booking = bookings.booking_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") - + .joins("left join orders on orders.order_id = booking_orders.order") + .joins("left join sale_orders on sale_orders.order = orders.order_id") + .joins("left join sales on sales.sale_id = sale_orders.sale") + .where("booking_orders.order IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,true) + .group("bookings.booking_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 + order_rooms = Order.select("orders.order_id as order_id, + sum(order_items.qty*order_items.price) as total_price, + order_items.order_items_id as order_items_id,dining_facilities.name as room_name") + .joins("left join booking_orders on booking_orders.order = orders.order_id + left join bookings on bookings.booking_id = booking_orders.booking_order_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.order_id") .where("dining_facilities.type=? and orders.order_type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,"dine_in",true) - .group("orders.id,order_items.id,dining_facilities.name") + .group("orders.order_id,order_items.order_items_id,dining_facilities.name") 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,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 + orders = Order.select("orders.order_id as order_id, + sales.receipt_no,orders.status as order_status,bookings.booking_id, + sales.sale_id as sale_id,dining_facilities.name as table_name") + .joins("left join booking_orders on booking_orders.order = orders.order_id + left join bookings on bookings.booking_id = booking_orders.booking_order_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 sale_orders on sale_orders.order_id = orders.id - left join sales on sales.id = sale_orders.sale_id") - + left join order_items on order_items.order_id = orders.order_id + left join sale_orders on sale_orders.order = orders.order_id + left join sales on sales.sale_id = sale_orders.sale") .where("dining_facilities.is_active=? and orders.date between ? and ?",true,from,to) - .group("orders.id") + .group("orders.order_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") diff --git a/app/models/order_item.rb b/app/models/order_item.rb index a1cf25c3..94ec7a1c 100644 --- a/app/models/order_item.rb +++ b/app/models/order_item.rb @@ -39,18 +39,21 @@ class OrderItem < ApplicationRecord #Origami : Cashier : to show order items details def self.get_order_items_details(booking_id) - booking_orders = BookingOrder.where("booking_id=?",booking_id) + booking_orders = BookingOrder.where("booking=?",booking_id) +puts booking_orders.to_json if booking_orders booking_orders.each do |book_order| + puts "booooooooo" + puts book_order.booking_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=?",book_order.order_id) + .joins("left join orders on orders.order_id = order_items.order_id") + .where("order_items.order_id=?",book_order.order) return order_details end else return false end - + end private def generate_custom_id diff --git a/app/models/sale_item.rb b/app/models/sale_item.rb index b7e4e6dd..a94785ff 100644 --- a/app/models/sale_item.rb +++ b/app/models/sale_item.rb @@ -10,18 +10,19 @@ class SaleItem < ApplicationRecord def self.get_order_items_details(sale_id) - sale_orders = SaleOrder.where("sale_id=?",sale_id) + sale_orders = SaleOrder.where("sale=?",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) + .joins("left join sales on sales.sale_id = sale_items.sale_id") + .where("sale_items.sale_id=?",sale_order.sale) return order_details end else return false end - + end + private def generate_custom_id self.sale_item_id = SeedGenerator.generate_id(self.class.name, "SLI") diff --git a/app/models/seed_generator.rb b/app/models/seed_generator.rb index 02a9fb64..da1e6284 100644 --- a/app/models/seed_generator.rb +++ b/app/models/seed_generator.rb @@ -14,9 +14,9 @@ class SeedGenerator < ApplicationRecord seed.current = current_no seed.save end - padding_len = 16 - prefix.len + padding_len = 12 - prefix.length - return prefix +"-"+ seed.current.to_s.to_s.rjust((16-prefix.length)+1,'0') + return prefix +"-"+ seed.current.to_s.to_s.rjust((12-prefix.length)+1,'0') end def self.new_receipt_no diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb index 9bfd80ac..eb325bbf 100644 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -31,13 +31,15 @@ <%=booking_order.table_name%> Receipt No : <%=booking_order.receipt_no%>
Order Status : <%=booking_order.order_status %> + sale_<%=booking_order.sale_id %> <% else %> -
+
-

<%=booking_order.table_name%>

+

<%=booking_order.table_name%>

Order Status : <%=booking_order.order_status %> + sale_<%=booking_order.sale_id %>
<% end %> @@ -53,18 +55,18 @@ <% if @booking_rooms %> <% @booking_rooms.each do |booking_room| %> <% if !booking_room.order_status = 'new'%> -
+

- <%=booking_room.room_name%>

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

<%=booking_room.room_name%>ddd

\ +

<%=booking_room.room_name%>ddd

\ Order Status : <%=booking_room.order_status %>
@@ -203,21 +205,26 @@ var table_or_order_id = 0 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){ @@ -230,8 +237,10 @@ function callOrderDetails(sale_order_id){ $("#sub-total").html("") $.ajax({type: "GET", url: url, + data: data_val, success:function(result){ + var sub_total = 0 var discount_amount = 0 var receipt_no = "" From 7b457400b2625f020b48435d81ff8c8c88552ca7 Mon Sep 17 00:00:00 2001 From: PhyoTheingi Date: Mon, 5 Jun 2017 18:31:56 +0630 Subject: [PATCH 5/5] Delete Fix for parent child process in Menu --- .../settings/menu_categories_controller.rb | 7 +++ .../menu_item_instances_controller.rb | 30 ++++++++---- app/controllers/settings/menus_controller.rb | 3 +- .../settings/set_menu_items_controller.rb | 2 +- .../settings/simple_menu_items_controller.rb | 2 +- app/models/menu.rb | 9 ++++ app/models/menu_category.rb | 24 +++++++++ app/models/menu_item.rb | 29 ++++++++++- app/models/menu_item_instance.rb | 8 +++ .../settings/menu_categories/index.html.erb | 2 +- .../menu_item_instances/_form.html.erb | 4 +- .../settings/menu_item_instances/new.html.erb | 3 +- .../menu_item_instances/show.html.erb | 49 +------------------ app/views/settings/menus/index.html.erb | 3 +- config/routes.rb | 2 +- 15 files changed, 110 insertions(+), 67 deletions(-) diff --git a/app/controllers/settings/menu_categories_controller.rb b/app/controllers/settings/menu_categories_controller.rb index d7f373aa..c2a521ae 100644 --- a/app/controllers/settings/menu_categories_controller.rb +++ b/app/controllers/settings/menu_categories_controller.rb @@ -63,7 +63,14 @@ class Settings::MenuCategoriesController < ApplicationController # DELETE /settings/menu_categories/1 # DELETE /settings/menu_categories/1.json def destroy + # instances = MenuItemInstance.where("menu_item_id=?",@settings_menu_item.id) + # instances.each do |instance| + # instance.destroy + # end + # @settings_menu_item.destroy + # @settings_menu_category.destroy + abc = MenuCategory.destroyCategory(@settings_menu_category) respond_to do |format| format.html { redirect_to settings_menu_categories_path, notice: 'Menu category was successfully destroyed.' } format.json { head :no_content } diff --git a/app/controllers/settings/menu_item_instances_controller.rb b/app/controllers/settings/menu_item_instances_controller.rb index 6bd00638..2b1fcecf 100644 --- a/app/controllers/settings/menu_item_instances_controller.rb +++ b/app/controllers/settings/menu_item_instances_controller.rb @@ -11,18 +11,21 @@ class Settings::MenuItemInstancesController < ApplicationController # GET /settings/menu_item_instances/1 # GET /settings/menu_item_instances/1.json def show - @category = MenuCategory.find(@item.menu_category_id) + id = MenuItemInstance.findParentCategory(@item) + @category = MenuCategory.find(id) end # GET /settings/menu_item_instances/new def new - @category = MenuCategory.find(@item.menu_category_id) + id = MenuItemInstance.findParentCategory(@item) + @category = MenuCategory.find(id) @settings_menu_item_instances = MenuItemInstance.new end # GET /settings/menu_item_instances/1/edit def edit - @category = MenuCategory.find(@item.menu_category_id) + id = MenuItemInstance.findParentCategory(@item) + @category = MenuCategory.find(id) end # POST /settings/menu_item_instances @@ -30,6 +33,7 @@ class Settings::MenuItemInstancesController < ApplicationController def create @settings_menu_item_instances = MenuItemInstance.new(settings_menu_item_instance_params) + #check if the menu item type is simple or not( not only the diff of status .. here is different routes) if params[:simple_menu_item_id] @settings_menu_item_instances.menu_item_id = params[:simple_menu_item_id] catID = MenuItem.find(params[:simple_menu_item_id]) @@ -38,10 +42,11 @@ class Settings::MenuItemInstancesController < ApplicationController catID = MenuItem.find(params[:set_menu_item_id]) end - category = MenuCategory.find(catID.menu_category_id) + id = MenuItemInstance.findParentCategory(catID) + category = MenuCategory.find(id) respond_to do |format| if @settings_menu_item_instances.save - @settings_menu_item_instances.item_attributes = params[:menu_item_instance][:item_attributes] + @settings_menu_item_instances.item_attributes = params[:menu_item_instance][:item_attributes].reject(&:blank?) @settings_menu_item_instances.save format.html { redirect_to settings_menu_category_simple_menu_item_path(category,catID), notice: 'Menu item instance was successfully created.' } format.json { render :show, status: :created, location: @settings_menu_item_instances } @@ -55,14 +60,15 @@ class Settings::MenuItemInstancesController < ApplicationController # PATCH/PUT /settings/menu_item_instances/1 # PATCH/PUT /settings/menu_item_instances/1.json def update - puts "params[:menu_item_instance][:item_attributes]" - puts params[:menu_item_instance][:item_attributes] + #check if the menu item type is simple or not( not only the diff of status .. here is different routes) if params[:simple_menu_item_id] catID = MenuItem.find(params[:simple_menu_item_id]) else catID = MenuItem.find(params[:set_menu_item_id]) end - category = MenuCategory.find(catID.menu_category_id) + + id = MenuItemInstance.findParentCategory(catID) + category = MenuCategory.find(id) respond_to do |format| if @settings_menu_item_instances.update(settings_menu_item_instance_params) @@ -86,7 +92,13 @@ class Settings::MenuItemInstancesController < ApplicationController else catID = MenuItem.find(params[:set_menu_item_id]) end - category = MenuCategory.find(catID.menu_category_id) + # check if the menu item is sub of another menu item + if catID.menu_category_id + category = MenuCategory.find(catID.menu_category_id) + else + item = MenuItem.find(catID.menu_item_id) + category = MenuCategory.find(item.menu_category_id) + end respond_to do |format| format.html { redirect_to settings_menu_category_simple_menu_item_path(category,catID), notice: 'Menu item instance was successfully destroyed.' } format.json { head :no_content } diff --git a/app/controllers/settings/menus_controller.rb b/app/controllers/settings/menus_controller.rb index e0ecde30..fa6ac158 100644 --- a/app/controllers/settings/menus_controller.rb +++ b/app/controllers/settings/menus_controller.rb @@ -55,7 +55,8 @@ class Settings::MenusController < ApplicationController # DELETE /settings/menus/1 # DELETE /settings/menus/1.json def destroy - @settings_menu.destroy + # @settings_menu.destroy + abc = Menu.destroyMenu(@settings_menu) respond_to do |format| format.html { redirect_to settings_menus_path, notice: 'Menu was successfully destroyed.' } format.json { head :no_content } diff --git a/app/controllers/settings/set_menu_items_controller.rb b/app/controllers/settings/set_menu_items_controller.rb index f6771548..1c3e2247 100644 --- a/app/controllers/settings/set_menu_items_controller.rb +++ b/app/controllers/settings/set_menu_items_controller.rb @@ -62,7 +62,7 @@ class Settings::SetMenuItemsController < ApplicationController # DELETE /settings/menu_items/1 # DELETE /settings/menu_items/1.json def destroy - # @settings_menu_item.destroy + abc = MenuItem.deleteRecursive(@settings_menu_item) respond_to do |format| format.html { redirect_to settings_menu_category_set_menu_items_path, notice: 'Menu item was successfully destroyed.' } format.json { head :no_content } diff --git a/app/controllers/settings/simple_menu_items_controller.rb b/app/controllers/settings/simple_menu_items_controller.rb index e0d45fcb..b02310dc 100644 --- a/app/controllers/settings/simple_menu_items_controller.rb +++ b/app/controllers/settings/simple_menu_items_controller.rb @@ -59,7 +59,7 @@ class Settings::SimpleMenuItemsController < ApplicationController # DELETE /settings/menu_items/1 # DELETE /settings/menu_items/1.json def destroy - # @settings_menu_item.destroy + abc = MenuItem.deleteRecursive(@settings_menu_item) respond_to do |format| format.html { redirect_to settings_menu_category_simple_menu_items_path, notice: 'Menu item was successfully destroyed.' } format.json { head :no_content } diff --git a/app/models/menu.rb b/app/models/menu.rb index 0c956a1e..05adfac4 100644 --- a/app/models/menu.rb +++ b/app/models/menu.rb @@ -22,4 +22,13 @@ class Menu < ApplicationRecord return current_menu end + + def self.destroyMenu(menu) + cats = MenuCategory.where("menu_id=?",menu.id) + cats.each do |cat| + abc = MenuCategory.destroyCategory(cat) + end + menu.destroy + return false + end end diff --git a/app/models/menu_category.rb b/app/models/menu_category.rb index 474990f2..e660b4b5 100644 --- a/app/models/menu_category.rb +++ b/app/models/menu_category.rb @@ -8,5 +8,29 @@ class MenuCategory < ApplicationRecord default_scope { order('order_by asc') } + def self.destroyCategory(menu_category) + # find the sub menu item of current item + sub_menu_cat = MenuCategory.where("menu_category_id=?",menu_category.id) + if sub_menu_cat.length != 0 + sub_menu_cat.each do |sub| + if destroyCategory(sub) + end + end + # find the items of current menu item + items = MenuItem.where("menu_category_id=?",menu_category.id) + items.each do |item| + abc = MenuItem.deleteRecursive(item) + end + menu_category.destroy + return true + else + items = MenuItem.where("menu_category_id=?",menu_category.id) + items.each do |item| + abc = MenuItem.deleteRecursive(item) + end + menu_category.destroy + return false + end + end end diff --git a/app/models/menu_item.rb b/app/models/menu_item.rb index 2a4e86be..22ec36de 100644 --- a/app/models/menu_item.rb +++ b/app/models/menu_item.rb @@ -1,5 +1,5 @@ class MenuItem < ApplicationRecord - belongs_to :account + # belongs_to :account belongs_to :menu_category, :optional => true has_many :menu_item_instances belongs_to :parent, :class_name => "MenuItem", foreign_key: "menu_item_id", :optional => true @@ -38,4 +38,31 @@ class MenuItem < ApplicationRecord return nil end + + def self.deleteRecursive(menu_item) + + # find the sub menu item of current item + sub_menu_items = MenuItem.where("menu_item_id=?",menu_item.id) + if sub_menu_items.length != 0 + sub_menu_items.each do |subitem| + if deleteRecursive(subitem) + end + end + # find the instances of current menu item + instances = MenuItemInstance.where("menu_item_id=?",menu_item.id) + instances.each do |instance| + instance.destroy + end + menu_item.destroy + return true + else + instances = MenuItemInstance.where("menu_item_id=?",menu_item.id) + instances.each do |instance| + instance.destroy + end + menu_item.destroy + return false + end + + end end diff --git a/app/models/menu_item_instance.rb b/app/models/menu_item_instance.rb index e7f7775e..09225a23 100644 --- a/app/models/menu_item_instance.rb +++ b/app/models/menu_item_instance.rb @@ -1,4 +1,12 @@ class MenuItemInstance < ApplicationRecord belongs_to :menu_item + def self.findParentCategory(item) + if item.menu_category_id + return item.menu_category_id + else + parentitem = MenuItem.find(item.menu_item_id) + findParentCategory(parentitem) + end + end end diff --git a/app/views/settings/menu_categories/index.html.erb b/app/views/settings/menu_categories/index.html.erb index 495addcc..8ac80a16 100644 --- a/app/views/settings/menu_categories/index.html.erb +++ b/app/views/settings/menu_categories/index.html.erb @@ -33,7 +33,7 @@ <%= settings_menu_category.alt_name rescue ''%> <%= settings_menu_category.order_by rescue ''%> <%= settings_menu_category.parent.name rescue ''%> - <%= link_to 'Edit', edit_settings_menu_category_path(settings_menu_category) %> | <%= link_to 'Destroy', settings_menu_categories_path(settings_menu_category), method: :delete, data: { confirm: 'Are you sure?' } %> + <%= link_to 'Edit', edit_settings_menu_category_path(settings_menu_category) %> | <%= link_to 'Destroy', settings_menu_category_path(settings_menu_category), method: :delete, data: { confirm: 'Are you sure?' } %> <% end %> diff --git a/app/views/settings/menu_item_instances/_form.html.erb b/app/views/settings/menu_item_instances/_form.html.erb index c0170245..54edfab4 100644 --- a/app/views/settings/menu_item_instances/_form.html.erb +++ b/app/views/settings/menu_item_instances/_form.html.erb @@ -1,5 +1,5 @@ -<%= simple_form_for([:settings,:menu_item, @settings_menu_item_instance]) do |f| %> +<%= simple_form_for([:settings,@item, @settings_menu_item_instances]) do |f| %> <%= f.error_notification %> @@ -20,3 +20,5 @@ <%= f.button :submit %>
<% end %> + + diff --git a/app/views/settings/menu_item_instances/new.html.erb b/app/views/settings/menu_item_instances/new.html.erb index c6d688ca..ccbc8fe8 100644 --- a/app/views/settings/menu_item_instances/new.html.erb +++ b/app/views/settings/menu_item_instances/new.html.erb @@ -10,8 +10,7 @@
diff --git a/app/views/settings/menu_item_instances/show.html.erb b/app/views/settings/menu_item_instances/show.html.erb index edd34a74..40383b51 100644 --- a/app/views/settings/menu_item_instances/show.html.erb +++ b/app/views/settings/menu_item_instances/show.html.erb @@ -3,8 +3,7 @@
-
-
-
-

Sub Menu Items

- - - - - - - - - - - - - - - - - <% @sub_menu.each do |settings_menu_item| %> - - - - - - - - - - <% if settings_menu_item.type == "SimpleMenuItem" %> - - - - <% else %> - - - - <% end %> - - <% end %> - -
Item codeNameAlt nameTypeParent ItemCreated byCreated at
<%= settings_menu_item.item_code %><%= settings_menu_item.name %><%= settings_menu_item.alt_name %><%= settings_menu_item.type %><%= settings_menu_item.parent.name rescue "-" %><%= settings_menu_item.created_by %><%=l settings_menu_item.created_at, :format => :short %><%= link_to 'Show', settings_menu_category_simple_menu_item_path(@category, settings_menu_item ) %><%= link_to 'Edit', edit_settings_menu_category_simple_menu_item_path(@category, settings_menu_item) %><%= link_to 'Destroy', settings_menu_category_simple_menu_item_path(@category, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %><%= link_to 'Show', settings_menu_category_set_menu_item_path(@category, settings_menu_item ) %><%= link_to 'Edit', edit_settings_menu_category_set_menu_item_path(@category, settings_menu_item) %><%= link_to 'Destroy', settings_menu_category_set_menu_item_path(@category, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %>
-
-
- <%= paginate @sub_menu, param_name: :page, :outer_window => 3 %> diff --git a/app/views/settings/menus/index.html.erb b/app/views/settings/menus/index.html.erb index 1f1bf994..d8c9c1ab 100644 --- a/app/views/settings/menus/index.html.erb +++ b/app/views/settings/menus/index.html.erb @@ -36,7 +36,8 @@ <%= settings_menu.created_by %> <%= settings_menu.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> - <%= link_to 'Edit', edit_settings_menu_path(settings_menu) %> + <%= link_to 'Edit', edit_settings_menu_path(settings_menu) %> + <%= link_to 'Destroy', settings_menu_path(settings_menu), method: :delete, data: { confirm: 'Are you sure?' } %> <% end %> diff --git a/config/routes.rb b/config/routes.rb index 7ba039b0..06fec1dc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -111,7 +111,7 @@ Rails.application.routes.draw do #menu resources :menus do #menu_categories - resources :menu_categories, only: [:new, :create, :edit] + resources :menu_categories, only: [:new, :create, :edit,:delete] end #accounts