diff --git a/app/assets/javascripts/order_reservation.js b/app/assets/javascripts/order_reservation.js index f0d4aa4d..4dd86dfd 100644 --- a/app/assets/javascripts/order_reservation.js +++ b/app/assets/javascripts/order_reservation.js @@ -446,7 +446,7 @@ function callback_url(callback,ref_no,order_id,status,min_type,time,exptime,reas $.ajax({ type: "POST", url: url, - data: {order_id: order_id, status: status, min_type: min_type, expected_time: waiting_time, remark: reason, access_code: access_code}, + data: {order_id: order_id, ref_no: ref_no, status: status, min_type: min_type, expected_time: waiting_time, remark: reason, access_code: access_code}, dataType: "json", success: function(data) { if (data.status) { diff --git a/app/controllers/origami/order_reservation_controller.rb b/app/controllers/origami/order_reservation_controller.rb index 27625a84..10f7f679 100644 --- a/app/controllers/origami/order_reservation_controller.rb +++ b/app/controllers/origami/order_reservation_controller.rb @@ -20,25 +20,34 @@ class Origami::OrderReservationController < BaseOrigamiController access_code = params[:access_code] @order_reservation = OrderReservation.find(@id) - if @status == "processed" - result = OrderReservation.create_doemal_order(@order_reservation,current_user) - elsif @status == "delivery" - OrderReservation.update_order_reservation(@id, nil, "ready_to_delivery") - response = OrderReservation.send_status_to_ordering(@order_reservation.callback_url,@order_reservation.transaction_ref,"ready_to_delivery") - result = {:status=> true, :message => "ready for delivery" } - elsif @status == "completed" - result = OrderReservation.update_doemal_payment(@order_reservation,current_user) + order_reserve = OrderReservation.find_by_transaction_ref(params[:ref_no]) + if !order_reserve.nil? + if !ShiftSale.current_shift.nil? + if @status == "processed" + result = OrderReservation.create_doemal_order(@order_reservation,current_user) + elsif @status == "delivery" + OrderReservation.update_order_reservation(@id, nil, "ready_to_delivery") + response = OrderReservation.send_status_to_ordering(@order_reservation.callback_url,@order_reservation.transaction_ref,"ready_to_delivery") + result = {:status=> true, :message => "ready for delivery" } + elsif @status == "completed" + result = OrderReservation.update_doemal_payment(@order_reservation,current_user) + else + if @status == "rejected" + OrderReservation.update_order_reservation(@id, nil, "rejected",nil,remark,access_code,current_user) + response = OrderReservation.send_status_to_ordering(@order_reservation.callback_url,@order_reservation.transaction_ref,"rejected") + result = {:status=> true, :message => "rejected" } + else + OrderReservation.update_order_reservation(@id, nil, "accepted", expected_waiting_time) + response = OrderReservation.send_status_to_ordering(@order_reservation.callback_url,@order_reservation.transaction_ref,"accepted") + result = {:status=> true, :message => "accepted" } + end + end + else + result = { status: false, message: 'No current shift open for this employee!'} + end else - if @status == "rejected" - OrderReservation.update_order_reservation(@id, nil, "rejected",nil,remark,access_code,current_user) - response = OrderReservation.send_status_to_ordering(@order_reservation.callback_url,@order_reservation.transaction_ref,"rejected") - result = {:status=> true, :message => "rejected" } - else - OrderReservation.update_order_reservation(@id, nil, "accepted", expected_waiting_time) - response = OrderReservation.send_status_to_ordering(@order_reservation.callback_url,@order_reservation.transaction_ref,"accepted") - result = {:status=> true, :message => "accepted" } - end - end + result = { status: false, message: 'There is no order for '+params[:ref_no]+'!'} + end render :json => result.to_json end diff --git a/app/models/sale.rb b/app/models/sale.rb index 603d5156..7240e74e 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -164,37 +164,37 @@ class Sale < ApplicationRecord #fOR Quick Service pay and create def self.request_bill(order,current_user,current_login_employee) @sale = Sale.new - sale_order=SaleOrder.new + sale_order=SaleOrder.new - if !ShiftSale.current_shift.nil? - order_id = order.order_id # order_id - bk_order = BookingOrder.find_by_order_id(order_id) - check_booking = Booking.find_by_booking_id(bk_order.booking_id) - - if check_booking.sale_id.nil? - # Create Sale if it doesn't exist - # puts "current_login_employee" - # puts current_login_employee.name - @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) - else - @sale_data = Sale.find_by_sale_id(check_booking.sale_id) - @sale_items = SaleItem.where("sale_id=?",@sale_data.sale_id) - end + if !ShiftSale.current_shift.nil? + order_id = order.order_id # order_id + bk_order = BookingOrder.find_by_order_id(order_id) + check_booking = Booking.find_by_booking_id(bk_order.booking_id) + + if check_booking.sale_id.nil? + # Create Sale if it doesn't exist + # puts "current_login_employee" + # puts current_login_employee.name + @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) + 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 + # Bind shift sale id to sale + # @sale_data.shift_sale_id = shift.id + # @sale_data.save - # Promotion Activation - Promotion.promo_activate(@sale) - @status = true - return @status, @sale - else - @status = false - @message = "No Current Open Shift for This Employee" - end + # Promotion Activation + Promotion.promo_activate(@sale) + @status = true + return @status, @sale + else + @status = false + @message = "No Current Open Shift for This Employee" + end end #This is when spilt bill is request - then we cannot link order to invoice #Cos there will be multiple orders - and items are spilt from there.