fixed inventory
This commit is contained in:
@@ -46,6 +46,5 @@ class Reports::StockCheckController < BaseReportController
|
|||||||
format.json { render json: out }
|
format.json { render json: out }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class InventoryDefinition < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.check_balance(item,inventory_definition) # item => saleItemOBj
|
def self.check_balance(item,inventory_definition) # item => saleItemOBj
|
||||||
stock = StockJournal.where('item_code=?', item.item_instance_code).order("id DESC").first
|
stock = StockJournal.where('item_code=?', item.item_instance_code).order("id DESC").first
|
||||||
unless stock.nil?
|
unless stock.nil?
|
||||||
modify_balance(item, stock, inventory_definition)
|
modify_balance(item, stock, inventory_definition)
|
||||||
else
|
else
|
||||||
@@ -44,9 +44,12 @@ class InventoryDefinition < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.modify_balance(item, stock, inventory_definition) #saleitemObj
|
def self.modify_balance(item, stock, inventory_definition) #saleitemObj
|
||||||
|
check_item = StockCheckItem.where('item_code=?', item.item_instance_code).order("id DESC").first
|
||||||
if stock.balance.to_i >= item.qty
|
if stock.balance.to_i >= item.qty
|
||||||
puts ">> stock is greater than order qty"
|
puts ">> stock is greater than order qty"
|
||||||
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
||||||
|
check_item.different = check_item.different - item.qty
|
||||||
|
check_item.save
|
||||||
else
|
else
|
||||||
puts " << stock is less than order qty"
|
puts " << stock is less than order qty"
|
||||||
data = item
|
data = item
|
||||||
@@ -56,8 +59,12 @@ class InventoryDefinition < ApplicationRecord
|
|||||||
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
||||||
data.qty = extra_qty
|
data.qty = extra_qty
|
||||||
StockJournal.add_to_journal(data, 0, "out of stock", inventory_definition)
|
StockJournal.add_to_journal(data, 0, "out of stock", inventory_definition)
|
||||||
|
check_item.different = check_item.different - item.qty
|
||||||
|
check_item.save
|
||||||
else
|
else
|
||||||
StockJournal.add_to_journal(item, stock.balance, "out of stock", inventory_definition)
|
StockJournal.add_to_journal(item, stock.balance, "out of stock", inventory_definition)
|
||||||
|
check_item.different = check_item.different - item.qty
|
||||||
|
check_item.save
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -72,17 +79,24 @@ class InventoryDefinition < ApplicationRecord
|
|||||||
" JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
|
" JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
|
||||||
.where("mc.id=#{cat_id}")
|
.where("mc.id=#{cat_id}")
|
||||||
.group("mi.menu_category_id,inventory_definitions.item_code")
|
.group("mi.menu_category_id,inventory_definitions.item_code")
|
||||||
.order("mi.menu_category_id desc")
|
.order("mi.menu_category_id desc")
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.get_by_category(filter)
|
def self.get_by_category(filter)
|
||||||
least_stock = "SELECT (CASE WHEN stock_journals.remark != 'out of stock'
|
# THEN (SELECT min(balance) FROM stock_journals
|
||||||
THEN (SELECT min(balance) FROM stock_journals
|
# least_stock = "SELECT (CASE WHEN stock_journals.remark != 'out of stock'
|
||||||
WHERE item_code = inventory_definitions.item_code AND remark != 'out of stock'
|
# THEN (SELECT balance FROM stock_journals
|
||||||
ORDER BY created_at DESC LIMIT 1) ELSE 0 END)
|
# WHERE item_code = inventory_definitions.item_code AND remark != 'out of stock'
|
||||||
FROM stock_journals
|
# ORDER BY created_at DESC LIMIT 1) ELSE 0 END)
|
||||||
WHERE stock_journals.item_code = inventory_definitions.item_code
|
# FROM stock_journals
|
||||||
ORDER BY stock_journals.created_at DESC LIMIT 1"
|
# WHERE stock_journals.item_code = inventory_definitions.item_code
|
||||||
|
# ORDER BY stock_journals.created_at DESC LIMIT 1"
|
||||||
|
least_stock = "(SELECT
|
||||||
|
(SELECT balance FROM stock_journals WHERE item_code = inventory_definitions.item_code
|
||||||
|
ORDER BY created_at DESC LIMIT 1)
|
||||||
|
FROM stock_journals
|
||||||
|
WHERE stock_journals.item_code = inventory_definitions.item_code
|
||||||
|
ORDER BY stock_journals.created_at DESC LIMIT 1)"
|
||||||
|
|
||||||
@inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
|
@inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
|
||||||
(CASE WHEN sj.credit IS NULL THEN 0 ELSE sj.credit END) as credit,
|
(CASE WHEN sj.credit IS NULL THEN 0 ELSE sj.credit END) as credit,
|
||||||
@@ -92,13 +106,13 @@ class InventoryDefinition < ApplicationRecord
|
|||||||
mii.item_instance_name as instance_name," +
|
mii.item_instance_name as instance_name," +
|
||||||
"mc.name as menu_category_name,mc.id as menu_category_id "
|
"mc.name as menu_category_name,mc.id as menu_category_id "
|
||||||
)
|
)
|
||||||
.joins(" LEFT JOIN stock_journals sj ON sj.inventory_definition_id=inventory_definitions.id")
|
.joins(" LEFT JOIN stock_journals sj ON sj.inventory_definition_id=inventory_definitions.id")
|
||||||
.joins("JOIN menu_item_instances mii ON mii.item_instance_code = inventory_definitions.item_code" +
|
.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_items mi ON mi.id = mii.menu_item_id" +
|
||||||
" JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
|
" JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
|
||||||
.joins(" JOIN accounts acc ON acc.id = mi.account_id")
|
.joins(" JOIN accounts acc ON acc.id = mi.account_id")
|
||||||
.where("inventory_definitions.item_code LIKE ? OR inventory_definitions.min_order_level LIKE ?
|
.where("inventory_definitions.item_code LIKE ? OR inventory_definitions.min_order_level LIKE ?
|
||||||
OR inventory_definitions.max_stock_level LIKE ? OR sj.balance LIKE ? OR mi.name LIKE ?
|
OR inventory_definitions.max_stock_level LIKE ? OR sj.balance LIKE ? OR mi.name LIKE ?
|
||||||
OR mii.item_instance_name LIKE ? OR mc.name LIKE ?","%#{filter}%","%#{filter}%","%#{filter}%",
|
OR mii.item_instance_name LIKE ? OR mc.name LIKE ?","%#{filter}%","%#{filter}%","%#{filter}%",
|
||||||
"%#{filter}%","%#{filter}%","%#{filter}%","%#{filter}%")
|
"%#{filter}%","%#{filter}%","%#{filter}%","%#{filter}%")
|
||||||
.group("mi.menu_category_id,inventory_definitions.item_code")
|
.group("mi.menu_category_id,inventory_definitions.item_code")
|
||||||
|
|||||||
@@ -2,7 +2,13 @@ class StockCheckItem < ApplicationRecord
|
|||||||
belongs_to :stock_check
|
belongs_to :stock_check
|
||||||
|
|
||||||
def create(stock_id, item)
|
def create(stock_id, item)
|
||||||
journal_id, balance = StockCheckItem.find_journal(item['sku'])
|
check_item = StockCheckItem.find_by_item_code(item['sku'])
|
||||||
|
if check_item.nil?
|
||||||
|
balance = 0
|
||||||
|
else
|
||||||
|
balance = StockCheckItem.last.different
|
||||||
|
end
|
||||||
|
journal_id = StockCheckItem.find_journal(item['sku'])
|
||||||
remark, different = StockCheckItem.stock_different(item['qty'], balance )
|
remark, different = StockCheckItem.stock_different(item['qty'], balance )
|
||||||
self.stock_check_id = stock_id
|
self.stock_check_id = stock_id
|
||||||
self.item_code = item['sku']
|
self.item_code = item['sku']
|
||||||
@@ -24,13 +30,14 @@ class StockCheckItem < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.stock_different(stock_check_qty, journal_balance)
|
def self.stock_different(stock_check_qty, journal_balance)
|
||||||
if stock_check_qty.to_i == journal_balance.to_i
|
# if stock_check_qty.to_i == journal_balance.to_i
|
||||||
return 'match', stock_check_qty
|
# return 'match', stock_check_qty
|
||||||
elsif stock_check_qty.to_i > journal_balance.to_i
|
# elsif stock_check_qty.to_i > journal_balance.to_i
|
||||||
return 'missing order item', stock_check_qty.to_i - journal_balance.to_i
|
# return 'missing order item', stock_check_qty.to_i - journal_balance.to_i
|
||||||
elsif stock_check_qty.to_i < journal_balance.to_i
|
# elsif stock_check_qty.to_i < journal_balance.to_i
|
||||||
return 'missing stock', stock_check_qty.to_i - journal_balance.to_i
|
# return 'missing stock', stock_check_qty.to_i - journal_balance.to_i
|
||||||
end
|
# end
|
||||||
|
return 'add new stock', stock_check_qty.to_i + journal_balance.to_i
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.get_transaction(from, to, item_code)
|
def self.get_transaction(from, to, item_code)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ class StockJournal < ApplicationRecord
|
|||||||
journal.credit = balance
|
journal.credit = balance
|
||||||
|
|
||||||
balance = calculate_balance(balance, item.qty)
|
balance = calculate_balance(balance, item.qty)
|
||||||
|
|
||||||
journal.item_code = item.item_instance_code
|
journal.item_code = item.item_instance_code
|
||||||
journal.inventory_definition_id = inventory_definition.id
|
journal.inventory_definition_id = inventory_definition.id
|
||||||
journal.debit = item.qty
|
journal.debit = item.qty
|
||||||
@@ -24,13 +24,19 @@ class StockJournal < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.from_stock_check(item)
|
def self.from_stock_check(item)
|
||||||
|
stock_journal = StockJournal.where('item_code=?', item.item_code).order("id DESC").first
|
||||||
|
if stock_journal.nil?
|
||||||
|
old_blance = 0
|
||||||
|
else
|
||||||
|
old_blance = stock_journal.balance
|
||||||
|
end
|
||||||
definition_id = InventoryDefinition.find_by_item_code(item.item_code)
|
definition_id = InventoryDefinition.find_by_item_code(item.item_code)
|
||||||
journal = StockJournal.new
|
journal = StockJournal.new
|
||||||
journal.item_code = item.item_code
|
journal.item_code = item.item_code
|
||||||
journal.inventory_definition_id = definition_id.id
|
journal.inventory_definition_id = definition_id.id
|
||||||
journal.debit = 0
|
journal.debit = 0
|
||||||
journal.credit = item.stock_count
|
journal.credit = item.stock_count
|
||||||
journal.balance = item.stock_count
|
journal.balance = item.stock_count + old_blance.to_i
|
||||||
journal.remark = StockJournal::STOCK_CHECK_TRANS
|
journal.remark = StockJournal::STOCK_CHECK_TRANS
|
||||||
journal.trans_ref = item.id
|
journal.trans_ref = item.id
|
||||||
journal.trans_type = StockJournal::STOCK_CHECK_TRANS
|
journal.trans_type = StockJournal::STOCK_CHECK_TRANS
|
||||||
@@ -43,7 +49,7 @@ class StockJournal < ApplicationRecord
|
|||||||
.joins("join menu_item_instances mii on mii.item_instance_code=stock_journals.item_code")
|
.joins("join menu_item_instances mii on mii.item_instance_code=stock_journals.item_code")
|
||||||
if !from_time.nil? && !to_time.nil?
|
if !from_time.nil? && !to_time.nil?
|
||||||
query = query.where("DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%Y-%m-%d') between '#{from}' and '#{to}'")
|
query = query.where("DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%Y-%m-%d') between '#{from}' and '#{to}'")
|
||||||
else
|
else
|
||||||
query = query.where("DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%Y-%m-%d') between '#{from}' and '#{to}' and DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%H:%M') between '#{from_time}' and '#{to_time}'")
|
query = query.where("DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%Y-%m-%d') between '#{from}' and '#{to}' and DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%H:%M') between '#{from_time}' and '#{to_time}'")
|
||||||
end
|
end
|
||||||
query = query.group("mii.item_instance_name")
|
query = query.group("mii.item_instance_name")
|
||||||
|
|||||||
@@ -10,16 +10,16 @@
|
|||||||
<!-- <th><%= t("views.right_panel.detail.created_by") %></th>
|
<!-- <th><%= t("views.right_panel.detail.created_by") %></th>
|
||||||
<th><%= t("views.right_panel.detail.created_time") %></th> -->
|
<th><%= t("views.right_panel.detail.created_time") %></th> -->
|
||||||
</tr>
|
</tr>
|
||||||
<% cate_arr = Array.new %>
|
<% cate_arr = Array.new %>
|
||||||
<%
|
<%
|
||||||
count = 0
|
count = 0
|
||||||
@inventory_definitions.each do |item|
|
@inventory_definitions.each do |item|
|
||||||
count += 1
|
count += 1
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<% if !cate_arr.include?(item.menu_category_id) %>
|
<% if !cate_arr.include?(item.menu_category_id) %>
|
||||||
<td><%= item.menu_category_name %></td>
|
<td><%= item.menu_category_name %></td>
|
||||||
<% cate_arr.push(item.menu_category_id) %>
|
<% cate_arr.push(item.menu_category_id) %>
|
||||||
<% else %>
|
<% else %>
|
||||||
@@ -72,4 +72,4 @@
|
|||||||
window.location.href = '/inventory/'+ID+'/show';
|
window.location.href = '/inventory/'+ID+'/show';
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user