mirror of
https://github.com/frappe/erpnext.git
synced 2026-10-29 22:57:42 +00:00
fix: invalid logic for cache hit
if there are no inventory dimensions then `[]` gets treated as a miss.
(cherry picked from commit 8e17054b67)
This commit is contained in:
committed by
Mihir Kandoi
parent
634d4a2f80
commit
508b96fde4
@@ -5,6 +5,7 @@ import frappe
|
||||
from frappe import _, bold, scrub
|
||||
from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
|
||||
from frappe.model.document import Document
|
||||
from frappe.utils.caching import request_cache
|
||||
|
||||
|
||||
class DoNotChangeError(frappe.ValidationError):
|
||||
@@ -363,27 +364,20 @@ def get_evaluated_inventory_dimension(doc, sl_dict, parent_doc=None):
|
||||
return filter_dimensions
|
||||
|
||||
|
||||
@request_cache
|
||||
def get_document_wise_inventory_dimensions(doctype) -> dict:
|
||||
if not hasattr(frappe.local, "document_wise_inventory_dimensions"):
|
||||
frappe.local.document_wise_inventory_dimensions = {}
|
||||
|
||||
if not frappe.local.document_wise_inventory_dimensions.get(doctype):
|
||||
dimensions = frappe.get_all(
|
||||
"Inventory Dimension",
|
||||
fields=[
|
||||
"name",
|
||||
"source_fieldname",
|
||||
"condition",
|
||||
"target_fieldname",
|
||||
"type_of_transaction",
|
||||
"fetch_from_parent",
|
||||
],
|
||||
or_filters={"document_type": doctype, "apply_to_all_doctypes": 1},
|
||||
)
|
||||
|
||||
frappe.local.document_wise_inventory_dimensions[doctype] = dimensions
|
||||
|
||||
return frappe.local.document_wise_inventory_dimensions[doctype]
|
||||
return frappe.get_all(
|
||||
"Inventory Dimension",
|
||||
fields=[
|
||||
"name",
|
||||
"source_fieldname",
|
||||
"condition",
|
||||
"target_fieldname",
|
||||
"type_of_transaction",
|
||||
"fetch_from_parent",
|
||||
],
|
||||
or_filters={"document_type": doctype, "apply_to_all_doctypes": 1},
|
||||
)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
|
||||
@@ -80,7 +80,7 @@ class TestInventoryDimension(FrappeTestCase):
|
||||
self.assertFalse(custom_field)
|
||||
|
||||
def test_inventory_dimension(self):
|
||||
frappe.local.document_wise_inventory_dimensions = {}
|
||||
frappe.clear_cache(doctype="Inventory Dimension")
|
||||
|
||||
warehouse = "Shelf Warehouse - _TC"
|
||||
item_code = "_Test Item"
|
||||
@@ -152,7 +152,8 @@ class TestInventoryDimension(FrappeTestCase):
|
||||
self.assertRaises(DoNotChangeError, inv_dim1.save)
|
||||
|
||||
def test_inventory_dimension_for_purchase_receipt_and_delivery_note(self):
|
||||
frappe.local.document_wise_inventory_dimensions = {}
|
||||
frappe.clear_cache(doctype="Inventory Dimension")
|
||||
frappe.clear_cache("Inventory Dimension")
|
||||
|
||||
inv_dimension = create_inventory_dimension(
|
||||
reference_document="Rack", dimension_name="Rack", apply_to_all_doctypes=1
|
||||
@@ -717,7 +718,7 @@ class TestInventoryDimension(FrappeTestCase):
|
||||
)
|
||||
inv_dimension_2.db_set("validate_negative_stock", 1)
|
||||
frappe.local.inventory_dimensions = {}
|
||||
frappe.local.document_wise_inventory_dimensions = {}
|
||||
frappe.clear_cache(doctype="Inventory Dimension")
|
||||
|
||||
pr_doc = make_purchase_receipt(item_code=item_code, qty=30, do_not_submit=True)
|
||||
pr_doc.items[0].inv_site = "Site 1"
|
||||
@@ -908,7 +909,7 @@ def create_inventory_dimension(**args):
|
||||
doc.insert(ignore_permissions=True)
|
||||
|
||||
frappe.local.inventory_dimensions = {}
|
||||
frappe.local.document_wise_inventory_dimensions = {}
|
||||
frappe.clear_cache(doctype="Inventory Dimension")
|
||||
|
||||
return doc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user