class Origami::RequestBillsController < ApplicationController before_action :check_user def check_user if current_user.nil? redirect_to root_path end end # Print Request Bill and add to sale tables def print @sale = Sale.new sale_order=SaleOrder.new if !ShiftSale.current_shift.nil? tax_data = TaxProfile.unscoped.where("group_type='cashier'").pluck(:id) customer = Customer.find('CUS-000000000001') puts "data => " puts tax_data puts customer.tax_profiles arr_data = [] tax_data.each do |value1| puts JSON.stringify(customer.tax_profiles) if customer.include? value1 arr_data << value1 end end puts "unique => " puts arr_data # tax_profiles = TaxProfile.unscoped.where("id in ?",arr_data) # puts tax_profiles.to_json # order_id = params[:id] # order_id # bk_order = BookingOrder.find_by_order_id(order_id) # order = Order.find(order_id) # check_booking = Booking.find_by_booking_id(bk_order.booking_id) # if check_booking.dining_facility_id.to_i > 0 # table = DiningFacility.find(check_booking.dining_facility_id) # else # table = nil # end # if check_booking.sale_id.nil? # # Create Sale if it doesn't exist # @status, @sale_id = @sale.generate_invoice_from_booking(check_booking.id,current_login_employee, current_user, order.source) # @sale_data = Sale.find_by_sale_id(@sale_id) # @sale_items = SaleItem.where("sale_id=?",@sale_id) # # in-duty update # in_duties = InDuty.where("booking_id=?",bk_order.booking_id) # if !in_duties.empty? # in_duties.each do |in_duty| # induty = InDuty.find(in_duty.id) # induty.sale_id = @sale_id # induty.save # end # end # else # @sale_data = Sale.find_by_sale_id(check_booking.sale_id) # @sale_items = SaleItem.where("sale_id=?",@sale_data.sale_id) # end # # Bind shift sale id to sale # # @sale_data.shift_sale_id = shift.id # # @sale_data.save # action_by = current_user.name # type = "REQUEST_BILL" # remark = "Request bill Receipt No #{@sale_data.receipt_no}" # sale_audit = SaleAudit.record_audit_sale(@sale_data.sale_id,remark,action_by,type ) # # Promotion Activation # Promotion.promo_activate(@sale) # #bill channel # if ENV["SERVER_MODE"] == 'cloud' # from = request.subdomain + "." + request.domain # else # from = "" # end # ActionCable.server.broadcast "bill_channel",table: table, from: from # if order.source == "quick_service" # result = {:status=> @status, :data => @sale.sale_id } # render :json => result.to_json # else # if ENV["SERVER_MODE"] != "cloud" #no print in cloud server # printer = PrintSetting.find_by_unique_code("CheckInOutPdf") # unique_code = "CheckInOutPdf" # booking = Booking.find_by_booking_id(bk_order.booking_id) # # print when complete click # order_queue_printer = Printer::OrderQueuePrinter.new(printer) # if !printer.nil? # order_queue_printer.print_check_in_out(printer, booking, table) # end # end # end else @status = false @error_message = "No Current Open Shift for This Employee" end def difference(other) h = other.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 } reject { |e| h[e] > 0 && h[e] -= 1 } end # Not Use for these printed bill cannot give customer # unique_code = "ReceiptBillPdf" # #shop detail # shop_details = Shop.find(1) # # customer= Customer.where('customer_id=' +.customer_id) # customer= Customer.find(@sale_data.customer_id) # # get member information # member_info = Customer.get_member_account(customer) # # get printer info # print_settings=PrintSetting.find_by_unique_code(unique_code) # # find order id by sale id # # sale_order = SaleOrder.find_by_sale_id(@sale_data.sale_id) # # Calculate price_by_accounts # item_price_by_accounts = SaleItem.calculate_price_by_accounts(@sale_items) # printer = Printer::ReceiptPrinter.new(print_settings) # printer.print_receipt_bill(print_settings,@sale_items,@sale_data,customer.name, item_price_by_accounts,member_info,shop_details) end end