From 6ba24912c32420786165f496c98b14684b54c919 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Mon, 10 Nov 2025 16:35:36 +0530 Subject: [PATCH 1/3] perf: serial no creation (cherry picked from commit 19a9497273c39b136459c883ab839de7e34f88c4) # Conflicts: # erpnext/stock/serial_batch_bundle.py --- erpnext/stock/serial_batch_bundle.py | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/serial_batch_bundle.py b/erpnext/stock/serial_batch_bundle.py index 890899c7343..c5a8feb3e74 100644 --- a/erpnext/stock/serial_batch_bundle.py +++ b/erpnext/stock/serial_batch_bundle.py @@ -2,7 +2,7 @@ from collections import defaultdict import frappe from frappe import _, bold -from frappe.model.naming import make_autoname +from frappe.model.naming import NamingSeries, make_autoname, parse_naming_series from frappe.query_builder import Case from frappe.query_builder.functions import CombineDatetime, Sum, Timestamp from frappe.utils import add_days, cint, cstr, flt, get_link_to_form, now, nowtime, today @@ -1334,8 +1334,29 @@ class SerialBatchCreation: if self.get("voucher_no"): voucher_no = self.get("voucher_no") +<<<<<<< HEAD +======= + voucher_type = "" + if self.get("voucher_type"): + voucher_type = self.get("voucher_type") + + obj = NamingSeries(self.serial_no_series) + current_value = obj.get_current_value() + + def get_series(partial_series, digits): + return f"{current_value:0{digits}d}" + + posting_date = frappe.db.get_value( + voucher_type, + voucher_no, + "posting_date", + ) + +>>>>>>> 19a9497273 (perf: serial no creation) for _i in range(abs(cint(self.actual_qty))): - serial_no = make_autoname(self.serial_no_series, "Serial No") + current_value += 1 + serial_no = parse_naming_series(self.serial_no_series, number_generator=get_series) + sr_nos.append(serial_no) serial_nos_details.append( ( @@ -1376,6 +1397,8 @@ class SerialBatchCreation: frappe.db.bulk_insert("Serial No", fields=fields, values=set(serial_nos_details)) + obj.update_counter(current_value) + return sr_nos From 4ec25ac82e411ac3eb3fc8148fd80883adfa4010 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Tue, 11 Nov 2025 10:47:06 +0530 Subject: [PATCH 2/3] chore: fix conflicts Removed unused voucher_no and posting_date retrieval. --- erpnext/stock/serial_batch_bundle.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/erpnext/stock/serial_batch_bundle.py b/erpnext/stock/serial_batch_bundle.py index c5a8feb3e74..4a04272a580 100644 --- a/erpnext/stock/serial_batch_bundle.py +++ b/erpnext/stock/serial_batch_bundle.py @@ -1334,8 +1334,6 @@ class SerialBatchCreation: if self.get("voucher_no"): voucher_no = self.get("voucher_no") -<<<<<<< HEAD -======= voucher_type = "" if self.get("voucher_type"): voucher_type = self.get("voucher_type") @@ -1346,13 +1344,6 @@ class SerialBatchCreation: def get_series(partial_series, digits): return f"{current_value:0{digits}d}" - posting_date = frappe.db.get_value( - voucher_type, - voucher_no, - "posting_date", - ) - ->>>>>>> 19a9497273 (perf: serial no creation) for _i in range(abs(cint(self.actual_qty))): current_value += 1 serial_no = parse_naming_series(self.serial_no_series, number_generator=get_series) From 87f3ba579428f70dbd523cbc17f83a275e232f77 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Tue, 11 Nov 2025 10:51:19 +0530 Subject: [PATCH 3/3] chore: fix linters issue --- erpnext/stock/serial_batch_bundle.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/erpnext/stock/serial_batch_bundle.py b/erpnext/stock/serial_batch_bundle.py index 4a04272a580..db9cf422b5f 100644 --- a/erpnext/stock/serial_batch_bundle.py +++ b/erpnext/stock/serial_batch_bundle.py @@ -1334,10 +1334,6 @@ class SerialBatchCreation: if self.get("voucher_no"): voucher_no = self.get("voucher_no") - voucher_type = "" - if self.get("voucher_type"): - voucher_type = self.get("voucher_type") - obj = NamingSeries(self.serial_no_series) current_value = obj.get_current_value()