Override after_rename method to fetch cost center number on changing from title
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.py b/erpnext/accounts/doctype/cost_center/cost_center.py
index 3fb1f75..24af0ce 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.py
+++ b/erpnext/accounts/doctype/cost_center/cost_center.py
@@ -63,8 +63,25 @@
super(CostCenter, self).after_rename(olddn, newdn, merge)
if not merge:
- frappe.db.set_value("Cost Center", newdn, "cost_center_name",
- " - ".join(newdn.split(" - ")[:-1]))
+ new_cost_center = frappe.db.get_value("Cost Center", newdn, ["cost_center_name", "cost_center_number"], as_dict=1)
+
+ # exclude company abbr
+ new_parts = newdn.split(" - ")[:-1]
+ # update cost center number and remove from parts
+ if new_parts[0][0].isdigit():
+ if len(new_parts) == 1:
+ new_parts = newdn.split(" ")
+ if new_cost_center.cost_center_number != new_parts[0]:
+ validate_field_number("Cost Center", self.name, new_parts[0], self.company, "cost_center_number")
+ self.cost_center_number = new_parts[0]
+ self.db_set("cost_center_number", new_parts[0])
+ new_parts = new_parts[1:]
+
+ # update cost center name
+ cost_center_name = " - ".join(new_parts)
+ if new_cost_center.cost_center_name != cost_center_name:
+ self.cost_center_name = cost_center_name
+ self.db_set("cost_center_name", cost_center_name)
def on_doctype_update():
frappe.db.add_index("Cost Center", ["lft", "rgt"])