[fix] Stock Valuation for serialized items

This commit is contained in:
Nabin Hait 2016-02-29 11:30:27 +05:30
parent f34e63123f
commit 2620bf402f

View File

@ -212,24 +212,23 @@ class update_entries_after(object):
# wrong incoming rate # wrong incoming rate
incoming_rate = self.valuation_rate incoming_rate = self.valuation_rate
elif incoming_rate == 0: stock_value_change = 0
if flt(sle.actual_qty) < 0: if incoming_rate:
# In case of delivery/stock issue, get average purchase rate stock_value_change = actual_qty * incoming_rate
# of serial nos of current entry elif actual_qty < 0:
incoming_rate = flt(frappe.db.sql("""select avg(purchase_rate) # In case of delivery/stock issue, get average purchase rate
from `tabSerial No` where name in (%s)""" % (", ".join(["%s"]*len(serial_no))), # of serial nos of current entry
tuple(serial_no))[0][0]) stock_value_change = -1 * flt(frappe.db.sql("""select sum(purchase_rate)
from `tabSerial No` where name in (%s)""" % (", ".join(["%s"]*len(serial_no))),
tuple(serial_no))[0][0])
if incoming_rate and not self.valuation_rate: new_stock_qty = self.qty_after_transaction + actual_qty
self.valuation_rate = incoming_rate if new_stock_qty > 0:
else: new_stock_value = (self.qty_after_transaction * self.valuation_rate) + stock_value_change
new_stock_qty = self.qty_after_transaction + actual_qty if new_stock_value > 0:
if new_stock_qty > 0: # calculate new valuation rate only if stock value is positive
new_stock_value = self.qty_after_transaction * self.valuation_rate + actual_qty * incoming_rate # else it remains the same as that of previous entry
if new_stock_value > 0: self.valuation_rate = new_stock_value / new_stock_qty
# calculate new valuation rate only if stock value is positive
# else it remains the same as that of previous entry
self.valuation_rate = new_stock_value / new_stock_qty
def get_moving_average_values(self, sle): def get_moving_average_values(self, sle):
actual_qty = flt(sle.actual_qty) actual_qty = flt(sle.actual_qty)