fix: keep Standard Cost stock value in step with the standard rate

Mirrors update_qty's Standard Cost handling and drops fixed test item
names so reruns start from fresh SLE-less items.

(cherry picked from commit 49a43aad81)
This commit is contained in:
Mihir Kandoi
2026-07-20 19:59:13 +05:30
committed by Mergify
parent a38cbfc88e
commit fe65882e59
2 changed files with 11 additions and 2 deletions

View File

@@ -50,6 +50,15 @@ class Bin(Document):
self.actual_qty = last_sle.qty_after_transaction
self.valuation_rate = last_sle.valuation_rate
self.stock_value = last_sle.stock_value
from erpnext.stock.utils import get_valuation_method
if get_valuation_method(self.item_code) == "Standard Cost":
from erpnext.stock.doctype.item_standard_cost.item_standard_cost import get_item_standard_rate
self.stock_value = flt(self.actual_qty) * flt(
get_item_standard_rate(self.item_code, self.company)
)
self.planned_qty = get_planned_qty(self.item_code, self.warehouse)
self.indented_qty = get_indented_qty(self.item_code, self.warehouse)
self.ordered_qty = get_ordered_qty(self.item_code, self.warehouse)

View File

@@ -29,7 +29,7 @@ class TestBin(ERPNextTestSuite):
def test_recalculate_values(self):
from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
item_code = make_item("_TestBinRecalculateValues").name
item_code = make_item().name
warehouse = "_Test Warehouse - _TC"
make_stock_entry(item_code=item_code, target=warehouse, qty=10, rate=100)
@@ -43,7 +43,7 @@ class TestBin(ERPNextTestSuite):
self.assertEqual(bin.stock_value, 1000)
def test_recalculate_values_without_sle(self):
item_code = make_item("_TestBinRecalculateValuesNoSLE").name
item_code = make_item().name
warehouse = "_Test Warehouse - _TC"
bin = _create_bin(item_code, warehouse)