Merge pull request #45618 from frappe/mergify/bp/version-14-hotfix/pr-45612

fix: posting_date to posting_datetime in stock related queries (backport #45612)
This commit is contained in:
rohitwaghchaure
2025-01-31 14:43:40 +05:30
committed by GitHub
3 changed files with 14 additions and 12 deletions

View File

@@ -4,7 +4,7 @@
import frappe
from frappe import _
from frappe.utils import cint, flt, get_table_name, getdate
from frappe.utils import cint, flt, get_datetime, get_table_name, getdate
from pypika import functions as fn
from erpnext.stock.doctype.warehouse.warehouse import apply_warehouse_filter
@@ -99,6 +99,8 @@ def get_stock_ledger_entries(filters):
if not filters.get("to_date"):
frappe.throw(_("'To Date' is required"))
to_date = get_datetime(filters.get("to_date") + " 23:59:59")
sle = frappe.qb.DocType("Stock Ledger Entry")
query = (
frappe.qb.from_(sle)
@@ -113,7 +115,7 @@ def get_stock_ledger_entries(filters):
(sle.docstatus < 2)
& (sle.is_cancelled == 0)
& (fn.IfNull(sle.batch_no, "") != "")
& (sle.posting_date <= filters["to_date"])
& (sle.posting_datetime <= to_date)
)
.groupby(sle.voucher_no, sle.batch_no, sle.item_code, sle.warehouse)
.orderby(sle.item_code, sle.warehouse)

View File

@@ -6,7 +6,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
@@ -387,6 +387,7 @@ class FIFOSlots:
def __get_stock_ledger_entries(self) -> list[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)
@@ -411,7 +412,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)
)
)
@@ -428,7 +429,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)

View File

@@ -5,7 +5,7 @@
import frappe
from frappe import _
from frappe.query_builder.functions import CombineDatetime
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
@@ -264,6 +264,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)
@@ -286,12 +289,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)
)