fix: batchwise valuation can only be used by FIFO/LIFO
diff --git a/erpnext/stock/doctype/batch/batch.py b/erpnext/stock/doctype/batch/batch.py
index b5e56ad..93e8d41 100644
--- a/erpnext/stock/doctype/batch/batch.py
+++ b/erpnext/stock/doctype/batch/batch.py
@@ -6,7 +6,6 @@
from frappe import _
from frappe.model.document import Document
from frappe.model.naming import make_autoname, revert_series_if_last
-from frappe.query_builder.functions import Sum
from frappe.utils import cint, flt, get_link_to_form
from frappe.utils.data import add_days
from frappe.utils.jinja import render_template
@@ -347,26 +346,7 @@
def can_use_batchwise_valuation(item_code: str) -> bool:
""" Check if item can use batchwise valuation.
- Note: Item with existing moving average batches can't use batchwise valuation
- until they are exhausted.
- """
+ Note: Moving average valuation method can not use batch_wise_valuation."""
from erpnext.stock.stock_ledger import get_valuation_method
- batch = frappe.qb.DocType("Batch")
- if get_valuation_method(item_code) != "Moving Average":
- return True
-
- batch_qty = (
- frappe.qb
- .from_(batch)
- .select(Sum(batch.batch_qty))
- .where(
- (batch.use_batchwise_valuation == 0)
- & (batch.item == item_code)
- )
- ).run()
-
- if batch_qty and batch_qty[0][0]:
- return False
-
- return True
+ return get_valuation_method(item_code) != "Moving Average"
diff --git a/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py
index c65ed28..0864ece 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py
@@ -665,36 +665,6 @@
{"actual_qty": -10, "stock_value_difference": -10*40, "stock_queue": []},
]))
- def test_mixed_valuation_batches_moving_average(self):
- item_code, warehouses, batches = setup_item_valuation_test(use_batchwise_valuation=0, valuation_method="Moving Average")
- warehouse = warehouses[0]
-
- make_stock_entry(item_code=item_code, target=warehouse, batch_no=batches[0],
- qty=10, rate=10)
- make_stock_entry(item_code=item_code, target=warehouse, batch_no=batches[1],
- qty=10, rate=20)
- make_stock_entry(item_code=item_code, target=warehouse, batch_no=batches[0],
- qty=5, rate=15)
-
- new1 = make_stock_entry(item_code=item_code, target=warehouse, qty=10, rate=40)
- batches.append(new1.items[0].batch_no)
- new2 = make_stock_entry(item_code=item_code, target=warehouse, qty=10, rate=42)
- batches.append(new2.items[0].batch_no)
-
- # consume old batch as per FIFO
- make_stock_entry(item_code=item_code, source=warehouse, qty=15, batch_no=batches[0])
- # consume new batch as per batch
- make_stock_entry(item_code=item_code, source=warehouse, qty=10, batch_no=batches[-1])
- # finish all old batches
- make_stock_entry(item_code=item_code, source=warehouse, qty=10, batch_no=batches[1])
-
- # finish all new batches
- consume_new1 = make_stock_entry(item_code=item_code, source=warehouse, qty=10, batch_no=batches[-2])
- self.assertSLEs(consume_new1, ([
- {"stock_value": 0},
- ]))
-
-
def create_repack_entry(**args):
args = frappe._dict(args)
repack = frappe.new_doc("Stock Entry")