fix: slow stock transactions (backport #45025) (#45026)

* fix: slow stock transactions (#45025)

(cherry picked from commit e92af10f14)

# Conflicts:
#	erpnext/stock/stock_ledger.py

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
(cherry picked from commit b7509e326e)
This commit is contained in:
mergify[bot]
2025-01-01 15:29:06 +05:30
committed by Mergify
parent 76ea858e72
commit a85a103bad
2 changed files with 8 additions and 8 deletions

View File

@@ -80,7 +80,7 @@ def get_balance_qty_from_sle(item_code, warehouse):
balance_qty = frappe.db.sql( balance_qty = frappe.db.sql(
"""select qty_after_transaction from `tabStock Ledger Entry` """select qty_after_transaction from `tabStock Ledger Entry`
where item_code=%s and warehouse=%s and is_cancelled=0 where item_code=%s and warehouse=%s and is_cancelled=0
order by posting_date desc, posting_time desc, creation desc order by posting_datetime desc, creation desc
limit 1""", limit 1""",
(item_code, warehouse), (item_code, warehouse),
) )

View File

@@ -1263,7 +1263,7 @@ def get_previous_sle_of_current_voucher(args, operator="<", exclude_current_vouc
and ( and (
posting_datetime {operator} %(posting_datetime)s posting_datetime {operator} %(posting_datetime)s
) )
order by posting_date desc, posting_time desc, creation desc order by posting_datetime desc, creation desc
limit 1 limit 1
for update""", for update""",
{ {
@@ -1357,7 +1357,7 @@ def get_stock_ledger_entries(
where item_code = %(item_code)s where item_code = %(item_code)s
and is_cancelled = 0 and is_cancelled = 0
{conditions} {conditions}
order by posting_date {order}, posting_time {order}, creation {order} order by posting_datetime {order}, creation {order}
{limit} {for_update}""".format( {limit} {for_update}""".format(
conditions=conditions, conditions=conditions,
limit=limit or "", limit=limit or "",
@@ -1462,7 +1462,7 @@ def get_valuation_rate(
AND valuation_rate >= 0 AND valuation_rate >= 0
AND is_cancelled = 0 AND is_cancelled = 0
AND NOT (voucher_no = %s AND voucher_type = %s) AND NOT (voucher_no = %s AND voucher_type = %s)
order by posting_date desc, posting_time desc, name desc limit 1""", order by posting_datetime desc, creation desc limit 1""",
(item_code, warehouse, voucher_no, voucher_type), (item_code, warehouse, voucher_no, voucher_type),
) )
@@ -1711,8 +1711,8 @@ def get_future_sle_with_negative_qty(sle):
& (SLE.is_cancelled == 0) & (SLE.is_cancelled == 0)
& (SLE.qty_after_transaction < 0) & (SLE.qty_after_transaction < 0)
) )
.orderby(SLE.posting_date) .orderby(SLE.posting_datetime)
.orderby(SLE.posting_time) .orderby(SLE.creation)
.limit(1) .limit(1)
) )
@@ -1728,14 +1728,14 @@ def get_future_sle_with_negative_batch_qty(args):
with batch_ledger as ( with batch_ledger as (
select select
posting_date, posting_time, posting_datetime, voucher_type, voucher_no, posting_date, posting_time, posting_datetime, voucher_type, voucher_no,
sum(actual_qty) over (order by posting_date, posting_time, creation) as cumulative_total sum(actual_qty) over (order by posting_datetime, creation) as cumulative_total
from `tabStock Ledger Entry` from `tabStock Ledger Entry`
where where
item_code = %(item_code)s item_code = %(item_code)s
and warehouse = %(warehouse)s and warehouse = %(warehouse)s
and batch_no=%(batch_no)s and batch_no=%(batch_no)s
and is_cancelled = 0 and is_cancelled = 0
order by posting_date, posting_time, creation order by posting_datetime, creation
) )
select * from batch_ledger select * from batch_ledger
where where