perf: dont run queries unnecessarily, improved filters (#41993)
* perf: dont run queries unnecessarily, improved filters * perf: dont run query if `in` filter is empty
This commit is contained in:
@@ -294,16 +294,23 @@ class SubcontractingController(StockController):
|
|||||||
receipt_items = {item.name: item.get(self.subcontract_data.order_field) for item in receipt_items}
|
receipt_items = {item.name: item.get(self.subcontract_data.order_field) for item in receipt_items}
|
||||||
consumed_materials = self.__get_consumed_items(doctype, receipt_items.keys())
|
consumed_materials = self.__get_consumed_items(doctype, receipt_items.keys())
|
||||||
|
|
||||||
voucher_nos = [d.voucher_no for d in consumed_materials if d.voucher_no]
|
|
||||||
voucher_bundle_data = get_voucher_wise_serial_batch_from_bundle(
|
|
||||||
voucher_no=voucher_nos,
|
|
||||||
is_outward=1,
|
|
||||||
get_subcontracted_item=("Subcontracting Receipt Supplied Item", "main_item_code"),
|
|
||||||
)
|
|
||||||
|
|
||||||
if return_consumed_items:
|
if return_consumed_items:
|
||||||
return (consumed_materials, receipt_items)
|
return (consumed_materials, receipt_items)
|
||||||
|
|
||||||
|
if not consumed_materials:
|
||||||
|
return
|
||||||
|
|
||||||
|
voucher_nos = [d.voucher_no for d in consumed_materials if d.voucher_no]
|
||||||
|
voucher_bundle_data = (
|
||||||
|
get_voucher_wise_serial_batch_from_bundle(
|
||||||
|
voucher_no=voucher_nos,
|
||||||
|
is_outward=1,
|
||||||
|
get_subcontracted_item=("Subcontracting Receipt Supplied Item", "main_item_code"),
|
||||||
|
)
|
||||||
|
if voucher_nos
|
||||||
|
else {}
|
||||||
|
)
|
||||||
|
|
||||||
for row in consumed_materials:
|
for row in consumed_materials:
|
||||||
key = (row.rm_item_code, row.main_item_code, receipt_items.get(row.reference_name))
|
key = (row.rm_item_code, row.main_item_code, receipt_items.get(row.reference_name))
|
||||||
if not self.available_materials.get(key):
|
if not self.available_materials.get(key):
|
||||||
@@ -350,10 +357,14 @@ class SubcontractingController(StockController):
|
|||||||
transferred_items = self.__get_transferred_items()
|
transferred_items = self.__get_transferred_items()
|
||||||
|
|
||||||
voucher_nos = [row.voucher_no for row in transferred_items]
|
voucher_nos = [row.voucher_no for row in transferred_items]
|
||||||
voucher_bundle_data = get_voucher_wise_serial_batch_from_bundle(
|
voucher_bundle_data = (
|
||||||
voucher_no=voucher_nos,
|
get_voucher_wise_serial_batch_from_bundle(
|
||||||
is_outward=0,
|
voucher_no=voucher_nos,
|
||||||
get_subcontracted_item=("Stock Entry Detail", "subcontracted_item"),
|
is_outward=0,
|
||||||
|
get_subcontracted_item=("Stock Entry Detail", "subcontracted_item"),
|
||||||
|
)
|
||||||
|
if voucher_nos
|
||||||
|
else {}
|
||||||
)
|
)
|
||||||
|
|
||||||
for row in transferred_items:
|
for row in transferred_items:
|
||||||
|
|||||||
@@ -2104,10 +2104,13 @@ def get_ledgers_from_serial_batch_bundle(**kwargs) -> list[frappe._dict]:
|
|||||||
)
|
)
|
||||||
|
|
||||||
for key, val in kwargs.items():
|
for key, val in kwargs.items():
|
||||||
if not val:
|
if val is None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if key in ["get_subcontracted_item"]:
|
if not val and isinstance(val, list):
|
||||||
|
return []
|
||||||
|
|
||||||
|
if key == "get_subcontracted_item":
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if key in ["name", "item_code", "warehouse", "voucher_no", "company", "voucher_detail_no"]:
|
if key in ["name", "item_code", "warehouse", "voucher_no", "company", "voucher_detail_no"]:
|
||||||
|
|||||||
Reference in New Issue
Block a user