diff --git a/.code2lab.env b/.code2lab.env new file mode 100644 index 00000000..0a6c7f0b --- /dev/null +++ b/.code2lab.env @@ -0,0 +1 @@ +RAILS_ENV=production diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..6be8c8f3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +.git +.dockerignore diff --git a/.gitignore b/.gitignore index e32934b1..eadc1489 100755 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,8 @@ pickle-email-*.html /gems/* ._*.* .rbenv-version + +/config/initializers/* config/deploy/config/* config/puma.rb #config/shops.json diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..69f0f58e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM ruby:2.4.1 +RUN apt-get update -qq && apt-get install -y build-essential libmysqlclient-dev libcups2-dev libpq-dev nodejs +RUN mkdir /sxrestaurant +RUN mkdir -p /sxrestaurant/tmp/puma +ENV RAILS_ENV production +WORKDIR /sxrestaurant +COPY Gemfile /sxrestaurant/Gemfile +COPY Gemfile.lock /sxrestaurant/Gemfile.lock +RUN bundle install --without development test +RUN bundle exec rails assets:precompile +COPY . /sxrestaurant + diff --git a/README.md b/README.md index 25086cce..fcc35040 100755 --- a/README.md +++ b/README.md @@ -163,7 +163,6 @@ For CloseCashierCustomisePdf in lookups 1) settings/print_settings 2) settings/lookups => { type:print_settings, name: CloseCashierCustomisePdf, value:1 } -<<<<<<< HEAD <---- Extra Fields Script -----> For MoveTablePdf in lookups *** Both Table and Room Moving *** @@ -175,13 +174,12 @@ For MoveTablePdf in print settings ii) Unique Code: MoveTablePdf iii)Template: ... iv) Font: Zawgyi-One v) Printer: #printer name -======= + /* Tax Profile Group Types in lookups */ 1) settings/lookups => { type:tax_profiles, name: Cashier, value:cashier } 2) settings/lookups => { type:tax_profiles, name: Quick Service, value: quick_service } 3) settings/lookups => { type:tax_profiles, name: Doemal, value: doemal } /* Tax Profile Group Types in lookups */ ->>>>>>> 1c13b0469758fb968c0dfcc1f0a876ed2c5e395a Add Kitchen Role of Employee => 1) settings/lookups => { type:employee_roles, name: Kitchen, value:kitchen } diff --git a/app/assets/javascripts/addorder.js b/app/assets/javascripts/addorder.js index 30ed8af2..07511458 100755 --- a/app/assets/javascripts/addorder.js +++ b/app/assets/javascripts/addorder.js @@ -974,7 +974,7 @@ console.log(d_option) dataType: "json", success:function(result){ if (result.status) { - + console.log(result) if (result.data == null){ swal({ title: "Please Open Shift !", @@ -984,11 +984,13 @@ console.log(d_option) confirmButtonText: "Ok", closeOnConfirm: false }, function () { - window.location.href = '/origami/quick_service/pending_order/' + $('#sale_id').text(); + window.location.href = '/origami/quick_service/pending_order/' + $('#sale_id').text(); }); + }else if(result.data == 'OK'){ + window.location.href = '/origami/quick_service/pending_order/' + $('#sale_id').text(); }else{ - window.location.href = "/origami/sale/"+result.data["sale_id"]+"/"+type+"/payment" + window.location.href = "/origami/sale/"+result.data["sale_id"]+"/"+type+"/payment" } } } diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js index fb3f966b..ca021430 100755 --- a/app/assets/javascripts/origami.js +++ b/app/assets/javascripts/origami.js @@ -336,8 +336,24 @@ function resCardSaleTrans(card_sale_trans_id,cmd_type,payment_type, bnk_bill_amo } }); }else{ + if(payment_type!="master"){ + payment_type = payment_type.toUpperCase(); + }else{ + payment_type = "Master"; + } + $("#loading_wrapper").hide(); - swal ( "Oops" , resMsg.toString() , "error" ); + swal({ + title: 'Oops', + text: resMsg.toString(), + type: 'error', + html: true, + closeOnConfirm: false, + closeOnCancel: false, + allowOutsideClick: false + }, function () { + window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment/others_payment/"+payment_type; + }); } } diff --git a/app/assets/stylesheets/origami.scss b/app/assets/stylesheets/origami.scss index 601b8f89..1de250a3 100755 --- a/app/assets/stylesheets/origami.scss +++ b/app/assets/stylesheets/origami.scss @@ -417,6 +417,14 @@ i.logout_icon{ #is_memberModal .btn { width: 80%; } + +#is_paymemberModal .modal-body { + height: 150px !important; +} + +#is_paymemberModal .btn { + width: 80%; +} /* End Is Member Modal */ /* Start iframe */ diff --git a/app/controllers/api/api_controller.rb b/app/controllers/api/api_controller.rb index 5b60b5df..973fc159 100755 --- a/app/controllers/api/api_controller.rb +++ b/app/controllers/api/api_controller.rb @@ -1,7 +1,8 @@ class Api::ApiController < ActionController::API include TokenVerification - helper_method :current_token, :current_login_employee, :get_cashier + before_action :lookup_domain + helper_method :current_token, :current_login_employee, :get_cashier private #this is base api base controller to need to inherit. @@ -21,4 +22,32 @@ class Api::ApiController < ActionController::API def current_login_employee @employee = Employee.find_by_token_session(current_token) end + + def lookup_domain + if request.subdomain.present? && request.subdomain != "www" + from = request.subdomain.downcase + "." + request.domain.downcase + @license = cache_license(ENV["SX_PROVISION_URL"], from) # request.subdomain.downcase + if (!@license.nil?) + logger.info "Location - " + @license.dbhost + ActiveRecord::Base.establish_connection(website_connection(@license)) + # authenticate_session_token + # logger.info "Connecting to - " + @license.subdomain + " - "+ @license.dbhost + "@" + @license.dbschema + else + # reconnect_default_db + logger.info 'License is nil' + # redirect_to root_url(:host => request.domain) + "store_error" + render :json => [{ status: false, message: 'Invalid Access!'}] + end + end + end + + def cache_license(url, lookup) + @license = License.new(url, lookup) + + if (@license.detail_with_local_cache(lookup) == true) + return @license + else + return nil + end + end end diff --git a/app/controllers/api/bookings_controller.rb b/app/controllers/api/bookings_controller.rb index 24973d63..797583f0 100755 --- a/app/controllers/api/bookings_controller.rb +++ b/app/controllers/api/bookings_controller.rb @@ -1,5 +1,5 @@ class Api::BookingsController < Api::ApiController - skip_before_action :authenticate + # skip_before_action :authenticate #Show customer by ID def index @customer = Customer.find_by(params[:id]) diff --git a/app/controllers/api/call_waiters_controller.rb b/app/controllers/api/call_waiters_controller.rb index 7cf80a5d..b695dc33 100644 --- a/app/controllers/api/call_waiters_controller.rb +++ b/app/controllers/api/call_waiters_controller.rb @@ -9,7 +9,7 @@ class Api::CallWaitersController < ActionController::API ActionCable.server.broadcast "call_waiter_channel",table: @table,time:@time # get printer info - @shop = Shop::ShopDetail + @shop = Shop.first unique_code = "CallWaiterPdf" print_settings = PrintSetting.find_by_unique_code(unique_code) printer = Printer::ReceiptPrinter.new(print_settings) diff --git a/app/controllers/api/check_in_process_controller.rb b/app/controllers/api/check_in_process_controller.rb index 6f32c613..4bd9434d 100644 --- a/app/controllers/api/check_in_process_controller.rb +++ b/app/controllers/api/check_in_process_controller.rb @@ -1,5 +1,5 @@ class Api::CheckInProcessController < Api::ApiController - + # before_action :authenticate def check_in_time if params[:dining_id] dining_facility = DiningFacility.find(params[:dining_id]) @@ -49,7 +49,7 @@ class Api::CheckInProcessController < Api::ApiController arr_time = checkout_time[0].split("-") start_time = Time.parse(arr_time[0].strip).utc.getlocal.strftime("%H:%M%p") end_time = Time.parse(arr_time[1].strip).utc.getlocal.strftime("%H:%M%p") - if start_time <= checkout_at.strftime("%H:%M%p") && checkout_at.strftime("%H:%M%p") <= end_time + if start_time <= today.strftime("%H:%M%p") && today.strftime("%H:%M%p") <= end_time checkout_at = checkout_at + (checkout_time[1]).to_i.minutes end end diff --git a/app/controllers/api/order_reserve/order_reservation_controller.rb b/app/controllers/api/order_reserve/order_reservation_controller.rb new file mode 100644 index 00000000..2dfc29aa --- /dev/null +++ b/app/controllers/api/order_reserve/order_reservation_controller.rb @@ -0,0 +1,67 @@ +class Api::OrderReserve::OrderReservationController < Api::ApiController + # skip_before_action :authenticate + ORDER = "order" + RESERVATION = "reservation" + ORDER_RESERVATION = "order_and_reservation" + + def check_customer + customer_id = 0 + if !params[:name] + render :json => { :status => false, :message => "name is required!" } + elsif !params[:email] + render :json => { :status => false, :message => "email is required!" } + elsif !params[:membership_id] + render :json => { :status => false, :message => "membership_id is required!" } + end + + check_customer = Customer.find_by_email_and_membership_id(params[:email],params[:membership_id]) + if !check_customer.nil? + customer_id = check_customer.customer_id + else + customer = Customer.addCustomer(params) + customer_id = customer.id + end + + render :json => { :status => true, :data => { :customer_id => customer_id} } + end + + def create + status = false + if !params[:cus_info] + render :json => { :status => false, :message => "cus_info is required!" } + elsif !params[:requested_time] + render :json => { :status => false, :message => "requested_time is required!" } + elsif !params[:callback_url] + render :json => { :status => false, :message => "callback_url is required!" } + elsif !params[:reference] + render :json => { :status => false, :message => "reference is required!" } + elsif !params[:order_type] + render :json => { :status => false, :message => "order_type is required!" } + elsif params[:order_type] == ORDER || params[:order_type] == ORDER_RESERVATION + if !params[:order_info] + render :json => { :status => false, :message => "order_info is required!" } + else + status = true + end + elsif params[:order_type] == RESERVATION || params[:order_type] == ORDER_RESERVATION + if !params[:reservation_info] + render :json => { :status => false, :message => "reservation_info is required!" } + else + status = true + end + elsif !params[:payment_info] + render :json => { :status => false, :message => "payment_info is required!" } + elsif !params[:delivery_info] + render :json => { :status => false, :message => "delivery_info is required!" } + end + + if status == true + order_reservation_id, flag = OrderReservation.addOrderReservationInfo(params) + if flag + render :json => { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is successfully created!" } + else + render :json => { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is already existed!" } + end + end + end +end diff --git a/app/controllers/api/orders_controller.rb b/app/controllers/api/orders_controller.rb index 383a6606..d937c6c3 100755 --- a/app/controllers/api/orders_controller.rb +++ b/app/controllers/api/orders_controller.rb @@ -1,5 +1,5 @@ class Api::OrdersController < Api::ApiController - skip_before_action :authenticate + # skip_before_action :authenticate #Description # This API show current order details # Input Params - order_id diff --git a/app/controllers/concerns/token_verification.rb b/app/controllers/concerns/token_verification.rb index 1d700c8b..2c17e258 100755 --- a/app/controllers/concerns/token_verification.rb +++ b/app/controllers/concerns/token_verification.rb @@ -13,10 +13,17 @@ module TokenVerification authenticate_token || render_unauthorized end - def authenticate_token - authenticate_with_http_token do |token, options| - #@current_user = User.find_by(api_key: token) - Rails.logger.debug "token - " + token.to_s + def authenticate_token + authenticate_with_http_token do |token, options| + # Rails.logger.debug "token - " + token.to_s + if(options.length !=0 && options["from"] == "DOEMAL") + if(ENV["SERVER_MODE"] === "cloud") + from = request.subdomain.downcase + "." + request.domain.downcase + aes = MyAesCrypt.new + return aes.checkKeyForAuth(from, token) + end + end + @user = Employee.authenticate_by_token(token) if @user return true diff --git a/app/controllers/origami/alipay_controller.rb b/app/controllers/origami/alipay_controller.rb index 3f449856..d3b7c488 100644 --- a/app/controllers/origami/alipay_controller.rb +++ b/app/controllers/origami/alipay_controller.rb @@ -6,7 +6,7 @@ class Origami::AlipayController < BaseOrigamiController sale_data = Sale.find_by_sale_id(@sale_id) total = 0 @alipaycount = 0 - @shop = Shop::ShopDetail + @shop = Shop.first @rounding_adj = 0 @can_alipay = 0 @member_discount = 0 @@ -54,7 +54,7 @@ class Origami::AlipayController < BaseOrigamiController ref_no = params[:ref_no] if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment # if shop_details.is_rounding_adj diff --git a/app/controllers/origami/credit_payments_controller.rb b/app/controllers/origami/credit_payments_controller.rb index d70ef870..1aab35a5 100755 --- a/app/controllers/origami/credit_payments_controller.rb +++ b/app/controllers/origami/credit_payments_controller.rb @@ -9,7 +9,7 @@ class Origami::CreditPaymentsController < BaseOrigamiController @creditcount = 0 others = 0 - @shop = Shop::ShopDetail + @shop = Shop.first if @shop.is_rounding_adj new_total = Sale.get_rounding_adjustment(sale_data.grand_total) else @@ -32,7 +32,7 @@ class Origami::CreditPaymentsController < BaseOrigamiController sale_id = params[:sale_id] if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment if shop_details.is_rounding_adj diff --git a/app/controllers/origami/customers_controller.rb b/app/controllers/origami/customers_controller.rb index 70e5260f..fefb973e 100755 --- a/app/controllers/origami/customers_controller.rb +++ b/app/controllers/origami/customers_controller.rb @@ -144,5 +144,32 @@ class Origami::CustomersController < BaseOrigamiController render json: JSON.generate({:status => false, :error_message => "Record not found"}) end end - + + def send_account + amount = params[:amount] + account_no = params[:account_no] + receipt_no = params[:receipt_no] + sale = Sale.find_by_receipt_no(receipt_no) + @out = [] + action_by = current_user.id + membership_setting = MembershipSetting.find_by_membership_type("paypar_url") + if membership_setting.gateway_url + member_actions =MembershipAction.find_by_membership_type("get_account_balance") + if member_actions.gateway_url + @campaign_type_id = nil + url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s + merchant_uid= member_actions.merchant_account_id + auth_token = member_actions.auth_token.to_s + membership_data = SalePayment.get_paypar_account_data(url,membership_setting.auth_token,merchant_uid,auth_token,account_no,amount,receipt_no) + if membership_data["status"]==true + remark = "Payment by account no Receipt No #{sale.receipt_no} | Sale ID #{sale.sale_id} | Transaction ref: #{membership_data[:transaction_ref]} | Reload amount #{membership_data[:reload_amount]} | Old Balance Amount #{membership_data[:old_balance_amount]} | DateTime : #{membership_data[:date]}" + sale_audit = SaleAudit.record_audit_for_edit(sale.sale_id,sale.cashier_id, action_by,remark,"PAYBYACCOUNT" ) + else + remark = "Payment by account no Receipt No #{sale.receipt_no} | Sale ID #{sale.sale_id} | Remark : #{membership_data[:message]}" + sale_audit = SaleAudit.record_audit_for_edit(sale.sale_id,sale.cashier_id, action_by,remark,"PAYBYACCOUNT" ) + end + @out = membership_data + end + end + end end diff --git a/app/controllers/origami/dinga_controller.rb b/app/controllers/origami/dinga_controller.rb index b98b3408..448b39dd 100644 --- a/app/controllers/origami/dinga_controller.rb +++ b/app/controllers/origami/dinga_controller.rb @@ -1,102 +1,97 @@ class Origami::DingaController < BaseOrigamiController - def index - @sale_id = params[:sale_id] - payment_method = params[:payment_method] - @cashier_type = params[:type] - @membership_rebate_balance=0 - sale_data = Sale.find_by_sale_id(@sale_id) + def index + @sale_id = params[:sale_id] + payment_method = params[:payment_method] + @cashier_type = params[:type] + @membership_rebate_balance=0 + sale_data = Sale.find_by_sale_id(@sale_id) + @receipt_no = sale_data.receipt_no + @shop = Shop.first + # if @shop.is_rounding_adj + # new_total = Sale.get_rounding_adjustment(sale_data.grand_total) + # else + # new_total = sale_data.grand_total + # end + # @rounding_adj = new_total-sale_data.grand_total + @rounding_adj = sale_data.rounding_adjustment - @shop = Shop::ShopDetail - # if @shop.is_rounding_adj - # new_total = Sale.get_rounding_adjustment(sale_data.grand_total) - # else - # new_total = sale_data.grand_total - # end - # @rounding_adj = new_total-sale_data.grand_total - @rounding_adj = sale_data.rounding_adjustment - - @dingacount = 0 - others = 0 - sale_data.sale_payments.each do |sale_payment| + @payparcount = 0 + others = 0 + sale_data.sale_payments.each do |sale_payment| if sale_payment.payment_method == "dinga" - @dingacount = @dingacount + sale_payment.payment_amount + @payparcount = @payparcount + sale_payment.payment_amount else others = others + sale_payment.payment_amount end - end - @redeem_prices = sale_data.grand_total - @dingacount -others + end + @payment_prices = sale_data.grand_total - @payparcount -others - if sale_data - if sale_data.customer_id - customer_data= Customer.find_by_customer_id(sale_data.customer_id) - if customer_data - @membership_id = customer_data.membership_id - if !@membership_id.nil? - membership_setting = MembershipSetting.find_by_membership_type("dinga_url") - if membership_setting.gateway_url - member_actions =MembershipAction.find_by_membership_type("get_account_balance") - if member_actions.gateway_url - @campaign_type_id = member_actions.additional_parameter["campaign_type_id"] - url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s - merchant_uid= member_actions.merchant_account_id - auth_token = member_actions.auth_token.to_s - membership_data = SalePayment.get_dinga_account(url,membership_setting.auth_token,@membership_id,@campaign_type_id,merchant_uid,auth_token) - if membership_data["status"]==true - @membership_rebate_balance=membership_data["balance"] - @out = true, @membership_rebate_balance,@membership_id - end - else - @out =false,0 - end - else - @out = false,0 - end + if sale_data + if sale_data.customer_id + customer_data= Customer.find_by_customer_id(sale_data.customer_id) + if customer_data + @membership_id = customer_data.membership_id + if !@membership_id.nil? + membership_setting = MembershipSetting.find_by_membership_type("paypar_url") + if membership_setting.gateway_url + member_actions =MembershipAction.find_by_membership_type("get_account_balance") + if member_actions.gateway_url + @campaign_type_id = nil + url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s + merchant_uid= member_actions.merchant_account_id + auth_token = member_actions.auth_token.to_s + membership_data = SalePayment.get_paypar_account(url,membership_setting.auth_token,@membership_id,@campaign_type_id,merchant_uid,auth_token) + if membership_data["status"]==true + @membership_rebate_balance=membership_data["balance"] + @out = true, @membership_rebate_balance,@membership_id + end + else + @out =false,0 + end + else + @out = false,0 + end - else - @out = false, 0 - end - else - @out = false, 0 - end - else - @out = false, 0 - end - else - @out = false, 0 - end - @out = false, 0 - end - - def create - sale_id = params[:sale_id] - @cashier_type = params[:type] - redeem_amount = params[:redeem_amount] - membership_id = params[:membership_id] - payment_method = "dinga" - if(Sale.exists?(sale_id)) - saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail - - # rounding adjustment - if shop_details.is_rounding_adj - new_total = Sale.get_rounding_adjustment(saleObj.grand_total) - rounding_adj = new_total-saleObj.grand_total - saleObj.update_attributes(grand_total: new_total,old_grand_total: saleObj.grand_total,rounding_adjustment:rounding_adj) - end - - sale_payment = SalePayment.new - status,msg =sale_payment.process_payment(saleObj, @user, redeem_amount,payment_method) - if status == true - @out = true, "Success!" - else - @out =false, "Please try again payment!" - end - else - @out = false, "There has no sale record!" - end - - end - + else + @out = false, 0 + end + else + @out = false, 0 + end + else + @out = false, 0 + end + else + @out = false, 0 + end + @out = false, 0 +end + +def create + cash = params[:payment_amount] + sale_id = params[:sale_id] + transaction_ref = params[:transaction_ref] + if(Sale.exists?(sale_id)) + saleObj = Sale.find(sale_id) + shop_details = Shop.first + # rounding adjustment + # if shop_details.is_rounding_adj + # new_total = Sale.get_rounding_adjustment(saleObj.grand_total) + # rounding_adj = new_total-saleObj.grand_total + # saleObj.update_attributes(grand_total: new_total,old_grand_total: saleObj.grand_total,rounding_adjustment:rounding_adj) + # end + + # saleObj = Sale.find(sale_id) + sale_payment = SalePayment.new + status, @sale = sale_payment.process_payment(saleObj, @user, cash, "dinga",transaction_ref) + if status == true + @out = true, "Success!" + else + @out =false, "Please try again payment!" + end + end + end + end diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb index 8e00ef80..493e4680 100755 --- a/app/controllers/origami/home_controller.rb +++ b/app/controllers/origami/home_controller.rb @@ -8,7 +8,7 @@ class Origami::HomeController < BaseOrigamiController @rooms = Room.all.active.order('status desc') @complete = Sale.where("DATE_FORMAT(created_at,'%Y-%m-%d') = ? and sale_status != 'new'",DateTime.now.strftime('%Y-%m-%d')) @orders = Order.where("DATE_FORMAT(date,'%Y-%m-%d') = ? and status != 'billed'",DateTime.now.strftime('%Y-%m-%d')).order('date desc') - @shop = Shop::ShopDetail + @shop = Shop.first # @shift = ShiftSale.current_open_shift(current_user.id) end @@ -26,7 +26,7 @@ class Origami::HomeController < BaseOrigamiController @status_sale = "" @sale_array = Array.new - @shop = Shop::ShopDetail + @shop = Shop.first @membership = MembershipSetting::MembershipSetting @payment_methods = PaymentMethodSetting.all diff --git a/app/controllers/origami/jcb_controller.rb b/app/controllers/origami/jcb_controller.rb index fd79f6d8..dece303a 100644 --- a/app/controllers/origami/jcb_controller.rb +++ b/app/controllers/origami/jcb_controller.rb @@ -7,7 +7,7 @@ class Origami::JcbController < BaseOrigamiController sale_data = Sale.find_by_sale_id(@sale_id) total = 0 @jcbcount = 0 - @shop = Shop::ShopDetail + @shop = Shop.first @rounding_adj = 0 @can_jcb = 0 @member_discount= 0 @@ -56,7 +56,7 @@ class Origami::JcbController < BaseOrigamiController ref_no = params[:ref_no] if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment # if shop_details.is_rounding_adj diff --git a/app/controllers/origami/junction_pay_controller.rb b/app/controllers/origami/junction_pay_controller.rb index 1c52a271..aa0f0615 100644 --- a/app/controllers/origami/junction_pay_controller.rb +++ b/app/controllers/origami/junction_pay_controller.rb @@ -11,7 +11,7 @@ class Origami::JunctionPayController < BaseOrigamiController @cashier_id = current_user.emp_id @payment_method_setting_nav = PaymentMethodSetting.all - @shop = Shop::ShopDetail + @shop = Shop.first if @shop.is_rounding_adj new_total = Sale.get_rounding_adjustment(sale_data.grand_total) else @@ -52,7 +52,7 @@ class Origami::JunctionPayController < BaseOrigamiController if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment # if shop_details.is_rounding_adj diff --git a/app/controllers/origami/master_controller.rb b/app/controllers/origami/master_controller.rb index cca8a2c4..1e4c972d 100644 --- a/app/controllers/origami/master_controller.rb +++ b/app/controllers/origami/master_controller.rb @@ -7,7 +7,7 @@ class Origami::MasterController < BaseOrigamiController sale_data = Sale.find_by_sale_id(@sale_id) total = 0 @mastercount = 0 - @shop = Shop::ShopDetail + @shop = Shop.first @rounding_adj = 0 @can_master = 0 @member_discount = 0 @@ -53,7 +53,7 @@ class Origami::MasterController < BaseOrigamiController ref_no = params[:ref_no] if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment # if shop_details.is_rounding_adj diff --git a/app/controllers/origami/movetable_controller.rb b/app/controllers/origami/movetable_controller.rb index a92956e6..1753e096 100755 --- a/app/controllers/origami/movetable_controller.rb +++ b/app/controllers/origami/movetable_controller.rb @@ -88,7 +88,7 @@ class Origami::MovetableController < BaseOrigamiController @type = (DiningFacility.find(change_to)).type @moved_by = @current_user.name @date = DateTime.now - @shop = Shop::ShopDetail + @shop = Shop.first unique_code = "MoveTablePdf" pdf_no = PrintSetting.where(:unique_code => unique_code).count #print_settings = PrintSetting.find_by_unique_code(unique_code) diff --git a/app/controllers/origami/mpu_controller.rb b/app/controllers/origami/mpu_controller.rb index 6bd06b5a..234cebaa 100644 --- a/app/controllers/origami/mpu_controller.rb +++ b/app/controllers/origami/mpu_controller.rb @@ -6,7 +6,7 @@ class Origami::MpuController < BaseOrigamiController sale_data = Sale.find_by_sale_id(@sale_id) total = 0 @mpucount = 0 - @shop = Shop::ShopDetail + @shop = Shop.first @rounding_adj = 0 @can_mpu = 0 @member_discount = 0 @@ -54,7 +54,7 @@ class Origami::MpuController < BaseOrigamiController ref_no = params[:ref_no] if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment # if shop_details.is_rounding_adj diff --git a/app/controllers/origami/order_reservation_controller.rb b/app/controllers/origami/order_reservation_controller.rb new file mode 100644 index 00000000..db56d882 --- /dev/null +++ b/app/controllers/origami/order_reservation_controller.rb @@ -0,0 +1,12 @@ +class Origami::OrderReservationController < BaseOrigamiController + + def index + @webview = check_mobile + @shop = Shop::ShopDetail + + end + + + + +end diff --git a/app/controllers/origami/paymal_controller.rb b/app/controllers/origami/paymal_controller.rb index 3db34a1c..65af0c3b 100644 --- a/app/controllers/origami/paymal_controller.rb +++ b/app/controllers/origami/paymal_controller.rb @@ -1,80 +1,82 @@ class Origami::PaymalController < BaseOrigamiController - def index - @sale_id = params[:sale_id] - payment_method = params[:payment_method] - @cashier_type = params[:type] - @membership_rebate_balance=0 - sale_data = Sale.find_by_sale_id(@sale_id) + def index + @sale_id = params[:sale_id] + payment_method = params[:payment_method] + @cashier_type = params[:type] + @membership_rebate_balance=0 + sale_data = Sale.find_by_sale_id(@sale_id) + @receipt_no = sale_data.receipt_no + @shop = Shop.first + # if @shop.is_rounding_adj + # new_total = Sale.get_rounding_adjustment(sale_data.grand_total) + # else + # new_total = sale_data.grand_total + # end + # @rounding_adj = new_total-sale_data.grand_total + @rounding_adj = sale_data.rounding_adjustment - @shop = Shop::ShopDetail - # if @shop.is_rounding_adj - # new_total = Sale.get_rounding_adjustment(sale_data.grand_total) - # else - # new_total = sale_data.grand_total - # end - # @rounding_adj = new_total-sale_data.grand_total - @rounding_adj = sale_data.rounding_adjustment - - @payparcount = 0 - others = 0 - sale_data.sale_payments.each do |sale_payment| + @payparcount = 0 + others = 0 + sale_data.sale_payments.each do |sale_payment| if sale_payment.payment_method == "paypar" @payparcount = @payparcount + sale_payment.payment_amount else others = others + sale_payment.payment_amount end - end - @payment_prices = sale_data.grand_total - @payparcount -others + end + @payment_prices = sale_data.grand_total - @payparcount -others - if sale_data - if sale_data.customer_id - customer_data= Customer.find_by_customer_id(sale_data.customer_id) - if customer_data - @membership_id = customer_data.membership_id - if !@membership_id.nil? - membership_setting = MembershipSetting.find_by_membership_type("paypar_url") - if membership_setting.gateway_url - member_actions =MembershipAction.find_by_membership_type("get_account_balance") - if member_actions.gateway_url - @campaign_type_id = nil - url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s - merchant_uid= member_actions.merchant_account_id - auth_token = member_actions.auth_token.to_s - membership_data = SalePayment.get_paypar_account(url,membership_setting.auth_token,@membership_id,@campaign_type_id,merchant_uid,auth_token) - if membership_data["status"]==true - @membership_rebate_balance=membership_data["balance"] - @out = true, @membership_rebate_balance,@membership_id - end - else - @out =false,0 - end - else - @out = false,0 - end + if sale_data + if sale_data.customer_id + customer_data= Customer.find_by_customer_id(sale_data.customer_id) + if customer_data + @membership_id = customer_data.membership_id + if !@membership_id.nil? + membership_setting = MembershipSetting.find_by_membership_type("paypar_url") + if membership_setting.gateway_url + member_actions =MembershipAction.find_by_membership_type("get_account_balance") + if member_actions.gateway_url + @campaign_type_id = nil + url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s + merchant_uid= member_actions.merchant_account_id + auth_token = member_actions.auth_token.to_s + membership_data = SalePayment.get_paypar_account(url,membership_setting.auth_token,@membership_id,@campaign_type_id,merchant_uid,auth_token) + if membership_data["status"]==true + @membership_rebate_balance=membership_data["balance"] + @out = true, @membership_rebate_balance,@membership_id + end + else + @out =false,0 + end + else + @out = false,0 + end - else - @out = false, 0 - end - else - @out = false, 0 - end - else - @out = false, 0 - end - else - @out = false, 0 - end - @out = false, 0 + else + @out = false, 0 + end + else + @out = false, 0 end - def create - cash = params[:payment_amount] - sale_id = params[:sale_id] - if(Sale.exists?(sale_id)) - saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail - + else + @out = false, 0 + end + else + @out = false, 0 + end + @out = false, 0 +end + +def create + cash = params[:payment_amount] + sale_id = params[:sale_id] + transaction_ref = params[:transaction_ref] + if(Sale.exists?(sale_id)) + saleObj = Sale.find(sale_id) + shop_details = Shop.first + # rounding adjustment # if shop_details.is_rounding_adj # new_total = Sale.get_rounding_adjustment(saleObj.grand_total) @@ -84,18 +86,12 @@ class Origami::PaymalController < BaseOrigamiController # saleObj = Sale.find(sale_id) sale_payment = SalePayment.new - status, @sale = sale_payment.process_payment(saleObj, @user, cash, "paymal") - if status == true - @out = true, "Success!" - else - @out =false, "Please try again payment!" - end - end - end - - #Shop Name in Navbor - helper_method :shop_detail - def shop_detail - @shop = Shop.first - end + status, @sale = sale_payment.process_payment(saleObj, @user, cash, "paymal",transaction_ref) + if status == true + @out = true, "Success!" + else + @out =false, "Please try again payment!" + end + end + end end diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index baa5d2ec..dbd1cbb1 100755 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -44,7 +44,7 @@ class Origami::PaymentsController < BaseOrigamiController end #shop detail - shop_details = Shop::ShopDetail + shop_details = Shop.first # customer= Customer.where('customer_id=' +.customer_id) customer = Customer.find(sale_data.customer_id) # rounding adjustment @@ -99,7 +99,7 @@ class Origami::PaymentsController < BaseOrigamiController if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment if shop_details.is_rounding_adj a = saleObj.grand_total % 25 # Modulus @@ -238,7 +238,7 @@ class Origami::PaymentsController < BaseOrigamiController @dining = '' @other_payment = 0.0 - @shop = Shop::ShopDetail #show shop info + @shop = Shop.first #show shop info @customer_lists = Customer.where("customer_id = 'CUS-000000000001' or customer_id = 'CUS-000000000002'") @@ -391,7 +391,7 @@ class Origami::PaymentsController < BaseOrigamiController customer= Customer.find(saleObj.customer_id) #shop detail - shop_details = Shop::ShopDetail + shop_details = Shop.first # get member information rebate = MembershipSetting.find_by_rebate(1) if customer.membership_id != nil && rebate @@ -475,7 +475,7 @@ class Origami::PaymentsController < BaseOrigamiController customer= Customer.find(saleObj.customer_id) #shop detail - shop_details = Shop::ShopDetail + shop_details = Shop.first # get printer info print_settings=PrintSetting.find_by_unique_code(unique_code) diff --git a/app/controllers/origami/paypar_payments_controller.rb b/app/controllers/origami/paypar_payments_controller.rb index faaeca8e..e6e8d14a 100755 --- a/app/controllers/origami/paypar_payments_controller.rb +++ b/app/controllers/origami/paypar_payments_controller.rb @@ -7,7 +7,7 @@ class Origami::PayparPaymentsController < BaseOrigamiController payment_method = "paypar" if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment if shop_details.is_rounding_adj diff --git a/app/controllers/origami/quick_service_controller.rb b/app/controllers/origami/quick_service_controller.rb index d2194bb5..d5d3437b 100644 --- a/app/controllers/origami/quick_service_controller.rb +++ b/app/controllers/origami/quick_service_controller.rb @@ -154,10 +154,13 @@ class Origami::QuickServiceController < ApplicationController result = {:status=> true, :data => @sale } render :json => result.to_json - end + end + elsif (params[:sale_id][0,3] == "BKI") + result = {:status=> true, :data => 'OK' } + render :json => result.to_json else result = {:status=> true, :data => nil } - render :json => result.to_json + render :json => result.to_json end end diff --git a/app/controllers/origami/redeem_payments_controller.rb b/app/controllers/origami/redeem_payments_controller.rb index 347fd3ea..708f9f8f 100755 --- a/app/controllers/origami/redeem_payments_controller.rb +++ b/app/controllers/origami/redeem_payments_controller.rb @@ -6,7 +6,7 @@ class Origami::RedeemPaymentsController < BaseOrigamiController @membership_rebate_balance=0 sale_data = Sale.find_by_sale_id(@sale_id) - @shop = Shop::ShopDetail + @shop = Shop.first # if @shop.is_rounding_adj # new_total = Sale.get_rounding_adjustment(sale_data.grand_total) # else diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb index cdd1f442..05dbdce4 100755 --- a/app/controllers/origami/request_bills_controller.rb +++ b/app/controllers/origami/request_bills_controller.rb @@ -16,7 +16,12 @@ class Origami::RequestBillsController < ApplicationController 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) - table = DiningFacility.find(check_booking.dining_facility_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) diff --git a/app/controllers/origami/rooms_controller.rb b/app/controllers/origami/rooms_controller.rb index 505d747c..af59cd98 100755 --- a/app/controllers/origami/rooms_controller.rb +++ b/app/controllers/origami/rooms_controller.rb @@ -28,7 +28,7 @@ class Origami::RoomsController < BaseOrigamiController @status_sale = "" @sale_array = Array.new - @shop = Shop::ShopDetail + @shop = Shop.first @membership = MembershipSetting::MembershipSetting @payment_methods = PaymentMethodSetting.all diff --git a/app/controllers/origami/table_invoices_controller.rb b/app/controllers/origami/table_invoices_controller.rb index 5cd22054..1e8b1fbd 100755 --- a/app/controllers/origami/table_invoices_controller.rb +++ b/app/controllers/origami/table_invoices_controller.rb @@ -1,7 +1,7 @@ class Origami::TableInvoicesController < BaseOrigamiController def index @table = DiningFacility.find(params[:table_id]) - shop = Shop::ShopDetail + shop = Shop.first puts "table bookig lenght" @sale_array = Array.new @table.bookings.each do |booking| @@ -33,7 +33,7 @@ class Origami::TableInvoicesController < BaseOrigamiController @table = DiningFacility.find(params[:table_id]) @membership = MembershipSetting::MembershipSetting @payment_methods = PaymentMethodSetting.all - shop = Shop::ShopDetail + shop = Shop.first @sale_array = Array.new @table.bookings.each do |booking| if booking.sale_id.nil? diff --git a/app/controllers/origami/unionpay_controller.rb b/app/controllers/origami/unionpay_controller.rb index ec941a20..2bb5b0cf 100644 --- a/app/controllers/origami/unionpay_controller.rb +++ b/app/controllers/origami/unionpay_controller.rb @@ -6,7 +6,7 @@ class Origami::UnionpayController < BaseOrigamiController sale_data = Sale.find_by_sale_id(@sale_id) total = 0 @unionpaycount = 0 - @shop = Shop::ShopDetail + @shop = Shop.first @rounding_adj = 0 @can_unionpay = 0 @member_discount = 0 @@ -51,7 +51,7 @@ class Origami::UnionpayController < BaseOrigamiController ref_no = params[:ref_no] if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment # if shop_details.is_rounding_adj diff --git a/app/controllers/origami/visa_controller.rb b/app/controllers/origami/visa_controller.rb index 17b70010..4dc0912a 100644 --- a/app/controllers/origami/visa_controller.rb +++ b/app/controllers/origami/visa_controller.rb @@ -6,7 +6,7 @@ class Origami::VisaController < BaseOrigamiController sale_data = Sale.find_by_sale_id(@sale_id) total = 0 @visacount = 0 - @shop = Shop::ShopDetail + @shop = Shop.first @rounding_adj = 0 @can_visa = 0 @member_discount = 0 @@ -51,7 +51,7 @@ class Origami::VisaController < BaseOrigamiController ref_no = params[:ref_no] if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment # if shop_details.is_rounding_adj diff --git a/app/controllers/origami/voucher_controller.rb b/app/controllers/origami/voucher_controller.rb index 25352597..079e045d 100755 --- a/app/controllers/origami/voucher_controller.rb +++ b/app/controllers/origami/voucher_controller.rb @@ -8,7 +8,7 @@ class Origami::VoucherController < BaseOrigamiController @vouchercount = 0 others = 0 - @shop = Shop::ShopDetail + @shop = Shop.first if @shop.is_rounding_adj new_total = Sale.get_rounding_adjustment(sale_data.grand_total) else diff --git a/app/controllers/settings/menus_controller.rb b/app/controllers/settings/menus_controller.rb index c7de4df8..0264084c 100755 --- a/app/controllers/settings/menus_controller.rb +++ b/app/controllers/settings/menus_controller.rb @@ -72,7 +72,7 @@ class Settings::MenusController < ApplicationController # end end - def export + def export @settings_menus = Menu.all.page(params[:page]).per(10) menu = Menu.find(params[:id]) @@ -99,11 +99,11 @@ class Settings::MenusController < ApplicationController sheet.add_row ["Name",menu.name], :style=>title sheet.add_row - sheet.add_row ["Category Code", "Category Name", "Item Code", "Item Name", "Item AltName", "Taxable", "Instance Code", "Instance Name", "Price"], :style=>header_text + sheet.add_row ["Category Code", "Category Name", "Item Code", "Item Name", "Account", "Item AltName", "Taxable", "Instance Code", "Instance Name", "Price"], :style=>header_text menu.menu_categories.each do |mc| mc.menu_items.each do |mi| mi.menu_item_instances.each do |mii| - sheet.add_row [ mc.code, mc.name, mi.item_code, mi.name, mi.alt_name, mi.taxable, mii.item_instance_code, mii.item_instance_name, mii.price], :style=>wrap_text + sheet.add_row [ mc.code, mc.name, mi.item_code, mi.name, mi.account.title, mi.alt_name, mi.taxable, mii.item_instance_code, mii.item_instance_name, mii.price], :style=>wrap_text end end end diff --git a/app/models/customer.rb b/app/models/customer.rb index 934d371f..3eb51a24 100755 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -9,10 +9,10 @@ class Customer < ApplicationRecord has_many :orders has_many :sales - validates_presence_of :name, :contact_no, :email,:card_no + validates_presence_of :name, :contact_no, :email #,:card_no validates :contact_no, uniqueness: true, numericality: true validates :email, uniqueness: true,format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, on: :create } - validates :card_no, uniqueness: true + # validates :card_no, uniqueness: true # validates :paypar_account_no, uniqueness: true paginates_per 50 @@ -352,6 +352,23 @@ class Customer < ApplicationRecord end + #new customer for doemal + def self.addCustomer(params) + customer = Customer.new + customer.name = params[:name] + customer.email = params[:email] + customer.contact_no = params[:contact_no] + customer.gender = params[:gender] + customer.address = params[:address] + customer.date_of_birth = params[:date_of_birth] ? Time.parse(params[:date_of_birth]).strftime("%Y-%m-%d") : '' + customer.membership_id = params[:membership_id] + customer.customer_type = "Takeaway" + customer.tax_profiles = ["2"] + customer.save + + return customer + end + WALKIN = "CUS-000000000001" TAKEAWAY = "CUS-000000000002" diff --git a/app/models/delivery.rb b/app/models/delivery.rb new file mode 100644 index 00000000..d2273d8d --- /dev/null +++ b/app/models/delivery.rb @@ -0,0 +1,16 @@ +class Delivery < ApplicationRecord + belongs_to :order_reservation + + def self.addDeliveryInfo(params,order_reservation_id) + delivery = Delivery.new + delivery.order_reservation_id = order_reservation_id + delivery.provider = params[:provider] + delivery.delivery_type = params[:delivery_type] + delivery.township = params[:township] + delivery.address = params[:address] + delivery.direction_address = params[:address_direction] + delivery.delivery_fee = params[:delivery_fee] + delivery.remark = params[:delivery_note] + delivery.save! + end +end diff --git a/app/models/menu.rb b/app/models/menu.rb index d81079bd..8bf616c9 100755 --- a/app/models/menu.rb +++ b/app/models/menu.rb @@ -140,14 +140,6 @@ class Menu < ApplicationRecord end else # Menu by Menu Import - accs = Account.all - account_id = 1 - if accs.length > 0 - account_id = accs[0].id - else - status = "No Account Created." - end - sheet = spreadsheet.sheet(0) menu = sheet.row(1)[1] imported_menu = Menu.create({name: menu, is_active: true, valid_days: "1,2,3,4,5,6,7",valid_time_from: "00:00:00", valid_time_to: "23:59:59", created_by: created_by}) @@ -163,7 +155,12 @@ class Menu < ApplicationRecord menu_itm = MenuItem.find_by_item_code(row["Item Code"]) if !menu_itm - menu_itm = MenuItem.create(item_code: row["Item Code"], name: row["Item Name"], alt_name: row["Item AltName"], image_path: "", description: '', information: '', unit: '', type: "SimpleMenuItem", menu_category_id: menu_cat.id, item_attributes: "[]", item_options: "[]", account_id: account_id, is_sub_item: 0, is_available: 1, created_by: created_by) + account = Account.find_by_title(row["Account"]) + if account.nil? + account = Account.create({title: row["Account"], account_type: "0"}) + end + + menu_itm = MenuItem.create(item_code: row["Item Code"], name: row["Item Name"], account_id: account.id, alt_name: row["Item AltName"], image_path: "", description: '', information: '', unit: '', type: "SimpleMenuItem", menu_category_id: menu_cat.id, item_attributes: "[]", item_options: "[]", account_id: account_id, is_sub_item: 0, is_available: 1, created_by: created_by) # else # status = status + "Item Code already exists for " + row["Item Name"] + "." end diff --git a/app/models/my_aes_crypt.rb b/app/models/my_aes_crypt.rb index 680d0624..20f747c9 100644 --- a/app/models/my_aes_crypt.rb +++ b/app/models/my_aes_crypt.rb @@ -56,6 +56,21 @@ class MyAesCrypt return aes_key, aes_iv end + def checkKeyForAuth(from,token) + file_path = "config/shops.json" + shop_data = File.read(file_path) + + shop_json = JSON.parse(shop_data) + shop_json["data"].each do |j| + if j["lookup"] == from + if(j["value"]["key"] == token) + return true + end + end + end + return false + end + private def encrypt(data) cipher.encrypt diff --git a/app/models/order_reservation.rb b/app/models/order_reservation.rb new file mode 100644 index 00000000..62342b0c --- /dev/null +++ b/app/models/order_reservation.rb @@ -0,0 +1,55 @@ +class OrderReservation < ApplicationRecord + self.primary_key = "order_reservation_id" + + #primary key - need to be unique generated for multiple shops + before_create :generate_custom_id + + has_many :order_reservation_items + belongs_to :delivery + + def self.addOrderReservationInfo(params) + check_order_reservation = OrderReservation.where("transaction_ref = ?",params[:reference]) + if check_order_reservation.empty? + order_reservation = OrderReservation.new + order_reservation.order_reservation_type = params[:order_type] + order_reservation.customer_id = params[:cus_info] + order_reservation.requested_time = Time.parse(params[:requested_time]).utc.strftime("%Y-%m-%d %H:%M:%S") + order_reservation.callback_url = params[:callback_url] + order_reservation.transaction_ref = params[:reference] + if params[:order_info] + order_reservation.item_count = params[:order_info][:items].count + order_reservation.payment_type = params[:payment_info][:payment_type] + order_reservation.payment_status = params[:payment_info][:payment_status] + order_reservation.payment_ref = params[:payment_info][:payment_ref] + order_reservation.total_amount = params[:payment_info][:sub_total] + order_reservation.total_tax = params[:payment_info][:total_tax] + order_reservation.discount_amount = params[:payment_info][:discount_amount] + order_reservation.grand_total = params[:payment_info][:grand_total] + order_reservation.order_remark = params[:order_info][:order_remark] + end + if params[:reservation_info] + order_reservation.total_customer = params[:reservation_info][:total_user] + order_reservation.reservation_remark = params[:reservation_info][:reservation_note] + end + order_reservation.save! + if params[:order_info][:items] + params[:order_info][:items].each do |oritem| + OrderReservationItem.process_order_reservation_item(oritem[:product_code],oritem[:item_instance_code],oritem[:product_name],oritem[:product_alt_name], + oritem[:account_id],oritem[:qty],oritem[:price],oritem[:unit_price], + oritem[:options],nil,order_reservation.id) + end + end + if params[:delivery_info] + Delivery.addDeliveryInfo(params[:delivery_info],order_reservation.id) + end + return order_reservation.id, true + else + return check_order_reservation[0].id, false + end + end + + private + def generate_custom_id + self.order_reservation_id = SeedGenerator.generate_id(self.class.name, "ODRS") + end +end diff --git a/app/models/order_reservation_item.rb b/app/models/order_reservation_item.rb new file mode 100644 index 00000000..0d932f92 --- /dev/null +++ b/app/models/order_reservation_item.rb @@ -0,0 +1,32 @@ +class OrderReservationItem < ApplicationRecord + self.primary_key = "order_reservation_items_id" + + #primary key - need to be unique + before_create :generate_custom_id + + belongs_to :order_reservation, autosave: true + + def self.process_order_reservation_item (item_code, instance_code, menu_name, alt_name, account_id, qty, price, unit_price, options, set_menu_items, order_reservation_id) + orderreservationitem = OrderReservationItem.create do |oitem| + oitem.order_reservation_id = order_reservation_id + oitem.item_code = item_code + oitem.item_instance_code = instance_code + oitem.item_name = menu_name + oitem.alt_name = alt_name ? alt_name : "" + oitem.account_id = account_id + oitem.qty = qty + oitem.unit_price = unit_price + oitem.price = price + oitem.options = options + oitem.set_menu_items = set_menu_items + end + + #logger.debug orderitem.to_yml + orderreservationitem.save! + end + + private + def generate_custom_id + self.order_reservation_items_id = SeedGenerator.generate_id(self.class.name, "ODRSI") + end +end diff --git a/app/models/print_setting.rb b/app/models/print_setting.rb index 0760b59f..9b883726 100755 --- a/app/models/print_setting.rb +++ b/app/models/print_setting.rb @@ -1,6 +1,6 @@ class PrintSetting < ApplicationRecord # validations - validates_presence_of :name, :unique_code, :printer_name, :brand_name, :api_settings, :page_width, :page_height, :print_copies, :header_font_size, :item_font_size + validates_presence_of :name, :unique_code, :printer_name, :api_settings, :page_width, :page_height, :print_copies, :header_font_size, :item_font_size def self.get_precision_delimiter PrintSetting.find_by_unique_code("ReceiptBillPdf") diff --git a/app/models/sale.rb b/app/models/sale.rb index b9c0717e..10b48a18 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -535,7 +535,7 @@ class Sale < ApplicationRecord end def adjust_rounding - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment if shop_details.is_rounding_adj a = self.grand_total % 25 # Modulus @@ -555,7 +555,7 @@ class Sale < ApplicationRecord end def compute_adjust_rounding(grand_total) - shop_details = Shop::ShopDetail + shop_details = Shop.first # rounding adjustment if shop_details.is_rounding_adj a = grand_total % 25 # Modulus @@ -577,7 +577,7 @@ class Sale < ApplicationRecord #Generate new Receipt No when it is not assigned def generate_receipt_no #shop_code and client_code - shop_details = Shop::ShopDetail + shop_details = Shop.first #Date-Shift- if self.receipt_no.nil? @@ -2592,6 +2592,7 @@ end query = query.joins("join sale_orders as sale_orders on sale_orders.sale_id = sales.sale_id") .joins("join orders as orders on orders.order_id = sale_orders.order_id") query = query.where("sales.sale_status = 'new' AND orders.status = 'billed' AND orders.source =? ","quick_service") + .group("sales.sale_id") end def self.pending_order query = Booking.all diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 035bb792..201a1b57 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -103,6 +103,31 @@ class SalePayment < ApplicationRecord rescue OpenURI::HTTPError response = { status: false} + rescue SocketError + response = { status: false} + end + Rails.logger.debug "Get Paypar Account " + Rails.logger.debug response.to_json + return response + end + + def self.get_paypar_account_data(url,token,merchant_uid,auth_token,account_no,amount,receipt_no) + # Control for Paypar Cloud + begin + response = HTTParty.get(url, + :body => { merchant_uid:merchant_uid,auth_token:auth_token,receipt_no: receipt_no, + account_no: account_no, amount: amount}.to_json, + :headers => { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json; version=3' + }, :timeout => 10 + ) + rescue Net::OpenTimeout + response = { status: false } + + rescue OpenURI::HTTPError + response = { status: false} + rescue SocketError response = { status: false} end @@ -378,7 +403,7 @@ class SalePayment < ApplicationRecord self.payment_amount = self.received_amount self.payment_reference = self.voucher_no self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f - self.payment_status = "pending" + self.payment_status = "paid" payment_method = self.save! SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid') sale_update_payment_status(self.received_amount.to_f) @@ -410,10 +435,10 @@ class SalePayment < ApplicationRecord #Next time - validate if the vochure number is valid - within customer_data = Customer.find_by_customer_id(self.sale.customer_id) membership_setting = MembershipSetting.find_by_membership_type("paypar_url") - membership_data = SalePayment.redeem(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_id) + membership_data = SalePayment.create_payment(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_id) #record an payment in sale-audit - remark = "#{membership_data} Redeem- for Customer #{self.sale.customer_id} Sale Id [#{self.sale.sale_id}]| pay amount -> #{self.received_amount} " + remark = "#{membership_data} Dinga Payment- for Customer #{self.sale.customer_id} Sale Id [#{self.sale.sale_id}]| pay amount -> #{self.received_amount} " sale_audit = SaleAudit.record_paymal(self.sale.sale_id, remark, 1) if membership_data["status"]==true @@ -421,7 +446,7 @@ class SalePayment < ApplicationRecord self.payment_amount = self.received_amount self.payment_reference = self.voucher_no self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f - self.payment_status = "pending" + self.payment_status = "paid" payment_method = self.save! SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid') sale_update_payment_status(self.received_amount.to_f) @@ -429,6 +454,7 @@ class SalePayment < ApplicationRecord else sale_update_payment_status(0) end + return payment_status end diff --git a/app/pdf/order_summary_set_pdf.rb b/app/pdf/order_summary_set_pdf.rb index b9723a5c..316bbe44 100755 --- a/app/pdf/order_summary_set_pdf.rb +++ b/app/pdf/order_summary_set_pdf.rb @@ -4,8 +4,8 @@ class OrderSummarySetPdf < Prawn::Document def initialize(print_settings,order, print_status, order_items = nil,alt_name,before_updated_qty) self.page_width = print_settings.page_width self.page_height = print_settings.page_height - self.header_font_size = printer_settings.header_font_size.to_i - self.item_font_size = printer_settings.item_font_size.to_i + self.header_font_size = print_settings.header_font_size.to_i + self.item_font_size = print_settings.item_font_size.to_i self.margin = 0 self.price_width = 40 # No Need for item self.qty_width = 40 diff --git a/app/pdf/order_summary_slim_pdf.rb b/app/pdf/order_summary_slim_pdf.rb index 77aafc60..1e93fc0d 100755 --- a/app/pdf/order_summary_slim_pdf.rb +++ b/app/pdf/order_summary_slim_pdf.rb @@ -4,8 +4,8 @@ class OrderSummarySlimPdf < Prawn::Document def initialize(print_settings,order, print_status, order_items = nil,alt_name,before_updated_qty) self.page_width = print_settings.page_width self.page_height = print_settings.page_height - self.header_font_size = printer_settings.header_font_size.to_i - self.item_font_size = printer_settings.item_font_size.to_i + self.header_font_size = print_settings.header_font_size.to_i + self.item_font_size = print_settings.item_font_size.to_i self.margin = 0 self.price_width = 40 # No Need for item self.qty_width = 40 diff --git a/app/views/origami/dashboard/index.html.erb b/app/views/origami/dashboard/index.html.erb index 68b09437..1b6a554e 100644 --- a/app/views/origami/dashboard/index.html.erb +++ b/app/views/origami/dashboard/index.html.erb @@ -34,6 +34,14 @@
You can rebate upto <%= @payment_prices %>
-->