diff --git a/erpnext/stock/report/available_batch_report/available_batch_report.py b/erpnext/stock/report/available_batch_report/available_batch_report.py index 07fcf36c827c51c29d4dfba066b02eeb7da0809f..f9ae94d2579ad3cecc3162587ff24dd8df74b123 100644 --- a/erpnext/stock/report/available_batch_report/available_batch_report.py +++ b/erpnext/stock/report/available_batch_report/available_batch_report.py @@ -54,6 +54,12 @@ def get_columns(filters): "width": 150, "options": "Batch", }, + { + "label": _("Expiry Date"), + "fieldname": "expiry_date", + "fieldtype": "Date", + "width": 120, + }, {"label": _("Balance Qty"), "fieldname": "balance_qty", "fieldtype": "Float", "width": 150}, ] ) @@ -97,6 +103,7 @@ def get_batchwise_data_from_stock_ledger(filters): table.item_code, table.batch_no, table.warehouse, + batch.expiry_date, Sum(table.actual_qty).as_("balance_qty"), ) .where(table.is_cancelled == 0) @@ -127,6 +134,7 @@ def get_batchwise_data_from_serial_batch_bundle(batchwise_data, filters): table.item_code, ch_table.batch_no, table.warehouse, + batch.expiry_date, Sum(ch_table.qty).as_("balance_qty"), ) .where((table.is_cancelled == 0) & (table.docstatus == 1)) @@ -152,10 +160,14 @@ def get_query_based_on_filters(query, batch, table, filters): if filters.batch_no: query = query.where(batch.name == filters.batch_no) - if not filters.include_expired_batches: - query = query.where((batch.expiry_date >= today()) | (batch.expiry_date.isnull())) - if filters.to_date == today(): - query = query.where(batch.batch_qty > 0) + if filters.to_date == today(): + if not filters.include_expired_batches: + query = query.where((batch.expiry_date >= today()) | (batch.expiry_date.isnull())) + + query = query.where(batch.batch_qty > 0) + + else: + query = query.where(table.posting_date <= filters.to_date) if filters.warehouse: lft, rgt = frappe.db.get_value("Warehouse", filters.warehouse, ["lft", "rgt"])