updated commission for sale edit

This commit is contained in:
Yan
2017-09-04 13:13:08 +06:30
9 changed files with 359 additions and 267 deletions

View File

@@ -5,14 +5,67 @@ class ProductCommission < ApplicationRecord
belongs_to :sale_item, foreign_key: 'sale_item_id'
belongs_to :sale, foreign_key: 'sale_id'
def self.create_product_commission(newSaleItem, oldSaleItem)
old_product_commission = ProductCommission.find_by_sale_item_id(oldSaleItem.id)
return if old_product_commission.nil?
menu_item = MenuItem.find_by_item_code(newSaleItem.product_code)
return if menu_item.nil?
product_commission = ProductCommission.new
commission = Commission.where('product_code = ? AND is_active = ?', menu_item.id, true).take
product_commission.product_code = menu_item.id
product_commission.product_type = 'menu_item' # use for dummy data ToDo::need to change product type
unless commission.nil?
product_commission.commission_id = commission.id
if commission.commission_type == 'Percentage'
product_commission.price = newSaleItem.unit_price * (commission.amount / 100.0)
product_commission.amount = product_commission.price * newSaleItem.qty
elsif commission.commission_type == 'Net Amount'
product_commission.price = commission.amount
product_commission.amount = product_commission.price * newSaleItem.qty
end
end
unless old_product_commission.nil?
product_commission.commissioner_id = old_product_commission.commissioner_id
end
product_commission.qty = newSaleItem.qty
product_commission.sale_id = newSaleItem.sale_id
product_commission.sale_item_id = newSaleItem.sale_item_id
product_commission.save
end
def self.edit_product_commission(saleItemObj)
menu_item = MenuItem.find_by_item_code(saleItemObj.product_code)
commission = Commission.where('product_code = ? AND is_active = ?', menu_item.id, true).take
product_commission = ProductCommission.where('sale_item_id = ?', saleItemObj.id).take
return if commission.nil?
product_commission.qty = saleItemObj.qty
if commission.commission_type == 'Percentage'
product_commission.price = saleItemObj.unit_price * (commission.amount / 100.0)
product_commission.amount = product_commission.price * saleItemObj.qty
elsif commission.commission_type == 'Net Amount'
product_commission.price = commission.amount
product_commission.amount = product_commission.price * saleItemObj.qty
end
product_commission.save
puts 'Edit Product Commission Success'
end
def self.remove_product_commission(sale_item_id)
transaction = ProductCommission.find_by_sale_item_id(sale_item_id)
return if transaction.nil?
transaction.destroy
puts 'Remove Product Commission Success'
end
def self.get_transaction(from, to, commissioner)
transaction = self.all
transaction = all
if !from.nil? && !to.nil?
transaction = transaction.where('updated_at between ? and ?', from, to)
end
if commissioner != 0
transaction = transaction.where(commissioner_id: commissioner)
end
return transaction
transaction
end
end

View File

@@ -28,8 +28,13 @@ class Promotion < ApplicationRecord
end
def self.combine_item(saleObj)
order_id = saleObj.sale_orders[0].order_id
itemList = OrderItem.where("order_id = ?", order_id).group(:item_instance_code).sum(:qty)
# order_id = saleObj.sale_orders[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)
end
return itemList
end
def self.is_promo_day(promoList, day, orderitemList, sale_id)
@@ -46,13 +51,15 @@ class Promotion < ApplicationRecord
def self.find_promo_item(promo, orderitem, sale_id)
# item_code = OrderItem.find_by_item_instance_code(orderitem[0]).item_code
if promo.original_product.to_s == orderitem[0]
if promo.min_qty.to_i > orderitem[1].to_i
return false
else
check_promo_type(promo,orderitem, sale_id)
end
end
orderitem.each do |odr_item|
if promo.original_product.to_s == odr_item[0]
if promo.min_qty.to_i > odr_item[1].to_i
return false
else
check_promo_type(promo,odr_item, sale_id)
end
end
end
end
def self.check_promo_type(promo, orderitem, sale_id)
@@ -126,7 +133,6 @@ class Promotion < ApplicationRecord
# AA - 10 # 3 # BB # orderList, #S34345
def self.give_promotion_second_product(orderitem_count, foc_min_qty, promo_product, orderitem, sale_id)
puts "..... orderitem_count: " + orderitem_count.to_s + " / foc_min_qty: " + foc_min_qty.to_s + " /promo_product: " + promo_product + " orderitem: " + orderitem.to_s
byebug
promotion_qty = orderitem_count.to_i / foc_min_qty.to_i # get foc item qty
foc_qty = find_second_item_qty(sale_id, promo_product)
if (foc_qty < promotion_qty)
@@ -212,9 +218,11 @@ class Promotion < ApplicationRecord
saleObj = Sale.find_by_sale_id(sale_id)
itemList = combine_item(saleObj)
itemList.each do |item|
if item[0] == promo_item
return item[1]
end
item.each do |i|
if i[0] == promo_item
return i[1]
end
end
end
return 0
end