fix: BOM name issue (backport #44586) (#44589)

fix: BOM name issue (#44586)

(cherry picked from commit d871e21a40)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
(cherry picked from commit a5cc307417)

# Conflicts:
#	erpnext/manufacturing/doctype/bom/bom.py
This commit is contained in:
mergify[bot]
2024-12-07 12:58:34 +05:30
committed by Mergify
parent 1d158d58f6
commit 408a09233b
2 changed files with 24 additions and 11 deletions

View File

@@ -250,6 +250,13 @@ frappe.ui.form.on("BOM", {
});
}
fields.push({
fieldtype: "Check",
label: __("Use Multi-Level BOM"),
fieldname: "use_multi_level_bom",
default: 1,
});
if (!skip_qty_field) {
fields.push({
fieldtype: "Float",

View File

@@ -179,10 +179,14 @@ class BOM(WebsiteGenerator):
"BOM", filters={"name": ("like", search_key), "amended_from": ["is", "not set"]}, pluck="name"
)
<<<<<<< HEAD
if existing_boms:
index = self.get_next_version_index(existing_boms)
else:
index = 1
=======
index = self.get_index_for_bom(existing_boms)
>>>>>>> a5cc307417 (fix: BOM name issue (backport #44586) (#44589))
prefix = self.doctype
suffix = "%.3i" % index # convert index to string (1 -> "001")
@@ -200,21 +204,23 @@ class BOM(WebsiteGenerator):
name = f"{prefix}-{truncated_item_name}-{suffix}"
if frappe.db.exists("BOM", name):
conflicting_bom = frappe.get_doc("BOM", name)
existing_boms = frappe.get_all(
"BOM", filters={"name": ("like", search_key), "amended_from": ["is", "not set"]}, pluck="name"
)
if conflicting_bom.item != self.item:
msg = _("A BOM with name {0} already exists for item {1}.").format(
frappe.bold(name), frappe.bold(conflicting_bom.item)
)
frappe.throw(
_("{0}{1} Did you rename the item? Please contact Administrator / Tech support").format(
msg, "<br>"
)
)
index = self.get_index_for_bom(existing_boms)
suffix = "%.3i" % index
name = f"{prefix}-{self.item}-{suffix}"
self.name = name
def get_index_for_bom(self, existing_boms):
index = 1
if existing_boms:
index = self.get_next_version_index(existing_boms)
return index
@staticmethod
def get_next_version_index(existing_boms: list[str]) -> int:
# split by "/" and "-"