Skip to content

Commit a5cc307

Browse files
fix: BOM name issue (backport frappe#44586) (frappe#44589)
fix: BOM name issue (frappe#44586) (cherry picked from commit d871e21) Co-authored-by: rohitwaghchaure <[email protected]>
1 parent 0b26827 commit a5cc307

File tree

2 files changed

+21
-27
lines changed

2 files changed

+21
-27
lines changed

erpnext/manufacturing/doctype/bom/bom.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -253,15 +253,15 @@ frappe.ui.form.on("BOM", {
253253
};
254254
},
255255
});
256-
257-
fields.push({
258-
fieldtype: "Check",
259-
label: __("Use Multi-Level BOM"),
260-
fieldname: "use_multi_level_bom",
261-
default: 1,
262-
});
263256
}
264257

258+
fields.push({
259+
fieldtype: "Check",
260+
label: __("Use Multi-Level BOM"),
261+
fieldname: "use_multi_level_bom",
262+
default: 1,
263+
});
264+
265265
if (!skip_qty_field) {
266266
fields.push({
267267
fieldtype: "Float",

erpnext/manufacturing/doctype/bom/bom.py

+14-20
Original file line numberDiff line numberDiff line change
@@ -179,15 +179,7 @@ def autoname(self):
179179
"BOM", filters={"name": search_key, "amended_from": ["is", "not set"]}, pluck="name"
180180
)
181181

182-
if not existing_boms:
183-
existing_boms = frappe.get_all(
184-
"BOM", filters={"name": ("like", search_key), "amended_from": ["is", "not set"]}, pluck="name"
185-
)
186-
187-
if existing_boms:
188-
index = self.get_next_version_index(existing_boms)
189-
else:
190-
index = 1
182+
index = self.get_index_for_bom(existing_boms)
191183

192184
prefix = self.doctype
193185
suffix = "%.3i" % index # convert index to string (1 -> "001")
@@ -205,21 +197,23 @@ def autoname(self):
205197
name = f"{prefix}-{truncated_item_name}-{suffix}"
206198

207199
if frappe.db.exists("BOM", name):
208-
conflicting_bom = frappe.get_doc("BOM", name)
209-
210-
if conflicting_bom.item != self.item:
211-
msg = _("A BOM with name {0} already exists for item {1}.").format(
212-
frappe.bold(name), frappe.bold(conflicting_bom.item)
213-
)
200+
existing_boms = frappe.get_all(
201+
"BOM", filters={"name": ("like", search_key), "amended_from": ["is", "not set"]}, pluck="name"
202+
)
214203

215-
frappe.throw(
216-
_("{0}{1} Did you rename the item? Please contact Administrator / Tech support").format(
217-
msg, "<br>"
218-
)
219-
)
204+
index = self.get_index_for_bom(existing_boms)
205+
suffix = "%.3i" % index
206+
name = f"{prefix}-{self.item}-{suffix}"
220207

221208
self.name = name
222209

210+
def get_index_for_bom(self, existing_boms):
211+
index = 1
212+
if existing_boms:
213+
index = self.get_next_version_index(existing_boms)
214+
215+
return index
216+
223217
@staticmethod
224218
def get_next_version_index(existing_boms: list[str]) -> int:
225219
# split by "/" and "-"

0 commit comments

Comments
 (0)