fixed inventory
This commit is contained in:
@@ -11,19 +11,21 @@ class SaleItem < ApplicationRecord
|
||||
def compute_item
|
||||
end
|
||||
|
||||
after_update :update_stock_journal
|
||||
|
||||
# Add Sale Items
|
||||
def self.add_sale_items(sale_items)
|
||||
sale_items.each do|saleitemObj|
|
||||
@newsaleitem = SaleItem.new
|
||||
@newsaleitem = saleitemObj.dup
|
||||
@newsaleitem.save
|
||||
@newsaleitem.qty = saleitemObj.qty * (-1)
|
||||
@newsaleitem.qty = saleitemObj.qty * (-1)
|
||||
@newsaleitem.unit_price = saleitemObj.unit_price * (-1)
|
||||
@newsaleitem.taxable_price = (saleitemObj.unit_price * saleitemObj.qty) * (-1)
|
||||
@newsaleitem.price = (saleitemObj.unit_price * saleitemObj.qty) * (-1)
|
||||
@newsaleitem.price = (saleitemObj.unit_price * saleitemObj.qty) * (-1)
|
||||
@newsaleitem.product_name = saleitemObj.product_name + ' (FOC)'
|
||||
@newsaleitem.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.sync_sale_item_records(sale_items)
|
||||
@@ -118,7 +120,7 @@ class SaleItem < ApplicationRecord
|
||||
|
||||
# Check for actual sale items
|
||||
sale_items.each do |si|
|
||||
if si.account_id == a.id
|
||||
if si.account_id == a.id
|
||||
account_price[:price] = account_price[:price] + si.price
|
||||
end
|
||||
end
|
||||
@@ -190,7 +192,7 @@ class SaleItem < ApplicationRecord
|
||||
total = 0
|
||||
# Check for actual sale items
|
||||
sale_items.each do |si|
|
||||
if si.product_code == "Other Charges" && si.item_instance_code == nil
|
||||
if si.product_code == "Other Charges" && si.item_instance_code == nil
|
||||
total = total + si.price
|
||||
end
|
||||
end
|
||||
@@ -229,4 +231,32 @@ class SaleItem < ApplicationRecord
|
||||
self.sale_item_id = SeedGenerator.generate_id(self.class.name, "SLI")
|
||||
end
|
||||
end
|
||||
|
||||
def update_stock_journal
|
||||
is_void = self.status == "void" && self.status_was != "void"
|
||||
cancel_void = self.status_was == "void" && self.status.nil?
|
||||
is_edit = self.qty >= 0 && self.qty != self.qty_was
|
||||
if is_void or cancel_void or is_edit
|
||||
found, inventory_definition = InventoryDefinition.find_product_in_inventory(self)
|
||||
if found
|
||||
stock = StockJournal.where('item_code=?', self.item_instance_code).order("id DESC").first
|
||||
unless stock.nil?
|
||||
check_item = StockCheckItem.where('item_code=?', self.item_instance_code).order("id DESC").first
|
||||
if is_void
|
||||
qty = -self.qty
|
||||
remark = "void"
|
||||
elsif cancel_void
|
||||
qty = self.qty
|
||||
remark = "cancel void"
|
||||
elsif is_edit
|
||||
qty = self.qty - self.qty_was
|
||||
remark = "edit"
|
||||
end
|
||||
StockJournal.add_to_journal(self.item_instance_code, qty, stock.balance, remark, inventory_definition, self.id, StockJournal::SALES_TRANS)
|
||||
check_item.different = check_item.different + qty
|
||||
check_item.save
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user