mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-18 06:22:12 +00:00
perf: timeout error (#43154)
(cherry picked from commit 1bf60248d9)
Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
This commit is contained in:
@@ -1879,6 +1879,10 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
|
|||||||
const fields = ["discount_percentage",
|
const fields = ["discount_percentage",
|
||||||
"discount_amount", "margin_rate_or_amount", "rate_with_margin"];
|
"discount_amount", "margin_rate_or_amount", "rate_with_margin"];
|
||||||
|
|
||||||
|
if (!item) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(item.remove_free_item) {
|
if(item.remove_free_item) {
|
||||||
let items = [];
|
let items = [];
|
||||||
|
|
||||||
|
|||||||
@@ -1558,13 +1558,14 @@ def get_serial_nos_based_on_posting_date(kwargs, ignore_serial_nos):
|
|||||||
serial_nos = set()
|
serial_nos = set()
|
||||||
data = get_stock_ledgers_for_serial_nos(kwargs)
|
data = get_stock_ledgers_for_serial_nos(kwargs)
|
||||||
|
|
||||||
|
bundle_wise_serial_nos = get_bundle_wise_serial_nos(data)
|
||||||
for d in data:
|
for d in data:
|
||||||
if d.serial_and_batch_bundle:
|
if d.serial_and_batch_bundle:
|
||||||
sns = get_serial_nos_from_bundle(d.serial_and_batch_bundle, kwargs.get("serial_nos", []))
|
if sns := bundle_wise_serial_nos.get(d.serial_and_batch_bundle):
|
||||||
if d.actual_qty > 0:
|
if d.actual_qty > 0:
|
||||||
serial_nos.update(sns)
|
serial_nos.update(sns)
|
||||||
else:
|
else:
|
||||||
serial_nos.difference_update(sns)
|
serial_nos.difference_update(sns)
|
||||||
|
|
||||||
elif d.serial_no:
|
elif d.serial_no:
|
||||||
sns = get_serial_nos(d.serial_no)
|
sns = get_serial_nos(d.serial_no)
|
||||||
@@ -1581,6 +1582,25 @@ def get_serial_nos_based_on_posting_date(kwargs, ignore_serial_nos):
|
|||||||
return serial_nos
|
return serial_nos
|
||||||
|
|
||||||
|
|
||||||
|
def get_bundle_wise_serial_nos(data):
|
||||||
|
bundle_wise_serial_nos = defaultdict(list)
|
||||||
|
bundles = [d.serial_and_batch_bundle for d in data if d.serial_and_batch_bundle]
|
||||||
|
if not bundles:
|
||||||
|
return bundle_wise_serial_nos
|
||||||
|
|
||||||
|
bundle_data = frappe.get_all(
|
||||||
|
"Serial and Batch Entry",
|
||||||
|
fields=["serial_no", "parent"],
|
||||||
|
filters={"parent": ("in", bundles), "docstatus": 1, "serial_no": ("is", "set")},
|
||||||
|
)
|
||||||
|
|
||||||
|
for d in bundle_data:
|
||||||
|
if d.parent:
|
||||||
|
bundle_wise_serial_nos[d.parent].append(d.serial_no)
|
||||||
|
|
||||||
|
return bundle_wise_serial_nos
|
||||||
|
|
||||||
|
|
||||||
def get_reserved_serial_nos(kwargs) -> list:
|
def get_reserved_serial_nos(kwargs) -> list:
|
||||||
"""Returns a list of `Serial No` reserved in POS Invoice and Stock Reservation Entry."""
|
"""Returns a list of `Serial No` reserved in POS Invoice and Stock Reservation Entry."""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user