Merge pull request #33422 from rohitwaghchaure/fix-stock-entry-submit-performance
fix: timeout error while submitting stock entry
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index c28f45a..9f409d4 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -162,6 +162,7 @@
.where((sle.item_code == args.get("item_code")) & (sle.warehouse == args.get("warehouse")))
.orderby(CombineDatetime(sle.posting_date, sle.posting_time), order=Order.desc)
.orderby(sle.creation, order=Order.desc)
+ .limit(1)
.run()
)
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index e7f55e9..55a11a1 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -470,8 +470,10 @@
item_code = %(item_code)s
and warehouse = %(warehouse)s
and is_cancelled = 0
- and timestamp(posting_date, time_format(posting_time, %(time_format)s)) = timestamp(%(posting_date)s, time_format(%(posting_time)s, %(time_format)s))
-
+ and (
+ posting_date = %(posting_date)s and
+ time_format(posting_time, %(time_format)s) = time_format(%(posting_time)s, %(time_format)s)
+ )
order by
creation ASC
for update
@@ -1070,7 +1072,13 @@
and warehouse = %(warehouse)s
and is_cancelled = 0
{voucher_condition}
- and timestamp(posting_date, time_format(posting_time, %(time_format)s)) < timestamp(%(posting_date)s, time_format(%(posting_time)s, %(time_format)s))
+ and (
+ posting_date < %(posting_date)s or
+ (
+ posting_date = %(posting_date)s and
+ time_format(posting_time, %(time_format)s) < time_format(%(posting_time)s, %(time_format)s)
+ )
+ )
order by timestamp(posting_date, posting_time) desc, creation desc
limit 1
for update""".format(
@@ -1355,8 +1363,13 @@
and warehouse = %(warehouse)s
and voucher_no != %(voucher_no)s
and is_cancelled = 0
- and timestamp(posting_date, time_format(posting_time, %(time_format)s))
- > timestamp(%(posting_date)s, time_format(%(posting_time)s, %(time_format)s))
+ and (
+ posting_date > %(posting_date)s or
+ (
+ posting_date = %(posting_date)s and
+ time_format(posting_time, %(time_format)s) > time_format(%(posting_time)s, %(time_format)s)
+ )
+ )
{datetime_limit_condition}
""",
args,