Merge branch 'august_spring' of bitbucket.org:code2lab/sxrestaurant
This commit is contained in:
@@ -1,2 +1,116 @@
|
||||
class Shop < ApplicationRecord
|
||||
|
||||
def promo_activate
|
||||
current_day = Time.now.strftime("%Y-%d-%m")
|
||||
current_time = Time.now.strftime('%H:%M')
|
||||
day = Date.today.wday
|
||||
promoList = is_between_promo_datetime(current_day,current_time)
|
||||
if promoList.size > 0
|
||||
itemList = combine_item(saleObj)
|
||||
is_promo_day(promoList,day, itemList)
|
||||
end
|
||||
end
|
||||
|
||||
def is_between_promo_datetime(current_day,current_time)
|
||||
promoList = Promotion.where('( promo_start_date < ? AND promo_end_date > ?) AND (promo_start_time < ? AND promo_end_time > ?)', current_day, current_day, current_time, current_time)
|
||||
return promoList
|
||||
end
|
||||
|
||||
def combine_item(saleObj)
|
||||
itemList = saleObj.sale_items.group(:product_code).sum(:qty)
|
||||
end
|
||||
|
||||
def is_promo_day(promoList, day, orderitemList)
|
||||
promoList.each do |promo|
|
||||
dayresult = promo.promo_day.include?(day)
|
||||
if dayresult
|
||||
orderitemList.each do |item|
|
||||
find_promo_item(promo, item)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def find_promo_item(promo, orderitem)
|
||||
if promo.prouduct_item == orderitem
|
||||
if promo.minmum_qty < orderitem.qty
|
||||
return false
|
||||
else
|
||||
same, promo_item_code = check_giveaway_product(promo, orderitem)
|
||||
if same
|
||||
give_promotion_same_product
|
||||
else
|
||||
find_promo_item_in_orderlist
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def check_giveaway_product(promo, orderitem)
|
||||
promo.promotion_products.each do |promo_product|
|
||||
if promo_product.item_code == orderitem.item_code
|
||||
return true, promo_product.item_code
|
||||
else
|
||||
return false, promo_product.item_code
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.give_promotion_same_product(qty, promoqty, foc_min_qty)
|
||||
multiple = qty / promoqty # loop count
|
||||
charge_qty = 0
|
||||
foc_qty = 0
|
||||
if multiple > 0
|
||||
multiple.times.each do |key|
|
||||
if qty >= promoqty
|
||||
charge_qty += promoqty
|
||||
different = qty - promoqty
|
||||
qty = different
|
||||
if different == 0
|
||||
Shop.add_promotion_item
|
||||
foc_qty += foc_min_qty
|
||||
else
|
||||
foc_qty += foc_min_qty
|
||||
qty = qty - foc_min_qty
|
||||
end
|
||||
else
|
||||
if multiple == foc_qty
|
||||
charge_qty += qty
|
||||
else
|
||||
charge_qty += qty
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
charge_qty = qty
|
||||
end
|
||||
puts "Charged - " + charge_qty.to_s
|
||||
puts "FOC - " + foc_qty.to_s
|
||||
end
|
||||
|
||||
def find_promo_item_in_orderlist(promo_item_code, orderitemList)
|
||||
orderitemList.each do |item|
|
||||
if item.item_code == promo_item_code
|
||||
give_promotion_second_product(item)
|
||||
else
|
||||
add_promotion_second_item
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def give_promotion_second_product(item, foc_min_qty)
|
||||
if item.qty > foc_min_qty
|
||||
|
||||
else
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def self.add_promotion_item
|
||||
|
||||
end
|
||||
|
||||
def self.add_promotion_second_item
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user