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,15 +294,22 @@ class SubcontractingController(StockController):
|
||||
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())
|
||||
|
||||
if return_consumed_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_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:
|
||||
return (consumed_materials, receipt_items)
|
||||
if voucher_nos
|
||||
else {}
|
||||
)
|
||||
|
||||
for row in consumed_materials:
|
||||
key = (row.rm_item_code, row.main_item_code, receipt_items.get(row.reference_name))
|
||||
@@ -350,11 +357,15 @@ class SubcontractingController(StockController):
|
||||
transferred_items = self.__get_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 = (
|
||||
get_voucher_wise_serial_batch_from_bundle(
|
||||
voucher_no=voucher_nos,
|
||||
is_outward=0,
|
||||
get_subcontracted_item=("Stock Entry Detail", "subcontracted_item"),
|
||||
)
|
||||
if voucher_nos
|
||||
else {}
|
||||
)
|
||||
|
||||
for row in transferred_items:
|
||||
key = (row.rm_item_code, row.main_item_code, row.get(self.subcontract_data.order_field))
|
||||
|
||||
@@ -2104,10 +2104,13 @@ def get_ledgers_from_serial_batch_bundle(**kwargs) -> list[frappe._dict]:
|
||||
)
|
||||
|
||||
for key, val in kwargs.items():
|
||||
if not val:
|
||||
if val is None:
|
||||
continue
|
||||
|
||||
if key in ["get_subcontracted_item"]:
|
||||
if not val and isinstance(val, list):
|
||||
return []
|
||||
|
||||
if key == "get_subcontracted_item":
|
||||
continue
|
||||
|
||||
if key in ["name", "item_code", "warehouse", "voucher_no", "company", "voucher_detail_no"]:
|
||||
|
||||
Reference in New Issue
Block a user