72 lines
3.1 KiB
Ruby
72 lines
3.1 KiB
Ruby
class ProductCommission < ApplicationRecord
|
|
belongs_to :commission, foreign_key: 'commission_id'
|
|
belongs_to :commissioner, foreign_key: 'commissioner_id'
|
|
belongs_to :menu_item, foreign_key: 'product_id'
|
|
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 = 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
|
|
transaction
|
|
end
|
|
end
|