From cd5174e42343a1a271fbae791b4d7a5a7f15330e Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Thu, 30 Jan 2025 15:53:40 +0530 Subject: [PATCH] fix: posting_date to posting_datetime in stock related queries (cherry picked from commit e61ab481451f5bf6753462d976fb1312685eae4a) --- .../batch_wise_balance_history.py | 4 +++- erpnext/stock/report/stock_ageing/stock_ageing.py | 7 ++++--- erpnext/stock/report/stock_ledger/stock_ledger.py | 13 ++++++------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py index 0bb9d40581a..df466ed8436 100644 --- a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py +++ b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py @@ -151,6 +151,8 @@ def get_stock_ledger_entries_for_batch_bundle(filters): sle = frappe.qb.DocType("Stock Ledger Entry") batch_package = frappe.qb.DocType("Serial and Batch Entry") + to_date = get_datetime(filters.to_date + " 23:59:59") + query = ( frappe.qb.from_(sle) .inner_join(batch_package) @@ -166,7 +168,7 @@ def get_stock_ledger_entries_for_batch_bundle(filters): (sle.docstatus < 2) & (sle.is_cancelled == 0) & (sle.has_batch_no == 1) - & (sle.posting_date <= filters["to_date"]) + & (sle.posting_datetime <= to_date) ) .groupby(sle.voucher_no, batch_package.batch_no, batch_package.warehouse) .orderby(sle.item_code, sle.warehouse) diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py index feaa0ba766d..cc597e14196 100644 --- a/erpnext/stock/report/stock_ageing/stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/stock_ageing.py @@ -7,7 +7,7 @@ from operator import itemgetter import frappe from frappe import _ -from frappe.utils import cint, date_diff, flt +from frappe.utils import cint, date_diff, flt, get_datetime from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos @@ -424,6 +424,7 @@ class FIFOSlots: def __get_stock_ledger_entries(self) -> Iterator[dict]: sle = frappe.qb.DocType("Stock Ledger Entry") item = self.__get_item_query() # used as derived table in sle query + to_date = get_datetime(self.filters.get("to_date") + " 23:59:59") sle_query = ( frappe.qb.from_(sle) @@ -450,7 +451,7 @@ class FIFOSlots: .where( (sle.item_code == item.name) & (sle.company == self.filters.get("company")) - & (sle.posting_date <= self.filters.get("to_date")) + & (sle.posting_datetime <= to_date) & (sle.is_cancelled != 1) ) ) @@ -467,7 +468,7 @@ class FIFOSlots: if warehouses: sle_query = sle_query.where(sle.warehouse.isin(warehouses)) - sle_query = sle_query.orderby(sle.posting_date, sle.posting_time, sle.creation, sle.actual_qty) + sle_query = sle_query.orderby(sle.posting_datetime, sle.creation) return sle_query.run(as_dict=True, as_iterator=True) diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py index e56c499d767..391395503b0 100644 --- a/erpnext/stock/report/stock_ledger/stock_ledger.py +++ b/erpnext/stock/report/stock_ledger/stock_ledger.py @@ -8,7 +8,7 @@ from collections import defaultdict import frappe from frappe import _ from frappe.query_builder.functions import CombineDatetime, Sum -from frappe.utils import cint, flt +from frappe.utils import cint, flt, get_datetime from erpnext.stock.doctype.inventory_dimension.inventory_dimension import get_inventory_dimensions from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos @@ -367,6 +367,9 @@ def get_columns(filters): def get_stock_ledger_entries(filters, items): + from_date = get_datetime(filters.from_date + " 00:00:00") + to_date = get_datetime(filters.to_date + " 23:59:59") + sle = frappe.qb.DocType("Stock Ledger Entry") query = ( frappe.qb.from_(sle) @@ -390,12 +393,8 @@ def get_stock_ledger_entries(filters, items): sle.serial_no, sle.project, ) - .where( - (sle.docstatus < 2) - & (sle.is_cancelled == 0) - & (sle.posting_date[filters.from_date : filters.to_date]) - ) - .orderby(CombineDatetime(sle.posting_date, sle.posting_time)) + .where((sle.docstatus < 2) & (sle.is_cancelled == 0) & (sle.posting_datetime[from_date:to_date])) + .orderby(sle.posting_datetime) .orderby(sle.creation) )