diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js index 87b74809..b2f94bc0 100644 --- a/app/assets/javascripts/origami.js +++ b/app/assets/javascripts/origami.js @@ -51,6 +51,7 @@ $(document).ready(function(){ var customer_id=$(this).find(".customer-id").text(); show_customer_details(customer_id); + $("#re-print").val(unique_id); var cashier=""; var receipt_date=""; @@ -199,6 +200,14 @@ $(document).ready(function(){ return false; }); + $('#re-print').click(function() { + var sale_id = $(".selected-item").find(".orders-id").text(); + + window.location.href = '/origami/'+ sale_id + "/reprint" + + return false; + }); + function show_customer_details(customer_id){ if(window.location.pathname.substring(0, 12) == "/origami/SAL"){ @@ -297,19 +306,25 @@ function control_button(order_status){ $("#request_bills").prop('disabled', true); $("#discount").prop('disabled', false); $("#pay-bill").prop('disabled', false); + $("#re-print").prop('disabled', true); } else if(order_status=="new") { $("#customer").prop('disabled', false); $("#request_bills").prop('disabled', false); $("#discount").prop('disabled', true); $("#pay-bill").prop('disabled', true); + $("#re-print").prop('disabled', true); + }else if(order_status=="completed"){ + $("#re-print").prop('disabled', false); } else { $("#customer").prop('disabled', true); $("#request_bills").prop('disabled', true); $("#discount").prop('disabled', true); $("#pay-bill").prop('disabled', true); + $("#re-print").prop('disabled', true); } + } /* For Receipt - Update Balance */ diff --git a/app/controllers/crm/dining_queues_controller.rb b/app/controllers/crm/dining_queues_controller.rb index 9e8cd06c..99a68fe3 100644 --- a/app/controllers/crm/dining_queues_controller.rb +++ b/app/controllers/crm/dining_queues_controller.rb @@ -15,6 +15,7 @@ class Crm::DiningQueuesController < BaseCrmController # GET /crm/dining_queues/new def new @dining_queue = DiningQueue.new + @queue_no = DiningQueue.generate_queue_no end # GET /crm/dining_queues/1/edit @@ -25,7 +26,9 @@ class Crm::DiningQueuesController < BaseCrmController # POST /crm/dining_queues.json def create @dining_queue = DiningQueue.new(dining_queue_params) - + +puts "ffffffffffff" +puts @queue_no respond_to do |format| if @dining_queue.save format.html { redirect_to crm_dining_queues_path, notice: 'Dining queue was successfully created.' } diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index 01cedcbe..92c4fe3f 100644 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -77,4 +77,28 @@ class Origami::PaymentsController < BaseOrigamiController end end end + + def reprint + + sale_id = params[:sale_id] + + saleObj = Sale.find(sale_id) + + unique_code = "ReceiptBillPdf" + customer= Customer.find(saleObj.customer_id) + + # get member information + member_info = Customer.get_member_account(customer) + + # get printer info + print_settings=PrintSetting.find_by_unique_code(unique_code) + + # Calculate Food and Beverage Total + food_total, beverage_total = SaleItem.calculate_food_beverage(saleObj.sale_items) + + printer = Printer::ReceiptPrinter.new(print_settings) + printer.print_receipt_bill(print_settings,saleObj.sale_items,saleObj,customer.name, food_total, beverage_total, member_info) + end + + end diff --git a/app/controllers/settings/order_queue_stations_controller.rb b/app/controllers/settings/order_queue_stations_controller.rb index 46fcb54d..e8b9bbe0 100644 --- a/app/controllers/settings/order_queue_stations_controller.rb +++ b/app/controllers/settings/order_queue_stations_controller.rb @@ -4,7 +4,8 @@ class Settings::OrderQueueStationsController < ApplicationController # GET /settings/order_queue_stations # GET /settings/order_queue_stations.json def index - @settings_order_queue_stations = OrderQueueStation.all.active + @settings_order_queue_stations = OrderQueueStation.all + @settings_order_queue_stations = Kaminari.paginate_array(@settings_order_queue_stations).page(params[:page]).per(50) end # GET /settings/order_queue_stations/1 diff --git a/app/controllers/transactions/manual_sales_controller.rb b/app/controllers/transactions/manual_sales_controller.rb new file mode 100644 index 00000000..77dd4371 --- /dev/null +++ b/app/controllers/transactions/manual_sales_controller.rb @@ -0,0 +1,77 @@ +class Transactions::ManualSalesController < ApplicationController + + def void + @sale = params[:sale_id] + @reason = Lookup.where("lookup_type = 'void_reason'") + respond_to do |format| + format.html # index.html.erb + format.json { render json: @sales } + end + end + + def manual_void_sale + sale_id = params[:sale_id] + reason = params[:reason] + sale = Sale.find(sale_id) + sale.sale_status = 'void' + sale.requested_by = current_login_employee.id + if sale.save + @sale = SaleAudit.record_audit_void(sale_id, current_login_employee.id, current_login_employee.id, reason) + + if sale.sale_orders + + sale.sale_orders.each do |bo| + order =Order.find(bo.order_id) + order.status= 'void' + order.save + booking_order = BookingOrder.find_by_order_id(bo.order_id) + + if booking_order.booking_id + booking = Booking.find(booking_order.booking_id) + dining_facility = booking.dining_facility + dining_facility.status = 'available' + dining_facility.save + end + end + + end + end + respond_to do |format| + format.html { redirect_to transactions_sales_url, notice: 'Sale was successfully void.' } + end + + end + + def manual_complete_sale + sale_id = params[:sale_id] + sale = Sale.find(sale_id) + + sale.sale_status = 'completed' + sale.requested_by = current_login_employee.id + remark = "Complete for Sale ID #{sale_id} By #{current_login_employee.name}" + if sale.save + @sale = SaleAudit.record_audit_complete(sale_id, remark, current_login_employee.id) + + if sale.sale_orders + + sale.sale_orders.each do |bo| + # order =Order.find(bo.order_id) + # order.status= 'void' + # order.save + booking_order = BookingOrder.find_by_order_id(bo.order_id) + + if booking_order.booking_id + booking = Booking.find(booking_order.booking_id) + dining_facility = booking.dining_facility + dining_facility.status = 'available' + dining_facility.save + end + end + + end + + end + redirect_to transactions_sales_path + end + +end diff --git a/app/controllers/transactions/sales_controller.rb b/app/controllers/transactions/sales_controller.rb index 82be6f59..fed62a34 100644 --- a/app/controllers/transactions/sales_controller.rb +++ b/app/controllers/transactions/sales_controller.rb @@ -9,23 +9,30 @@ class Transactions::SalesController < ApplicationController receipt_no = params[:receipt_no] today = Date.today - if receipt_no.nil? - sales = Sale.order("sale_id desc") + if receipt_no.nil? && search_date.nil? + @sales = Sale.where("NOT sale_status = 'void' " ).order("sale_id desc").limit(500) + @sales = Kaminari.paginate_array(@sales).page(params[:page]).per(50) else - order = Sale.search(receipt_no) - if order.count > 0 - sales = order + if !search_date.blank? && receipt_no.blank? + sale = Sale.where("DATE_FORMAT(receipt_date,'%d-%m-%Y') = ? and NOT sale_status = 'void' ", search_date).order("sale_id desc").limit(500).page(params[:page]) + elsif !search_date.blank? && !receipt_no.blank? + sale = Sale.where("receipt_no LIKE ? or DATE_FORMAT(receipt_date,'%d-%m-%Y') = ? and NOT sale_status = 'void' ", "%#{receipt_no}%", search_date).order("sale_id desc").limit(500).page(params[:page]) + else + sale = Sale.where("receipt_no LIKE ? and NOT sale_status = 'void' ", receipt_no).order("sale_id desc").limit(500).page(params[:page]) + end + if sale.count > 0 + @sales = sale + @sales = Kaminari.paginate_array(@sales).page(params[:page]).per(50) else - sales = Sale.order("sale_id desc") - - end - end - @sales = Kaminari.paginate_array(sales).page(params[:page]).per(50) + @sales = 0 + end + end respond_to do |format| format.html # index.html.erb format.json { render json: @sales } end + end # GET /transactions/sales/1 @@ -43,6 +50,18 @@ class Transactions::SalesController < ApplicationController end @sale_receivables = SalePayment.where('sale_id = ?', @sale.id) + + #get customer amount + @customer = Customer.find(@sale.customer_id) + response = Customer.get_member_account(@customer) + + if(response["status"] == true) + @membership = response["data"] + else + @membership = 0 + end + #end customer amount + respond_to do |format| format.html # show.html.erb format.json { render json: @sale } @@ -98,28 +117,6 @@ class Transactions::SalesController < ApplicationController end end - def void - @sale = params[:sale_id] - @reason = Lookup.where("lookup_type = 'void_reason'") - end - - def manual_void_sale - - sale_id = params[:sale_id] - reason = params[:reason] - sale = Sale.find(sale_id) - sale.sales_status = 'void' - sale.remarks = reason - sale.void_by = current_user.id - if sale.save - sale =SaleAudit.record_audit_void(sale_id, current_user.id, current_user.id, reason) - end - respond_to do |format| - format.html { redirect_to transactions_sales_url, notice: 'Sale was successfully void.' } - end - - end - private # Use callbacks to share common setup or constraints between actions. def set_transactions_sale diff --git a/app/models/dining_queue.rb b/app/models/dining_queue.rb index ea6a1381..09f8b6b5 100644 --- a/app/models/dining_queue.rb +++ b/app/models/dining_queue.rb @@ -1,2 +1,7 @@ class DiningQueue < ApplicationRecord + + def self.generate_queue_no + queue_no = DiningQueue.all.count + 1 + return queue_no + end end diff --git a/app/models/sale_audit.rb b/app/models/sale_audit.rb index 29daa796..f8c38857 100644 --- a/app/models/sale_audit.rb +++ b/app/models/sale_audit.rb @@ -6,19 +6,30 @@ class SaleAudit < ApplicationRecord belongs_to :sale - def record_audit_void(sale_id, void_by, approved_by, reason) + def self.record_audit_void(sale_id, void_by, approved_by, reason) #sale_audit - sale_audit = SaleAudit.new() - sale_audit.sale_id = sale_id - sale_audit.action = "SALEVOID" - sale_audit.action_at = DateTime.now.utc - sale_audit.action_by = void_by + sale_audit = SaleAudit.new() + sale_audit.sale_id = sale_id + sale_audit.action = "SALEVOID" + sale_audit.action_at = DateTime.now.utc + sale_audit.action_by = void_by sale_audit.approved_by = approved_by - sale_audit.remark = reason + sale_audit.remark = reason sale_audit.save! #sale_audit. end + def self.record_audit_complete(sale_id, remark, action_by) + sale_audit = SaleAudit.new() + sale_audit.sale_id = sale_id + sale_audit.action = "SALECOMPLETE" + sale_audit.action_at = DateTime.now.utc + sale_audit.action_by = action_by + sale_audit.remark = remark + sale_audit.approved_by = Time.now + sale_audit.save! + end + def record_audit_discount(sale_id, discount_by, approved_by, reason) #sale_audit sale_audit = SaleAudit.new() diff --git a/app/views/crm/customers/show.html.erb b/app/views/crm/customers/show.html.erb index b909a1c8..d806ec34 100644 --- a/app/views/crm/customers/show.html.erb +++ b/app/views/crm/customers/show.html.erb @@ -16,9 +16,9 @@ -
There is no data for search....
| + | |||||||
| Order ID | Menu Item | @@ -154,11 +157,11 @@ -||||||
|---|---|---|---|---|---|---|---|