fixed inventroy
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
class InventoryDefinition < ApplicationRecord
|
class InventoryDefinition < ApplicationRecord
|
||||||
|
|
||||||
|
has_many :stock_journals
|
||||||
|
has_one :menu_item_instance, foreign_key: "item_instance_code", primary_key: "item_code"
|
||||||
|
|
||||||
scope :active, -> {where(:is_active => true)}
|
scope :active, -> {where(:is_active => true)}
|
||||||
|
|
||||||
def self.calculate_product_count(saleObj=nil,saleobj_after_req_bill=nil)
|
def self.calculate_product_count(saleObj=nil,saleobj_after_req_bill=nil)
|
||||||
@@ -69,7 +72,7 @@ class InventoryDefinition < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.search_by_category(cat_id)
|
def self.search_by_category(cat_id)
|
||||||
@inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
|
inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
|
||||||
mi.name as item_name,mii.item_instance_name as instance_name," +
|
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," +
|
"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 ")
|
"mc.name as menu_category_name,mc.id as menu_category_id ")
|
||||||
@@ -82,29 +85,29 @@ class InventoryDefinition < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.get_by_category(filter)
|
def self.get_by_category(filter)
|
||||||
least_stock = StockJournal.select(:balance)
|
least_stock = StockJournal.select(:inventory_definition_id, :credit, :debit, :balance)
|
||||||
.where('stock_journals.updated_at = (SELECT MAX(stock_journals.updated_at) FROM stock_journals WHERE (stock_journals.item_code = inventory_definitions.item_code))')
|
.joins("JOIN (
|
||||||
.order(:id => :desc).to_sql
|
#{StockJournal.select("item_code, MAX(created_at) created_at").group(:item_code).to_sql}) last_stock_journals
|
||||||
|
ON last_stock_journals.item_code = stock_journals.item_code
|
||||||
|
AND last_stock_journals.created_at = stock_journals.created_at").to_sql
|
||||||
|
|
||||||
@inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
|
inventory_definitions = InventoryDefinition
|
||||||
(CASE WHEN sj.credit IS NULL THEN 0 ELSE sj.credit END) as credit,
|
.select("inventory_definitions.*,
|
||||||
(CASE WHEN sj.debit IS NULL THEN 0 ELSE sj.debit END) as debit,
|
stock_journals.credit as credit,
|
||||||
(#{least_stock}) as balance,"+
|
stock_journals.debit as debit,
|
||||||
"acc.title as account_name,mi.name as item_name,
|
stock_journals.balance as balance,
|
||||||
mii.item_instance_name as instance_name," +
|
accounts.title as account_name,
|
||||||
"mc.name as menu_category_name,mc.id as menu_category_id "
|
menu_items.name as item_name,
|
||||||
)
|
menu_item_instances.item_instance_name as instance_name,
|
||||||
.joins(" LEFT JOIN stock_journals sj ON sj.inventory_definition_id=inventory_definitions.id")
|
menu_categories.name as menu_category_name,
|
||||||
.joins("JOIN menu_item_instances mii ON mii.item_instance_code = inventory_definitions.item_code" +
|
menu_categories.id as menu_category_id")
|
||||||
" JOIN menu_items mi ON mi.id = mii.menu_item_id" +
|
.joins("LEFT JOIN (#{least_stock}) stock_journals on stock_journals.inventory_definition_id = inventory_definitions.id")
|
||||||
" JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
|
.joins(menu_item_instance: { menu_item: [:menu_category, :account]})
|
||||||
.joins(" JOIN accounts acc ON acc.id = mi.account_id")
|
.where("inventory_definitions.item_code LIKE :filter OR inventory_definitions.min_order_level LIKE :filter
|
||||||
.where("inventory_definitions.item_code LIKE ? OR inventory_definitions.min_order_level LIKE ?
|
OR inventory_definitions.max_stock_level LIKE :filter OR stock_journals.balance LIKE :filter OR menu_items.name LIKE :filter
|
||||||
OR inventory_definitions.max_stock_level LIKE ? OR sj.balance LIKE ? OR mi.name LIKE ?
|
OR menu_item_instances.item_instance_name LIKE :filter OR menu_categories.name LIKE :filter", filter: "%#{filter}%")
|
||||||
OR mii.item_instance_name LIKE ? OR mc.name LIKE ?","%#{filter}%","%#{filter}%","%#{filter}%",
|
.group("menu_items.menu_category_id, inventory_definitions.item_code")
|
||||||
"%#{filter}%","%#{filter}%","%#{filter}%","%#{filter}%")
|
.order("balance asc, menu_items.name asc, accounts.title desc, menu_items.menu_category_id desc")
|
||||||
.group("mi.menu_category_id,inventory_definitions.item_code")
|
|
||||||
.order("balance asc, mi.name asc,acc.title desc,mi.menu_category_id desc")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user