diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py index 31f3c8442e429b6d2e82510ccf7c4023509f960c..101b683d3ebd73a3e836c76ba2fe20eebb3574a5 100644 --- a/erpnext/controllers/subcontracting_controller.py +++ b/erpnext/controllers/subcontracting_controller.py @@ -294,16 +294,23 @@ 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()) - 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: 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: key = (row.rm_item_code, row.main_item_code, receipt_items.get(row.reference_name)) if not self.available_materials.get(key): @@ -350,10 +357,14 @@ 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_no=voucher_nos, - is_outward=0, - get_subcontracted_item=("Stock Entry Detail", "subcontracted_item"), + 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: diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py index 87bf2df5f612c0af9313809c533082807d1b1027..e7637aca63eac377b48e841609bce4f02ee7cd55 100644 --- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py +++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py @@ -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"]: