From 51a779cbeec3a8d55de22f2697d9d95d36c3c0a7 Mon Sep 17 00:00:00 2001 From: Yan Date: Sat, 1 Jul 2017 19:11:04 +0630 Subject: [PATCH 1/3] add zone with oqs and tax calculte method update --- app/controllers/oqs/home_controller.rb | 65 +++++++++---------- .../origami/discounts_controller.rb | 14 ++-- app/models/sale.rb | 15 +++-- app/views/oqs/home/index.html.erb | 13 ++-- 4 files changed, 58 insertions(+), 49 deletions(-) diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb index 0d4d07dc..d551a766 100644 --- a/app/controllers/oqs/home_controller.rb +++ b/app/controllers/oqs/home_controller.rb @@ -6,19 +6,24 @@ class Oqs::HomeController < BaseOqsController @queue_items_details = queue_items_query(false) # Query for OQS with delivery status true - @queue_completed_item = queue_items_query(true) + @queue_completed_item = completed_order @queue_stations_items=Array.new # Calculate Count for each station tab queue_stations.each do |que| - i=0 + i = 0 + zone_id = 0 @queue_items_details.each do |qid| - if qid.station_name == que.station_name - i=i+1 - end + dining = DiningFacility.find_by_name(qid.zone) + que.order_queue_process_by_zones.each do |qz| + if qid.station_id == qz.order_queue_station_id && qid.zone_id == dining.zone_id + zone_id = qid.zone_id + i=i+1 + end + end end - @queue_stations_items.push({:station_name => que.station_name, :is_active => que.is_active ,:item_count => i }) + @queue_stations_items.push({:zone_id => zone_id , :station_name => que.station_name, :is_active => que.is_active , :is_ap => que.auto_print, :item_count => i }) end @queue_stations_items @@ -83,34 +88,9 @@ class Oqs::HomeController < BaseOqsController # Query for OQS with delivery status def queue_items_query(status) - # queue_items = [] - # AssignedOrderItem.all.each do |aoi| - # oqs = OrderQueueStation.find(aoi.order_queue_station_id) - # order = Order.find(aoi.order_id) - # order_items = OrderItem.find_by_order_id(aoi.order_id) - # booking_orders = BookingOrder.find_by_order_id(aoi.order_id) - # booking = Booking.find(booking_orders.booking_id) - # dining = DiningFacility.find(booking.dining_facility_id) - # customer = Customer.find_by_customer_id(order.customer_id) - # queue_item = { - # :assigned_order_item_id => aoi.assigned_order_item_id, - # :station_name => oqs.station_name, - # :is_active => oqs.is_active, - # :zone => dining.name, - # :item_code => aoi.item_code, - # :item_name => order_items.item_name, - # :price => order_items.price, - # :qty => order_items.qty, - # :item_order_by => order_items.item_order_by, - # :options => order_items.options, - # :customer_name => customer.name, - # :created_at => order_items.created_at - # } - # queue_items.push(queue_item) - # end - # return queue_items - AssignedOrderItem.select("assigned_order_items.assigned_order_item_id, oqs.station_name, oqs.is_active, df.name as zone, df.type, odt.order_id, odt.item_code, odt.item_name, odt.price, odt.qty, odt.item_order_by, odt.options, cus.name as customer_name, odt.created_at") + AssignedOrderItem.select("assigned_order_items.assigned_order_item_id, oqs.id as station_id, oqs.station_name, oqs.is_active, oqpz.zone_id, df.name as zone, df.type, odt.order_id, odt.item_code, odt.item_name, odt.price, odt.qty, odt.item_order_by, odt.options, cus.name as customer_name, odt.created_at") .joins(" left join order_queue_stations as oqs on oqs.id = assigned_order_items.order_queue_station_id + left join order_queue_process_by_zones as oqpz on oqpz.order_queue_station_id = oqs.id left join orders as od ON od.order_id = assigned_order_items.order_id left join order_items as odt ON odt.item_code = assigned_order_items.item_code AND odt.order_id = assigned_order_items.order_id left join customers as cus ON cus.customer_id = od.customer_id @@ -120,4 +100,23 @@ class Oqs::HomeController < BaseOqsController .where("assigned_order_items.delivery_status = #{status} AND odt.price <> 0") .group("assigned_order_items.assigned_order_item_id") end + + # Completed Order + def completed_order + AssignedOrderItem.select("assigned_order_items.assigned_order_item_id, oqs.id as station_id, oqs.station_name, oqs.is_active, oqpz.zone_id, df.name as zone, df.type, odt.order_id, odt.item_code, odt.item_name, odt.price, odt.qty, odt.item_order_by, odt.options, cus.name as customer_name, odt.created_at") + .joins(" left join order_queue_stations as oqs on oqs.id = assigned_order_items.order_queue_station_id + left join order_queue_process_by_zones as oqpz on oqpz.order_queue_station_id = oqs.id + left join orders as od ON od.order_id = assigned_order_items.order_id + left join order_items as odt ON odt.item_code = assigned_order_items.item_code AND odt.order_id = assigned_order_items.order_id + left join customers as cus ON cus.customer_id = od.customer_id + left join booking_orders as bo on bo.order_id = assigned_order_items.order_id + left join bookings as bk on bk.booking_id = bo.booking_id + left join dining_facilities as df on df.id = bk.dining_facility_id") + .where("assigned_order_items.delivery_status = true AND odt.price <> 0") + .group("assigned_order_items.order_id") + + + # completed_order = AssignedOrderItem.group(:order_id).where('delivery_status=true'); + end + end diff --git a/app/controllers/origami/discounts_controller.rb b/app/controllers/origami/discounts_controller.rb index 02a85f91..16590320 100644 --- a/app/controllers/origami/discounts_controller.rb +++ b/app/controllers/origami/discounts_controller.rb @@ -74,8 +74,10 @@ class Origami::DiscountsController < BaseOrigamiController end end - sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax; - sale.save + # sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax; + # sale.save + # Re-calc All Amount in Sale + sale.compute_by_sale_items(sale_id, sale.sale_items, sale.total_discount) end dining = {:table_id => table_id, :table_type => table_type } @@ -100,8 +102,12 @@ class Origami::DiscountsController < BaseOrigamiController end end - sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax; - sale.save + # sale.total_discount = 0 + # sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax; + # sale.save + + # Re-calc All Amount in Sale + sale.compute_by_sale_items(sale_id, sale.sale_items, 0) end dining = {:table_id => table_id, :table_type => table_type } diff --git a/app/models/sale.rb b/app/models/sale.rb index 2578221d..d1cd63d0 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -224,7 +224,7 @@ class Sale < ApplicationRecord total_taxable = total_taxable + (item.taxable_price * item.qty) end - compute_tax(sale, total_taxable) + compute_tax(sale, total_taxable, total_discount) sale.total_amount = subtotal_price sale.total_discount = total_discount sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax @@ -262,7 +262,7 @@ class Sale < ApplicationRecord end # Tax Re-Calculte - def compute_tax(sale, total_taxable) + def compute_tax(sale, total_taxable, total_discount = 0) #if tax is not apply create new record SaleTax.where("sale_id='#{sale.sale_id}'").find_each do |existing_tax| #delete existing and create new @@ -280,9 +280,12 @@ class Sale < ApplicationRecord sale_tax.tax_rate = tax.rate #include or execulive # sale_tax.tax_payable_amount = total_taxable * tax.rate + + # substract , to give after discount + total_taxable = total_taxable - total_discount sale_tax.tax_payable_amount = total_taxable * tax.rate / 100 - #new taxable amount - total_taxable = total_taxable + sale_tax.tax_payable_amount + #new taxable amount is standard rule for step by step + # total_taxable = total_taxable + sale_tax.tax_payable_amount sale_tax.inclusive = tax.inclusive sale_tax.save @@ -319,8 +322,8 @@ class Sale < ApplicationRecord #include or execulive # sale_tax.tax_payable_amount = total_taxable * tax.rate sale_tax.tax_payable_amount = total_taxable * tax.rate / 100 - #new taxable amount - total_taxable = total_taxable + sale_tax.tax_payable_amount + #new taxable amount is standard rule for step by step + # total_taxable = total_taxable + sale_tax.tax_payable_amount sale_tax.inclusive = tax.inclusive sale_tax.save diff --git a/app/views/oqs/home/index.html.erb b/app/views/oqs/home/index.html.erb index 0f387dad..571de1a2 100644 --- a/app/views/oqs/home/index.html.erb +++ b/app/views/oqs/home/index.html.erb @@ -22,7 +22,10 @@ <%= qsi[:station_name] %> > <%= qsi[:item_count] %> - + + <% if qsi[:is_ap] %> + (ap) + <% end %> <% end %> @@ -34,8 +37,7 @@
<% - @queue_completed_item.each do |qid| - if qid.price != 0 + @queue_completed_item.each do |qid| %>
@@ -70,8 +72,7 @@
- <% - end + <% end %>
@@ -89,7 +90,7 @@ <% @queue_items_details.each do |qid| if qid.price != 0 - if qid.station_name == qsi[:station_name] + if qid.zone_id == qsi[:zone_id] && qid.station_name == qsi[:station_name] %>
From e9b1845ed2bde11b765d92cac49d25d7dff36fee Mon Sep 17 00:00:00 2001 From: Yan Date: Sat, 1 Jul 2017 20:02:14 +0630 Subject: [PATCH 2/3] saturday fixed --- .../origami/other_charges_controller.rb | 2 +- .../origami/payments_controller.rb | 6 ++-- .../origami/sale_edit_controller.rb | 2 +- app/controllers/origami/void_controller.rb | 7 +++++ app/models/printer/receipt_printer.rb | 5 ++-- app/pdf/receipt_bill_pdf.rb | 29 ++++++++++--------- app/views/origami/discounts/index.html.erb | 4 +-- 7 files changed, 33 insertions(+), 22 deletions(-) diff --git a/app/controllers/origami/other_charges_controller.rb b/app/controllers/origami/other_charges_controller.rb index a23ebd16..bb0d9e42 100644 --- a/app/controllers/origami/other_charges_controller.rb +++ b/app/controllers/origami/other_charges_controller.rb @@ -29,7 +29,7 @@ class Origami::OtherChargesController < BaseOrigamiController sale_item.sale_id = sale_id sale_item.product_code = "Other Charges" - sale_item.product_name = di["name"] + sale_item.product_name = "*" + di["name"] sale_item.product_alt_name = "" sale_item.remark = "Other Charges" diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index 2cdd44b5..1a757282 100644 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -30,7 +30,7 @@ class Origami::PaymentsController < BaseOrigamiController printer = Printer::ReceiptPrinter.new(print_settings) - printer.print_receipt_bill(print_settings,sale_items,sale_data,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info, shop_details) + printer.print_receipt_bill(print_settings,sale_items,sale_data,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info, shop_details, "Frt") end def create @@ -63,7 +63,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,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details) + printer.print_receipt_bill(print_settings,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Paid") end end @@ -142,6 +142,6 @@ 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,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details) + printer.print_receipt_bill(print_settings,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Re-print") end end diff --git a/app/controllers/origami/sale_edit_controller.rb b/app/controllers/origami/sale_edit_controller.rb index d4fba302..0e2c6cff 100644 --- a/app/controllers/origami/sale_edit_controller.rb +++ b/app/controllers/origami/sale_edit_controller.rb @@ -18,7 +18,7 @@ class Origami::SaleEditController < BaseOrigamiController @newsaleitem.save @newsaleitem.qty = saleitemObj.qty * -1 @newsaleitem.price = saleitemObj.price * -1 - @newsaleitem.is_taxable = 0 + @newsaleitem.is_taxable = 1 @newsaleitem.product_name = saleitemObj.product_name + " - void" @newsaleitem.save end diff --git a/app/controllers/origami/void_controller.rb b/app/controllers/origami/void_controller.rb index b8972cf2..687d9fa5 100644 --- a/app/controllers/origami/void_controller.rb +++ b/app/controllers/origami/void_controller.rb @@ -30,6 +30,13 @@ class Origami::VoidController < BaseOrigamiController table.save end + # update complete order items in oqs + SaleOrder.where("sale_id = '#{ sale_id }'").find_each do |sodr| + AssignedOrderItem.where("order_id = '#{ sodr.order_id }'").find_each do |aoi| + aoi.delivery_status = 1 + aoi.save + end + end end end diff --git a/app/models/printer/receipt_printer.rb b/app/models/printer/receipt_printer.rb index f8eb46d6..652339b9 100644 --- a/app/models/printer/receipt_printer.rb +++ b/app/models/printer/receipt_printer.rb @@ -65,11 +65,12 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker end #Bill Receipt Print - def print_receipt_bill(printer_settings,sale_items,sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info = nil,rebate_amount=nil,shop_details) + def print_receipt_bill(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) #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) + + 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) # print as print copies in printer setting count = printer_settings.print_copies diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb index bff0852d..60e1203c 100644 --- 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 - 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) + 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) self.page_width = 210 self.page_height = 7000 self.margin = 5 @@ -53,7 +53,7 @@ class ReceiptBillPdf < Prawn::Document items_account(item_price_by_accounts,printer_settings.precision,delimiter) - footer + footer(printed_status) end def header (shop_details) @@ -82,14 +82,11 @@ class ReceiptBillPdf < Prawn::Document move_down 5 y_position = cursor - bounding_box([0, y_position], :width =>self.item_width) do - text "Waiter: #{sale_data.requested_by}" , :size => self.item_font_size, :align => :left - end - move_down 5 - - y_position = cursor - bounding_box([0,y_position], :width =>self.item_width, :height => self.item_height) do - text "Cashier: #{sale_data.cashier_name}", :size => self.item_font_size,:align => :left + bounding_box([0, y_position], :width =>self.label_width, :height => self.item_height) do + text "W: #{sale_data.requested_by}" , :size => self.item_font_size, :align => :left + end + bounding_box([self.label_width,y_position], :width =>self.label_width, :height => self.item_height) do + text "C: #{sale_data.cashier_name}", :size => self.item_font_size,:align => :right end move_down 5 @@ -182,7 +179,7 @@ class ReceiptBillPdf < Prawn::Document y_position = cursor bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do - text "#{ st.tax_name }", :size => self.item_font_size,:align => :left + text "#{ st.tax_name } ( #{ st.tax_rate.to_i }%)", :size => self.item_font_size,:align => :left end bounding_box([self.item_description_width,y_position], :width =>self.label_width) do text "#{number_with_precision(st.tax_payable_amount, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :right @@ -360,12 +357,18 @@ class ReceiptBillPdf < Prawn::Document end end - def footer + def footer(printed_status) move_down 5 stroke_horizontal_rule move_down 5 - text "Thank You! See you Again", :left_margin => -10, :size => self.header_font_size,:align => :center + y_position = cursor + bounding_box([0, y_position], :width =>self.label_width, :height => self.item_height) do + text "#{printed_status}", :size => self.header_font_size,:align => :left + end + bounding_box([self.label_width,y_position], :width =>self.label_width, :height => self.item_height) do + text "Thank You! See you Again", :left_margin => -10, :size => self.header_font_size,:align => :right + end move_down 5 end diff --git a/app/views/origami/discounts/index.html.erb b/app/views/origami/discounts/index.html.erb index fbbff065..faa48c05 100644 --- a/app/views/origami/discounts/index.html.erb +++ b/app/views/origami/discounts/index.html.erb @@ -174,7 +174,7 @@
- +
@@ -187,7 +187,7 @@
- +
From 6fe2de877c6e9eb109bc02d5d9714f0d0cc5f534 Mon Sep 17 00:00:00 2001 From: Yan Date: Sat, 1 Jul 2017 20:08:57 +0630 Subject: [PATCH 3/3] remove add order --- app/views/origami/home/show.html.erb | 4 ++-- app/views/origami/rooms/show.html.erb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/origami/home/show.html.erb b/app/views/origami/home/show.html.erb index f89560f3..34093cb5 100644 --- a/app/views/origami/home/show.html.erb +++ b/app/views/origami/home/show.html.erb @@ -301,7 +301,7 @@ <% if @status_order == 'order' && @status_sale != 'sale' %> - + @@ -311,7 +311,7 @@ <% else %> - + diff --git a/app/views/origami/rooms/show.html.erb b/app/views/origami/rooms/show.html.erb index 36ae77c5..2cde86c9 100644 --- a/app/views/origami/rooms/show.html.erb +++ b/app/views/origami/rooms/show.html.erb @@ -272,7 +272,7 @@ <% if @status_order == 'order' && @status_sale != 'sale' %> - + @@ -281,7 +281,7 @@ <% else %> - +