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 bb68468619b..55facceae13 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 @@ -241,6 +241,7 @@ class SerialandBatchBundle(Document): "check_serial_nos": True, "serial_nos": serial_nos, } + if self.voucher_type == "POS Invoice": kwargs["ignore_voucher_nos"] = [self.voucher_no] @@ -1976,9 +1977,9 @@ def get_available_serial_nos(kwargs): order_by = "creation" if kwargs.based_on == "LIFO": - order_by = "creation desc" + order_by = "creation" elif kwargs.based_on == "Expiry": - order_by = "amc_expiry_date asc" + order_by = "amc_expiry_date" filters = {"item_code": kwargs.item_code} @@ -2025,7 +2026,12 @@ def get_serial_nos_based_on_filters(filters, fields, order_by, kwargs): doctype = frappe.qb.DocType("Serial No") order_by_column = getattr(doctype, order_by) - query = frappe.qb.from_(doctype).orderby(order_by_column).limit(cint(kwargs.qty) or 10000000).for_update() + query = frappe.qb.from_(doctype).limit(cint(kwargs.qty) or 10000000).for_update() + + if kwargs.based_on == "LIFO": + query = query.orderby(order_by_column, order=frappe.query_builder.Order.desc) + else: + query = query.orderby(order_by_column) for key, value in filters.items(): column = getattr(doctype, key)