Files
sx-fc/app/models/order_reservation.rb
2018-04-12 11:05:10 +06:30

101 lines
3.7 KiB
Ruby

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
def self.create_doemal_order(order)
is_extra_time = false
extra_time = ''
items_arr = []
count = 1
order.order_reservation_items.each { |i|
i.item_instance_code = i.item_instance_code.downcase.to_s
items = {"order_item_id": count,"item_instance_code": i.item_instance_code,"quantity": i.qty,"options": []}
count += 1
items_arr.push(items)
}
puts items_arr.to_json
puts "sssssssssssssssssssssss"
customer_id = order.customer_id
@order = Order.new
@order.source = "doemal_order"
@order.order_type = "delivery"
@order.customer_id = customer_id
@order.items = items_arr
@order.guest = ''
@order.table_id = nil # this is dining facilities's id
@order.new_booking = true
@order.waiters = current_login_employee.name
@order.employee_name = current_login_employee.name
@order.is_extra_time = is_extra_time
@order.extra_time = extra_time
@status, @booking = @order.generate
# Order.send_customer_view(@booking)
if @status && @booking
@status, @sale = Sale.request_bill(@order,current_user,current_login_employee)
# for second display
result = {:status=> @status, :data => @sale }
render :json => result.to_json
end
end
private
def generate_custom_id
self.order_reservation_id = SeedGenerator.generate_id(self.class.name, "ODRS")
end
end