diff --git a/app/assets/javascripts/addorder.js b/app/assets/javascripts/addorder.js index f6768182..03a2e708 100755 --- a/app/assets/javascripts/addorder.js +++ b/app/assets/javascripts/addorder.js @@ -1187,79 +1187,18 @@ $(function() { // Pay Discount for Payment $("#create_pay_order").on('click', function(e){ + $("#sxModal").show(); + $("#sxModal").attr('data-for', 'member'); $(this).attr('disabled', 'disabled'); e.preventDefault(); - type = $("#link_type").val(); - modify_order = window.location.href.indexOf("modify_order"); - $("#oqs_loading_wrapper").show(); - if (modify_order !=-1) { - var ajax_url = '../../../'+type+'/update_modify_order'; - var table_type = $('#table_type').text(); - var table_id = $('#table_id').text(); - var customer_id = $('#customer_id').text(); - var booking_id = $('#booking_id').text(); - var sale_id = $('#sale_id').text(); - }else{ - var ajax_url = 'addorders/create'; - var table_type = $('#table_id').find("option:selected").data('type'); - var table_id = $('#table_id').val(); - var customer_id = $('#customer_id').val(); - var booking_id = $('#booking_id').text(); - var sale_id = "" - } - var order_items = JSON.stringify(get_order_item_rows()); - if (booking_id.length > 0) { + getCardNo(); + }); - var params = {'order_source': type, 'order_type': "dine_in", - 'customer_id': customer_id, 'guest_info': "",'booking_id':booking_id, - 'table_id': table_id, - 'order_items': order_items,'sale_id': sale_id,'create_type': "create_pay" }; - }else{ - var params = {'order_source': type, 'order_type': "dine_in", - 'customer_id': customer_id, 'guest_info': "", - 'table_id': table_id, - 'order_items': order_items,'sale_id': sale_id,'create_type': "create_pay" }; + $("#sxModal .btn_cancel").on('click',function(){ + if($("#order-items-table tr").length > 1){ + $( "#create_pay_order" ).prop( "disabled", false ); } - - $.ajax({ - type: "POST", - url: ajax_url, - data: params, - dataType: "json", - success:function(result){ - if (result.status) { - if (result.data == null){ - swal({ - title: "Please Open Shift !", - text: result.status, - type: "warning", - confirmButtonColor: "#DD6B55", - confirmButtonText: "Ok", - closeOnConfirm: false - }, function () { - window.location.href = '/origami/'+type+'/pending_order/' + $('#sale_id').text(); - }); - - }else if(result.data == 'OK'){ - if (window.location.pathname.includes('foodcourt')) { - order_id = $('#order_id').val() - window.location.href = '/foodcourt/food_court/'+order_id+'/request_bill' - } - else { - window.location.href = '/origami/'+type+'/pending_order/' + $('#sale_id').text(); - } - }else{ - if(result.current_user_role == 'cashier'){ - window.location.href = "/foodcourt/sale/"+result.data["sale_id"]+"/"+type+"/payment"; - } - else{ - module_name = window.location.pathname.includes('origami') ? 'origami' : 'foodcourt' - window.location.href = "/"+module_name+"/sale/"+result.data["sale_id"]+"/"+type+"/payment"; - } - } - } - } - }); + $("#sxModal").hide(); }); //click item row for update qty @@ -1374,29 +1313,6 @@ $(function() { }); } - /* Get Item rows */ - function get_order_item_rows(){ - var order_items = []; - var item_row = $('.summary-items tbody tr'); - $(item_row).each(function(i){ - var order_item = {}; - - order_item.order_item_id = $(item_row[i]).attr('data-row'); - order_item.item_instance_code = $(item_row[i]).attr('data-instance-code'); - order_item.quantity = $(item_row[i]).children('#item_qty').text(); -//parent id - if ($(item_row[i]).attr('data-parent')=="true") { - parent_id = $(item_row[i]).attr('data-row'); - } - if ($(item_row[i]).attr('data-sub-item')=="true") { - order_item.parent_order_item_id = parent_id - } -//end parent id - order_item.options = $(item_row[i]).attr('data-options'); - order_items.push(order_item); - }); - return order_items; - } // Get Selected Class function get_selected_attributes(selected_class) { var item_row = $('.'+selected_class); @@ -1969,3 +1885,26 @@ $(function() { }); }); }); + /* Get Item rows */ +function get_order_item_rows(){ + var order_items = []; + var item_row = $('.summary-items tbody tr'); + $(item_row).each(function(i){ + var order_item = {}; + + order_item.order_item_id = $(item_row[i]).attr('data-row'); + order_item.item_instance_code = $(item_row[i]).attr('data-instance-code'); + order_item.quantity = $(item_row[i]).children('#item_qty').text(); +//parent id + if ($(item_row[i]).attr('data-parent')=="true") { + parent_id = $(item_row[i]).attr('data-row'); + } + if ($(item_row[i]).attr('data-sub-item')=="true") { + order_item.parent_order_item_id = parent_id + } +//end parent id + order_item.options = $(item_row[i]).attr('data-options'); + order_items.push(order_item); + }); + return order_items; +} diff --git a/app/assets/javascripts/foodcourt/addorder.js b/app/assets/javascripts/foodcourt/addorder.js new file mode 100644 index 00000000..c8bfa98d --- /dev/null +++ b/app/assets/javascripts/foodcourt/addorder.js @@ -0,0 +1,145 @@ +function getCardNo(){ + if(typeof code2lab != 'undefined'){ + code2lab.readNFC(); + } +} +function setCardNo(cardNo){ + if(cardNo.length == 16){ + $("#paypar_account_no").val(cardNo); + if ($("#sxModal").attr("data-for") == 'member') { + member_card(cardNo) + } else if ($("#sxModal").attr('data-for') == 'payment') { + pay_with_card(cardNo); + } + $("#sxModal").hide(); + } +} +function member_card(cardNo) { + var g_customer_id = ''; + var g_customer_name = ''; + var g_membership_id = ''; + var g_membership_type = ''; + var sale_id = 0 ; + if(cardNo != 0){ + $.ajax({ + type: "POST", + url: "/foodcourt/"+sale_id+"/get_customer" , + data: { filter : cardNo ,type :"card"}, + dataType: "json", + success: function(data) { + if (data[0].customer_id == false) { + swal("Alert!", data[0].message, "error"); + }else{ + g_customer_id = data[0].customer_id; + g_customer_name = data[0].name; + g_membership_id = data[0].membership_id; + g_membership_type = data[0].membership_type; + type = $("#link_type").val(); + modify_order = window.location.href.indexOf("modify_order"); + if(!$('.btn').hasClass('req_bill') && !$('.btn').is('#pay')){ + var booking_id = $('#booking_id').text(); + if (modify_order !=-1) { + var ajax_url = '../../../'+type+'/update_modify_order'; + var table_type = $('#table_type').text(); + var table_id = $('#table_id').text(); + var customer_id = $('#customer_id').text(); + var sale_id = $('#sale_id').text(); + }else{ + var ajax_url = 'addorders/create'; + var table_type = $('#table_id').find("option:selected").data('type'); + var table_id = $('#table_id').val(); + var customer_id = g_customer_id; + var sale_id = "" + } + + var order_items = JSON.stringify(get_order_item_rows()); + + var params = {'order_source': type, 'order_type': "dine_in", + 'customer_id': customer_id, 'guest_info': "", + 'table_id': table_id, + 'order_items': order_items,'sale_id': sale_id,'create_type': "create_pay" }; + if (booking_id.length > 0) { + params.booking_id = booking_id; + } + $.ajax({ + type: "POST", + url: ajax_url, + data: params, + dataType: "json", + success:function(result){ + if (result.data == 'OK'){ + request_bill(g_membership_id, g_customer_id, g_customer_name); + }else{ + if (result.data["sale_id"]){ + update_sale(g_membership_id, g_customer_id, g_customer_name,result.data["sale_id"]); + } + } + } + }); + }else if($('.btn').is('#pay')){ + update_sale(g_membership_id, g_customer_id, g_customer_name,$('#sale_id').text()); + } + else{ + request_bill(g_membership_id, g_customer_id, g_customer_name); + } + } + } + }); + } +} +function request_bill(membership_id,customer_id,customer_name){ + if (window.location.pathname.includes('foodcourt')) { + order_id = $('#order_id').val() || $('#save_order_id').val() + $.ajax({ + type: "GET", + url: "/foodcourt/food_court/"+order_id+"/request_bill" , + data: {}, + dataType: "json", + success: function(data) { + if(data.status == true) + { + update_sale(membership_id, customer_id, customer_name, data.sale_id); + }else{ + swal("Alert!", "Error!", "error"); + location.reload(); + } + } + }); + } +} +function update_sale(membership_id, customer_id, customer_name, sale_id) { + var customer=""; + var cashier_type = 'food_court'; + if(customer_name != ""){ + customer = '(' + customer_name + ')'; + } + + swal({ + title: "Confirmation !", + text: 'Are You Sure to assign this customer' + customer + '!', + showCancelButton: true, + confirmButtonColor: "green", + confirmButtonText: "Yes!", + cancelButtonClass: 'btn btn-danger customer_assign_cancel', + closeOnConfirm: false, + }, function () { + $.ajax({ + type: "POST", + url: "/foodcourt/"+sale_id+"/"+cashier_type+"/customers/update_sale" , + data: {customer_id:customer_id,sale_id:sale_id}, + dataType: "json", + success: function(data) { + if(data.status == true) + { + //change customer detail + $("#customer_name").html(customer_name); + $("#membership_id").html(membership_id); + window.location.href = '/foodcourt/sale/'+sale_id+'/'+cashier_type+'/payment/'; + }else{ + swal("Alert!", "Record not found!", "error"); + location.reload(); + } + } + }); + }); +} diff --git a/app/assets/stylesheets/addorder.scss b/app/assets/stylesheets/addorder.scss index c20f0558..f3bcdaff 100755 --- a/app/assets/stylesheets/addorder.scss +++ b/app/assets/stylesheets/addorder.scss @@ -26,6 +26,34 @@ section .content{ .custom-card-block { padding: 0.3rem !important; } +#sxModal { + display: none; + overflow: auto; + width: 100%; + height: 100%; + background-color: #000; + background-color: rgba(0,0,0,0.4); + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1100; +} + +#sxModal-Content { + position: relative; + left: 42%; + top: 30%; + background-color: #32ad1a; + color: #fff; + text-align: center; + width: 200px; + height: 200px; + padding-top: 5%; + border-radius: 100px; + z-index: 1101; +} @media (min-width: 34em) { .custom-card-columns { diff --git a/app/controllers/foodcourt/customers_controller.rb b/app/controllers/foodcourt/customers_controller.rb index 930d2a83..f28f5397 100644 --- a/app/controllers/foodcourt/customers_controller.rb +++ b/app/controllers/foodcourt/customers_controller.rb @@ -33,7 +33,7 @@ class Foodcourt::CustomersController < BaseFoodcourtController @crm_customers.membership_id = response["customer_data"]["id"] @crm_customers.membership_type = response["customer_data"]["member_group_id"] @crm_customers.customer_type = "Dinein" - @crm_customers.tax_profiles = ["1", "2"] + @crm_customers.tax_profiles = TaxProfile.where(group_type: 'food_court').pluck(:id) @crm_customers.save @crm_customers = Customer.search(filter) else diff --git a/app/controllers/foodcourt/discounts_controller.rb b/app/controllers/foodcourt/discounts_controller.rb index 7c925a1d..d0fd55bb 100755 --- a/app/controllers/foodcourt/discounts_controller.rb +++ b/app/controllers/foodcourt/discounts_controller.rb @@ -240,7 +240,7 @@ class Foodcourt::DiscountsController < BaseFoodcourtController # if is_card != "true" account_types = Account.where("discount=?",true) table_id = sale.bookings[0].dining_facility_id - table_type = DiningFacility.find(table_id).type + # table_type = DiningFacility.find(table_id).type # Get Prices for each accounts (eg: food, beverage) account_price = SaleItem.calculate_price_by_accounts(sale.sale_items) @@ -279,7 +279,7 @@ class Foodcourt::DiscountsController < BaseFoodcourtController auth_token:auth_token}.to_json, :headers => { 'Content-Type' => 'application/json', - 'Accept' => 'application/json; version=3' + 'Accept' => 'application/json; version=4' }, :timeout => 10) rescue HTTParty::Error response = {"status": false, "message": "Http party error" } @@ -304,11 +304,11 @@ class Foodcourt::DiscountsController < BaseFoodcourtController discount_amount = discount_amount + response["discount_bonus_earned"] end sale.compute_by_sale_items(discount_amount, 'member_discount', order_source, tax_type) - result = {:status=> "Success",:title=>"Member Discount", :table_id => table_id,:table_type => table_type } + result = {:status=> "Success",:title=>"Member Discount", :table_id => table_id } elsif response["status"] == "500" - result = {:status=> response["error"],:title=>"Alert", :table_id => table_id,:table_type => table_type } + result = {:status=> response["error"],:title=>"Alert", :table_id => table_id } else - result = {:status=> response["message"],:title=>"Alert", :table_id => table_id,:table_type => table_type } + result = {:status=> response["message"],:title=>"Alert", :table_id => table_id } end render :json => result.to_json diff --git a/app/controllers/foodcourt/orders_controller.rb b/app/controllers/foodcourt/orders_controller.rb index 14649a69..882de5c3 100755 --- a/app/controllers/foodcourt/orders_controller.rb +++ b/app/controllers/foodcourt/orders_controller.rb @@ -184,7 +184,7 @@ class Foodcourt::OrdersController < BaseFoodcourtController end end - def request_bill + def request_bill sale_data =[] if !ShiftSale.current_shift.nil? order_id = params[:order_id] # order_id @@ -265,7 +265,7 @@ class Foodcourt::OrdersController < BaseFoodcourtController @error_message = "No Current Open Shift for This Employee" end if ["quick_service", "food_court"].include? order.source - redirect_to "/foodcourt/sale/#{sale_data.sale_id}/food_court/payment#" + render :json => { :status => true, :sale_id => sale_data.sale_id } end # end diff --git a/app/views/foodcourt/addorders/detail.html.erb b/app/views/foodcourt/addorders/detail.html.erb index b431f117..1a07c3b4 100644 --- a/app/views/foodcourt/addorders/detail.html.erb +++ b/app/views/foodcourt/addorders/detail.html.erb @@ -1,5 +1,6 @@ <%= stylesheet_link_tag 'addorder', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'addorder', 'data-turbolinks-track': 'reload' %> +<%= javascript_include_tag 'foodcourt/addorder', 'data-turbolinks-track': 'reload' %> <% type = request.path_info.include?('quick_service') || request.path_info.include?('food_court')%> <% modify_order = request.path_info.include?('modify_order')%>