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:
Sagar Vora
2024-06-22 21:27:00 +05:30
committed by GitHub
parent fd7666a029
commit ac6d85aed6
2 changed files with 27 additions and 13 deletions

View File

@@ -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))

View File

@@ -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"]: