fixed inventory

This commit is contained in:
NyanLinHtut
2019-09-12 14:50:14 +06:30
parent 719d5637c2
commit e0b54728f7
7 changed files with 111 additions and 40 deletions

View File

@@ -12,7 +12,7 @@ class Inventory::InventoryController < BaseInventoryController
inventory_definition_id = params[:inventory_definition_id] inventory_definition_id = params[:inventory_definition_id]
inventory = InventoryDefinition.find(inventory_definition_id) inventory = InventoryDefinition.find(inventory_definition_id)
@stock_journals = StockJournal.where(item_code: inventory.item_code) @stock_journals = StockJournal.where(item_code: inventory.item_code).order("id DESC")
@stock_journals = Kaminari.paginate_array(@stock_journals).page(params[:page]).per(20) @stock_journals = Kaminari.paginate_array(@stock_journals).page(params[:page]).per(20)
respond_to do |format| respond_to do |format|

View File

@@ -304,6 +304,12 @@ class Origami::PaymentsController < BaseOrigamiController
#end #end
end end
logger.debug 'saleObj++++++++++++++++++++++++++'
logger.debug saleObj.to_json
if !saleObj.nil?
# InventoryJob.perform_now(self.id)
InventoryDefinition.calculate_product_count(saleObj)
end
end end
# status, filename, sale_receipt_no, printer_name = Payment.pay(getCloudDomain, cash, sale_id, member_info, type, tax_type, path, latest_order_no, shop_detail, current_user, nil, nil) # status, filename, sale_receipt_no, printer_name = Payment.pay(getCloudDomain, cash, sale_id, member_info, type, tax_type, path, latest_order_no, shop_detail, current_user, nil, nil)
@@ -741,6 +747,10 @@ class Origami::PaymentsController < BaseOrigamiController
end end
end end
# end # end
if !saleObj.nil?
#InventoryJob.perform_now(self.id)
InventoryDefinition.calculate_product_count(saleObj)
end
end end
end end

View File

@@ -77,9 +77,9 @@ class Origami::SalesController < BaseOrigamiController
end end
end end
end end
if !sale_data.empty? # if !sale_data.empty?
# InventoryJob.perform_now(self.id) # InventoryJob.perform_now(self.id)
InventoryDefinition.calculate_product_count(nil,sale_data) # InventoryDefinition.calculate_product_count(nil,sale_data)
end end
end end

View File

@@ -44,27 +44,69 @@ class InventoryDefinition < ApplicationRecord
end end
def self.modify_balance(item, stock, inventory_definition) #saleitemObj def self.modify_balance(item, stock, inventory_definition) #saleitemObj
void_qty = 0
if item.product_name.downcase.include?("void")
void_qty = item.qty.abs.to_i
end
check_item = StockCheckItem.where('item_code=?', item.item_instance_code).order("id DESC").first 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) if item.qty.to_i > 0
check_item.different = check_item.different - item.qty StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
check_item.save if !void_qty.nil? | void_qty != 0
check_item.different = check_item.different - item.qty
check_item.save
end
else
if item.product_name.downcase.include?("void")
StockJournal.add_to_journal(item, stock.balance, "void", inventory_definition)
check_item.different = check_item.different + void_qty
check_item.save
end
end
else else
puts " << stock is less than order qty" puts " << stock is less than order qty"
data = item data = item
extra_qty = item.qty.to_i - stock.balance.to_i extra_qty = item.qty.to_i - stock.balance.to_i
if stock.balance.to_i > 0 if stock.balance.to_i > 0
item.qty = stock.balance.to_i item.qty = stock.balance.to_i
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition) if item.qty.to_i > 0
data.qty = extra_qty StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
StockJournal.add_to_journal(data, 0, "out of stock", inventory_definition) check_item.different = check_item.different - item.qty
check_item.different = check_item.different - item.qty check_item.save
check_item.save data.qty = extra_qty
StockJournal.add_to_journal(data, 0, "out of stock", inventory_definition)
if !void_qty.nil? | void_qty != 0
check_item.different = check_item.different - item.qty
check_item.save
else
check_item.different = check_item.different + void_qty
check_item.save
end
else
if item.product_name.downcase.include?("void")
StockJournal.add_to_journal(item, stock.balance, "void", inventory_definition)
check_item.different = check_item.different + void_qty
check_item.save
end
end
else else
StockJournal.add_to_journal(item, stock.balance, "out of stock", inventory_definition) if item.qty.to_i > 0
check_item.different = check_item.different - item.qty StockJournal.add_to_journal(item, stock.balance, "out of stock", inventory_definition)
check_item.save if !void_qty.nil? | void_qty != 0
check_item.different = check_item.different - item.qty
check_item.save
else
check_item.different = check_item.different + void_qty
check_item.save
end
else
if item.product_name.downcase.include?("void")
StockJournal.add_to_journal(item, stock.balance, "void", inventory_definition)
check_item.different = check_item.different + void_qty
check_item.save
end
end
end end
end end
end end
@@ -93,7 +135,7 @@ class InventoryDefinition < ApplicationRecord
# ORDER BY stock_journals.created_at DESC LIMIT 1" # ORDER BY stock_journals.created_at DESC LIMIT 1"
least_stock = "(SELECT least_stock = "(SELECT
(SELECT balance FROM stock_journals WHERE item_code = inventory_definitions.item_code (SELECT balance FROM stock_journals WHERE item_code = inventory_definitions.item_code
ORDER BY created_at DESC LIMIT 1) ORDER BY id DESC LIMIT 1)
FROM stock_journals FROM stock_journals
WHERE stock_journals.item_code = inventory_definitions.item_code WHERE stock_journals.item_code = inventory_definitions.item_code
ORDER BY stock_journals.created_at DESC LIMIT 1)" ORDER BY stock_journals.created_at DESC LIMIT 1)"

View File

@@ -84,7 +84,7 @@ class Sale < ApplicationRecord
link_order_sale(order.order_id) link_order_sale(order.order_id)
end end
# InventoryJob.perform_now(self.id) # InventoryJob.perform_now(self.id)
InventoryDefinition.calculate_product_count(saleObj) # InventoryDefinition.calculate_product_count(saleObj)

View File

@@ -2,11 +2,12 @@ class StockCheckItem < ApplicationRecord
belongs_to :stock_check belongs_to :stock_check
def create(stock_id, item) def create(stock_id, item)
check_item = StockCheckItem.find_by_item_code(item['sku']) # check_item = StockCheckItem.find_by_item_code(item['sku'])
check_item = StockCheckItem.where('item_code=?', item_code).order("id DESC").first
if check_item.nil? if check_item.nil?
balance = 0 balance = 0
else else
balance = StockCheckItem.last.different balance = check_item.different
end end
journal_id = StockCheckItem.find_journal(item['sku']) journal_id = StockCheckItem.find_journal(item['sku'])
remark, different = StockCheckItem.stock_different(item['qty'], balance ) remark, different = StockCheckItem.stock_different(item['qty'], balance )

View File

@@ -5,22 +5,40 @@ class StockJournal < ApplicationRecord
def self.add_to_journal(item, balance, stock_message, inventory_definition) # item => saleObj | balance => Stock journal def self.add_to_journal(item, balance, stock_message, inventory_definition) # item => saleObj | balance => Stock journal
journal = StockJournal.new journal = StockJournal.new
journal.credit = balance if item.qty < 0
credit_balance = item.qty.abs.to_i
debit = 0
else
credit_balance = balance
debit = item.qty
end
journal.credit = credit_balance
balance = calculate_balance(balance, item)
journal.item_code = item.item_instance_code
journal.inventory_definition_id = inventory_definition.id
journal.debit = debit
journal.balance = balance
journal.remark = stock_message
journal.trans_ref = item.id
journal.trans_type = StockJournal::SALES_TRANS
journal.save
balance = calculate_balance(balance, item.qty)
journal.item_code = item.item_instance_code
journal.inventory_definition_id = inventory_definition.id
journal.debit = item.qty
journal.balance = balance
journal.remark = stock_message
journal.trans_ref = item.id
journal.trans_type = StockJournal::SALES_TRANS
journal.save
end end
def self.calculate_balance(balance, qty) def self.calculate_balance(balance, item)
return balance.to_i - qty.to_i if item.product_name.downcase.include?("void")
logger.debug 'balance++++++++++++++++++'
logger.debug balance
logger.debug 'qty+++++++++++++++++++++++'
logger.debug item.qty
return balance.to_i + item.qty.abs.to_i
else
return balance.to_i - item.qty.to_i
end
end end
def self.from_stock_check(item) def self.from_stock_check(item)