test(accounts): enable perpetual inventory through its cached flag

Earlier tests cache the flag as off on frappe.local, so setting it on the Company alone did not reach get_valuation_rate.
This commit is contained in:
Mihir Kandoi
2026-10-28 19:46:40 +05:30
parent 348c31bc4e
commit 838a1525c4
@@ -6,6 +6,7 @@ from contextlib import contextmanager
import frappe
from frappe.utils import flt
import erpnext
from erpnext.accounts.doctype.coupon_code.test_coupon_code import test_create_test_data
from erpnext.accounts.doctype.mode_of_payment.test_mode_of_payment import (
set_default_account_for_mode_of_payment,
@@ -37,6 +38,16 @@ def rounding_method(method):
frappe.local.system_settings = None
@contextmanager
def perpetual_inventory(company):
previous = erpnext.is_perpetual_inventory_enabled(company)
frappe.local.enable_perpetual_inventory[company] = 1
try:
yield
finally:
frappe.local.enable_perpetual_inventory[company] = previous
def sell_over_the_counter(lines, discount_percentage=0):
item_code, qty, rate = lines[0]
sale = create_pos_invoice(item_code=item_code, qty=qty, rate=rate, do_not_save=True)
@@ -666,20 +677,18 @@ class TestPOSInvoiceMergeLog(ERPNextTestSuite):
def test_consolidating_standalone_return_without_stock_history(self):
from erpnext.stock.doctype.item.test_item import make_item
frappe.db.set_value(
"Company",
"_Test Company",
{"enable_perpetual_inventory": 1, "default_inventory_account": "Stock In Hand - _TC"},
)
frappe.db.set_value("Company", "_Test Company", "default_inventory_account", "Stock In Hand - _TC")
item_code = make_item("_Test Standalone POS Return Item", {"is_stock_item": 1}).name
pos_return = create_pos_invoice(item_code=item_code, qty=-1, rate=100, is_return=1, do_not_save=1)
pos_return.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": -100})
pos_return.paid_amount = pos_return.base_paid_amount = -100
self.assertRaises(frappe.ValidationError, pos_return.insert)
pos_return.items[0].incoming_rate = 80
pos_return.insert().submit()
self.make_closing_entry()
with perpetual_inventory("_Test Company"):
self.assertRaises(frappe.ValidationError, pos_return.insert)
pos_return.items[0].incoming_rate = 80
pos_return.insert().submit()
self.make_closing_entry()
pos_return.load_from_db()
credit_note = frappe.get_doc("Sales Invoice", pos_return.consolidated_invoice)