fixed inventory
This commit is contained in:
@@ -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|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
|
if item.qty.to_i > 0
|
||||||
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
||||||
|
if !void_qty.nil? | void_qty != 0
|
||||||
check_item.different = check_item.different - item.qty
|
check_item.different = check_item.different - item.qty
|
||||||
check_item.save
|
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
|
||||||
|
if item.qty.to_i > 0
|
||||||
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
|
||||||
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)
|
||||||
|
if !void_qty.nil? | void_qty != 0
|
||||||
check_item.different = check_item.different - item.qty
|
check_item.different = check_item.different - item.qty
|
||||||
check_item.save
|
check_item.save
|
||||||
else
|
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
|
||||||
|
if item.qty.to_i > 0
|
||||||
StockJournal.add_to_journal(item, stock.balance, "out of stock", inventory_definition)
|
StockJournal.add_to_journal(item, stock.balance, "out of stock", inventory_definition)
|
||||||
|
if !void_qty.nil? | void_qty != 0
|
||||||
check_item.different = check_item.different - item.qty
|
check_item.different = check_item.different - item.qty
|
||||||
check_item.save
|
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)"
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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 )
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
balance = calculate_balance(balance, item.qty)
|
journal.credit = credit_balance
|
||||||
|
balance = calculate_balance(balance, item)
|
||||||
|
|
||||||
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 = debit
|
||||||
journal.balance = balance
|
journal.balance = balance
|
||||||
journal.remark = stock_message
|
journal.remark = stock_message
|
||||||
journal.trans_ref = item.id
|
journal.trans_ref = item.id
|
||||||
journal.trans_type = StockJournal::SALES_TRANS
|
journal.trans_type = StockJournal::SALES_TRANS
|
||||||
journal.save
|
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user