perf: timeout error (backport #43154) (#43158)

perf: timeout error (#43154)

(cherry picked from commit 1bf60248d9)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
This commit is contained in:
mergify[bot]
2024-09-10 23:06:38 +05:30
committed by GitHub
parent cd57e009dd
commit c9f49caecc
2 changed files with 29 additions and 5 deletions

View File

@@ -1879,6 +1879,10 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
const fields = ["discount_percentage",
"discount_amount", "margin_rate_or_amount", "rate_with_margin"];
if (!item) {
return;
}
if(item.remove_free_item) {
let items = [];

View File

@@ -1558,13 +1558,14 @@ def get_serial_nos_based_on_posting_date(kwargs, ignore_serial_nos):
serial_nos = set()
data = get_stock_ledgers_for_serial_nos(kwargs)
bundle_wise_serial_nos = get_bundle_wise_serial_nos(data)
for d in data:
if d.serial_and_batch_bundle:
sns = get_serial_nos_from_bundle(d.serial_and_batch_bundle, kwargs.get("serial_nos", []))
if d.actual_qty > 0:
serial_nos.update(sns)
else:
serial_nos.difference_update(sns)
if sns := bundle_wise_serial_nos.get(d.serial_and_batch_bundle):
if d.actual_qty > 0:
serial_nos.update(sns)
else:
serial_nos.difference_update(sns)
elif 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
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:
"""Returns a list of `Serial No` reserved in POS Invoice and Stock Reservation Entry."""