Files
sx-fc/app/models/inventory_definition.rb
2018-09-26 16:38:49 +06:30

82 lines
2.9 KiB
Ruby
Executable File

class InventoryDefinition < ApplicationRecord
scope :active, -> {where(:is_active => true)}
def self.calculate_product_count(saleObj=nil,saleobj_after_req_bill=nil)
if !saleObj.nil?
saleObj.sale_items.each do |item|
found, inventory_definition = find_product_in_inventory(item)
if found
check_balance(item,inventory_definition)
end
end
else
saleobj_after_req_bill.each do |item|
found, inventory_definition = find_product_in_inventory(item)
if found
check_balance(item,inventory_definition)
end
end
end
end
def self.find_product_in_inventory(item)
product = InventoryDefinition.find_by_item_code(item.item_instance_code)
if product.nil?
return false, nil
else
stock_check_item = StockCheckItem.find_by_item_code(item.item_instance_code)
if stock_check_item.nil?
return false, nil
else
return true, product
end
end
end
def self.check_balance(item,inventory_definition) # item => saleItemOBj
stock = StockJournal.where('item_code=?', item.item_instance_code).order('created_at desc').take
unless stock.nil?
modify_balance(item, stock, inventory_definition)
else
StockJournal.add_to_journal(item, 0, "out of stock", inventory_definition)
end
end
def self.modify_balance(item, stock, inventory_definition) #saleitemObj
if stock.balance.to_i >= item.qty
puts ">> stock is greater than order qty"
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
else
puts " << stock is less than order qty"
data = item
extra_qty = item.qty.to_i - stock.balance.to_i
if stock.balance.to_i > 0
item.qty = stock.balance.to_i
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
data.qty = extra_qty
StockJournal.add_to_journal(data, 0, "out of stock", inventory_definition)
else
StockJournal.add_to_journal(item_data, stock.balance, "out of stock", inventory_definition)
end
end
end
def self.search_by_category(cat_id)
@inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
mi.name as item_name,mii.item_instance_name as instance_name," +
"mi.item_code as item_code,mii.item_instance_code as instance_code," +
"mc.name as menu_category_name,mc.id as menu_category_id ")
.joins("JOIN menu_item_instances mii ON mii.item_instance_code = inventory_definitions.item_code" +
" JOIN menu_items mi ON mi.id = mii.menu_item_id" +
" JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
.where("mc.id=#{cat_id}")
.group("mi.menu_category_id,inventory_definitions.item_code")
.order("mi.menu_category_id desc")
end
end