From dfec757e5f2901087bda229bdc3efa762a6bcbf2 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Thu, 31 May 2018 15:44:52 +0630 Subject: [PATCH] update promotion and takeaway for quickservice --- .../origami/addorders_controller.rb | 10 ++-- app/models/promotion.rb | 46 +++++++++++-------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/app/controllers/origami/addorders_controller.rb b/app/controllers/origami/addorders_controller.rb index 3fc11693..a5651fba 100755 --- a/app/controllers/origami/addorders_controller.rb +++ b/app/controllers/origami/addorders_controller.rb @@ -67,8 +67,6 @@ class Origami::AddordersController < BaseOrigamiController end def get_menu() - puts "sssssssssssssss" -puts params[:id] if (params[:id]) #Pull this menu @menu = Menu.find_by_id(params[:id]) @@ -122,11 +120,11 @@ puts params[:id] items_arr.push(items) } # begin - # if params[:order_source] == "quick_service" - # customer_id = "CUS-000000000002" # for no customer id from mobile - # else + if params[:order_source] == "quick_service" && params[:table_id].to_i == 0 + customer_id = "CUS-000000000002" # for no customer id from mobile + else customer_id = params[:customer_id] == ""? "CUS-000000000001" : params[:customer_id] # for no customer id from mobile - # end + end @order = Order.new @order.source = params[:order_source] @order.order_type = params[:order_type] diff --git a/app/models/promotion.rb b/app/models/promotion.rb index a1b982d6..260dc8a1 100755 --- a/app/models/promotion.rb +++ b/app/models/promotion.rb @@ -29,12 +29,13 @@ class Promotion < ApplicationRecord end def self.combine_item(saleObj) - # order_id = saleObj.sale_orders[0].order_id + # order_id = saleObj.sale_orders[0][0].order_id # itemList = OrderItem.where("order_id = ?", order_id).group(:item_instance_code).sum(:qty) itemList = [] saleObj.sale_orders.each do |so| - itemList << OrderItem.where("order_id = ?",so.order_id).group(:item_instance_code).sum(:qty) + itemList << OrderItem.where("order_id = ?",so.order_id).group(["item_instance_code", "order_id"]).sum(:qty) end + return itemList end @@ -51,10 +52,9 @@ class Promotion < ApplicationRecord end def self.find_promo_item(promo, orderitem, sale_id) - # item_code = OrderItem.find_by_item_instance_code(orderitem[0]).item_code + # item_code = OrderItem.find_by_item_instance_code(orderitem[0][0]).item_code orderitem.each do |odr_item| - - if promo.original_product.downcase.to_s == odr_item[0] + if promo.original_product.downcase.to_s == odr_item[0][0] if promo.min_qty.to_i > odr_item[1].to_i return false else @@ -66,13 +66,13 @@ class Promotion < ApplicationRecord def self.check_promo_type(promo, orderitem, sale_id) promo.promotion_products.each do |promo_product| - if promo_product.item_code.downcase == orderitem[0] + if promo_product.item_code.downcase == orderitem[0][0] same = true else # return false, promo_product same = false end - # same, promo_product = check_giveaway_product(promo, orderitem[0]) + # same, promo_product = check_giveaway_product(promo, orderitem[0][0]) if promo.promo_type == Promotion::PROMO_TYPE1 if same give_promotion_same_product(orderitem[1], promo.min_qty, promo_product.min_qty, orderitem, sale_id,promo_product.item_code) @@ -132,11 +132,12 @@ class Promotion < ApplicationRecord else charge_qty += qty end - item = OrderItem.find_by_item_instance_code(orderitem[0]) - if promo_product.downcase == OrderItem.find_by_item_instance_code(orderitem[0]).item_instance_code - item = OrderItem.find_by_item_instance_code(orderitem[0]) - else - item = OrderItem.find_by_item_code(promo_product) + item = OrderItem.where("item_instance_code = '#{orderitem[0][0]}' and order_id = '#{orderitem[0][1]}'").first + if promo_product.downcase != item.item_instance_code + # item = item + # else + # item = OrderItem.find_by_item_code(promo_product) + item = OrderItem.where("item_code = '#{promo_product}' and order_id = '#{orderitem[0][1]}'").first end source = Order.find(item.order_id).source update_existing_item(foc_qty, item, sale_id, "promotion", item.price,source) @@ -185,13 +186,16 @@ class Promotion < ApplicationRecord puts " same: " + same.to_s + " promo_product: " + promo_product.item_code.to_s + " foc_min_qty: " + foc_min_qty.to_s + " orderitem: " + orderitem.to_s if same foc_qty = orderitem[1].to_i / foc_min_qty - item = OrderItem.find_by_item_instance_code(orderitem[0]) + # item = OrderItem.find_by_item_instance_code(orderitem[0][0]) + item = OrderItem.where("item_instance_code = '#{orderitem[0][0]}' and order_id = '#{orderitem[0][1]}'").first source = Order.find(item.order_id).source update_existing_item(foc_qty, item, sale_id, "promotion nett off", promo_product.net_off,source) else foc_qty = orderitem[1].to_i / foc_min_qty # foc_qty = find_second_item_qty(sale_id, promo_product.item_code) - item = OrderItem.find_by_item_instance_code(promo_product.item_code) + # item = OrderItem.find_by_item_instance_code(promo_product.item_code) + item = OrderItem.where("item_instance_code = '#{orderitem[0][0]}' and order_id = '#{orderitem[0][1]}'").first + source = Order.find(item.order_id).source update_existing_item(foc_qty, item, sale_id, "promotion nett off", promo_product.net_off,source) end @@ -201,14 +205,16 @@ class Promotion < ApplicationRecord puts " same: " + same.to_s + " promo_product: " + promo_product.item_code.to_s + " foc_min_qty: " + foc_min_qty.to_s + " orderitem: " + orderitem.to_s if same foc_qty = orderitem[1].to_i / foc_min_qty - item = OrderItem.find_by_item_instance_code(orderitem[0]) # need to specify with menu item instance + # item = OrderItem.find_by_item_instance_code(orderitem[0][0]) # need to specify with menu item instance + item = OrderItem.where("item_instance_code = '#{orderitem[0][0]}' and order_id = '#{orderitem[0][1]}'").first price = item.price.to_i - promo_product.net_price.to_i source = Order.find(item.order_id).source update_existing_item(foc_qty, item, sale_id, "promotion nett price", price,source) else # foc_qty = find_second_item_qty(sale_id, promo_product.item_code)# need to check for qty foc_qty = orderitem[1].to_i / foc_min_qty - item = OrderItem.find_by_item_instance_code(promo_product.item_code) + # item = OrderItem.find_by_item_instance_code(promo_product.item_code) + item = OrderItem.where("item_instance_code = '#{orderitem[0][0]}' and order_id = '#{orderitem[0][1]}'").first price = item.price - promo_product.net_price source = Order.find(item.order_id).source update_existing_item(foc_qty, item, sale_id, "promotion nett price", price,source) @@ -219,7 +225,8 @@ class Promotion < ApplicationRecord puts " same: " + same.to_s + " promo_product: " + promo_product.item_code.to_s + " foc_min_qty: " + foc_min_qty.to_s + " orderitem: " + orderitem.to_s if same foc_qty = orderitem[1].to_i / foc_min_qty - item = OrderItem.find_by_item_instance_code(orderitem[0]) + # item = OrderItem.find_by_item_instance_code(orderitem[0][0]) + item = OrderItem.where("item_instance_code = '#{orderitem[0][0]}' and order_id = '#{orderitem[0][1]}'").first # total = orderitem[1].to_i * item.price total = item.price price = calculate_discount(total, promo_product.percentage) @@ -231,7 +238,8 @@ class Promotion < ApplicationRecord # give total qty is 1 #foc_qty = (foc_qty - foc_qty) + 1 - item = OrderItem.find_by_item_instance_code(promo_product.item_code) + # item = OrderItem.find_by_item_instance_code(promo_product.item_code) + item = OrderItem.where("item_instance_code = '#{orderitem[0][0]}' and order_id = '#{orderitem[0][1]}'").first # total = item.price * foc_qty total = item.price price = calculate_discount(total, promo_product.percentage) @@ -245,7 +253,7 @@ class Promotion < ApplicationRecord itemList = combine_item(saleObj) itemList.each do |item| item.each do |i| - if i[0] == promo_item.downcase + if i[0][0] == promo_item.downcase return i[1] end end