fix: incorrect out value in stock balance due to precision issue (#21379)
This commit is contained in:
parent
eaa956b994
commit
28deddeb6f
@ -170,6 +170,8 @@ def get_item_warehouse_map(filters, sle):
|
||||
from_date = getdate(filters.get("from_date"))
|
||||
to_date = getdate(filters.get("to_date"))
|
||||
|
||||
float_precision = cint(frappe.db.get_default("float_precision")) or 3
|
||||
|
||||
for d in sle:
|
||||
key = (d.company, d.item_code, d.warehouse)
|
||||
if key not in iwb_map:
|
||||
@ -184,7 +186,7 @@ def get_item_warehouse_map(filters, sle):
|
||||
qty_dict = iwb_map[(d.company, d.item_code, d.warehouse)]
|
||||
|
||||
if d.voucher_type == "Stock Reconciliation":
|
||||
qty_diff = flt(d.qty_after_transaction) - qty_dict.bal_qty
|
||||
qty_diff = flt(d.qty_after_transaction) - flt(qty_dict.bal_qty)
|
||||
else:
|
||||
qty_diff = flt(d.actual_qty)
|
||||
|
||||
@ -195,7 +197,7 @@ def get_item_warehouse_map(filters, sle):
|
||||
qty_dict.opening_val += value_diff
|
||||
|
||||
elif d.posting_date >= from_date and d.posting_date <= to_date:
|
||||
if qty_diff > 0:
|
||||
if flt(qty_diff, float_precision) >= 0:
|
||||
qty_dict.in_qty += qty_diff
|
||||
qty_dict.in_val += value_diff
|
||||
else:
|
||||
@ -206,16 +208,15 @@ def get_item_warehouse_map(filters, sle):
|
||||
qty_dict.bal_qty += qty_diff
|
||||
qty_dict.bal_val += value_diff
|
||||
|
||||
iwb_map = filter_items_with_no_transactions(iwb_map)
|
||||
iwb_map = filter_items_with_no_transactions(iwb_map, float_precision)
|
||||
|
||||
return iwb_map
|
||||
|
||||
def filter_items_with_no_transactions(iwb_map):
|
||||
def filter_items_with_no_transactions(iwb_map, float_precision):
|
||||
for (company, item, warehouse) in sorted(iwb_map):
|
||||
qty_dict = iwb_map[(company, item, warehouse)]
|
||||
|
||||
no_transactions = True
|
||||
float_precision = cint(frappe.db.get_default("float_precision")) or 3
|
||||
for key, val in iteritems(qty_dict):
|
||||
val = flt(val, float_precision)
|
||||
qty_dict[key] = val
|
||||
|
Loading…
x
Reference in New Issue
Block a user