Added Update Cost Center Number button and it's functionality
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.js b/erpnext/accounts/doctype/cost_center/cost_center.js
index cbc37ff..a5bcaf4 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.js
+++ b/erpnext/accounts/doctype/cost_center/cost_center.js
@@ -15,8 +15,57 @@
}
}
})
+ },
+ refresh: function(frm) {
+ if (!frm.is_new()) {
+ frm.add_custom_button(__('Update Cost Center Number'), function () {
+ frm.trigger("update_cost_center_number");
+ });
+ }
+ },
+ update_cost_center_number: function(frm) {
+ var d = new frappe.ui.Dialog({
+ title: __('Update Cost Center Number'),
+ fields: [
+ {
+ "label": 'Cost Center Number',
+ "fieldname": "cost_center_number",
+ "fieldtype": "Data",
+ "reqd": 1
+ }
+ ],
+ primary_action: function() {
+ var data = d.get_values();
+ if(data.cost_center_number === frm.doc.cost_center_number) {
+ d.hide();
+ return;
+ }
+ frappe.call({
+ method: "erpnext.accounts.doctype.cost_center.cost_center.update_number_field",
+ args: {
+ doctype_name: frm.doc.doctype,
+ name: frm.doc.name,
+ field_name: d.fields[0].fieldname,
+ field_value: data.cost_center_number,
+ company: frm.doc.company
+ },
+ callback: function(r) {
+ if(!r.exc) {
+ if(r.message) {
+ frappe.set_route("Form", "Cost Center", r.message);
+ } else {
+ me.set_value("cost_center_number", data.cost_center_number);
+ }
+ d.hide();
+ }
+ }
+ });
+ },
+ primary_action_label: __('Update')
+ });
+ d.show();
}
-})
+});
cur_frm.cscript.refresh = function(doc, cdt, cdn) {
var intro_txt = '';
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.json b/erpnext/accounts/doctype/cost_center/cost_center.json
index 9eddeec..4da21f1 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.json
+++ b/erpnext/accounts/doctype/cost_center/cost_center.json
@@ -1,5 +1,6 @@
{
"allow_copy": 1,
+ "allow_guest_to_view": 0,
"allow_import": 1,
"allow_rename": 1,
"autoname": "field:cost_center_name",
@@ -13,6 +14,7 @@
"editable_grid": 0,
"fields": [
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -38,9 +40,11 @@
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
+ "translatable": 0,
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -68,9 +72,42 @@
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
+ "translatable": 0,
"unique": 0
},
{
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "cost_center_number",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 1,
+ "label": "Cost Center Number",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -99,9 +136,11 @@
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
+ "translatable": 0,
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -130,9 +169,11 @@
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
+ "translatable": 0,
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -157,10 +198,12 @@
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
+ "translatable": 0,
"unique": 0,
"width": "50%"
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -188,9 +231,11 @@
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
+ "translatable": 0,
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -218,9 +263,11 @@
"reqd": 0,
"search_index": 1,
"set_only_once": 0,
+ "translatable": 0,
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -248,9 +295,11 @@
"reqd": 0,
"search_index": 1,
"set_only_once": 0,
+ "translatable": 0,
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -279,22 +328,23 @@
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
+ "translatable": 0,
"unique": 0
}
],
+ "has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"icon": "fa fa-money",
"idx": 1,
"image_view": 0,
"in_create": 0,
- "in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
- "modified": "2017-02-17 16:22:27.129572",
+ "modified": "2018-04-26 15:26:25.325778",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Cost Center",
@@ -302,7 +352,6 @@
"permissions": [
{
"amend": 0,
- "apply_user_permissions": 0,
"cancel": 0,
"create": 1,
"delete": 1,
@@ -322,7 +371,6 @@
},
{
"amend": 0,
- "apply_user_permissions": 0,
"cancel": 0,
"create": 0,
"delete": 0,
@@ -342,7 +390,6 @@
},
{
"amend": 0,
- "apply_user_permissions": 0,
"cancel": 0,
"create": 0,
"delete": 0,
@@ -362,7 +409,6 @@
},
{
"amend": 0,
- "apply_user_permissions": 0,
"cancel": 0,
"create": 0,
"delete": 0,
@@ -382,7 +428,6 @@
},
{
"amend": 0,
- "apply_user_permissions": 0,
"cancel": 0,
"create": 0,
"delete": 0,
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.py b/erpnext/accounts/doctype/cost_center/cost_center.py
index fe1e907..3fb1f75 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.py
+++ b/erpnext/accounts/doctype/cost_center/cost_center.py
@@ -4,6 +4,7 @@
from __future__ import unicode_literals
import frappe
from frappe import _
+from frappe.utils import cint, cstr
from frappe.utils.nestedset import NestedSet
class CostCenter(NestedSet):
@@ -66,4 +67,47 @@
" - ".join(newdn.split(" - ")[:-1]))
def on_doctype_update():
- frappe.db.add_index("Cost Center", ["lft", "rgt"])
\ No newline at end of file
+ frappe.db.add_index("Cost Center", ["lft", "rgt"])
+
+def get_doc_name_autoname(field_value, doc_title, name, company):
+ if company:
+ name_split=name.split("-")
+ parts = [doc_title.strip(), name_split[len(name_split)-1].strip()]
+ else:
+ parts = [doc_title.strip()]
+ if cstr(field_value).strip():
+ parts.insert(0, cstr(field_value).strip())
+ return ' - '.join(parts)
+
+def validate_field_number(doctype_name, name, field_value, company, field_name):
+ if field_value:
+ if company:
+ doctype_with_same_number = frappe.db.get_value(doctype_name,
+ {field_name: field_value, "company": company, "name": ["!=", name]})
+ else:
+ doctype_with_same_number = frappe.db.get_value(doctype_name,
+ {field_name: field_value, "name": ["!=", name]})
+ if doctype_with_same_number:
+ frappe.throw(_("{0} Number {1} already used in account {2}")
+ .format(doctype_name, field_value, doctype_with_same_number))
+
+@frappe.whitelist()
+def update_number_field(doctype_name, name, field_name, field_value, company):
+
+ doc_title = frappe.db.get_value(doctype_name, name, frappe.scrub(doctype_name)+"_name")
+
+ validate_field_number(doctype_name, name, field_value, company, field_name)
+
+ frappe.db.set_value(doctype_name, name, field_name, field_value)
+
+ if doc_title[0].isdigit():
+ separator = " - " if " - " in doc_title else " "
+ doc_title = doc_title.split(separator, 1)[1]
+
+ frappe.db.set_value(doctype_name, name, frappe.scrub(doctype_name)+"_name", doc_title)
+
+ new_name = get_doc_name_autoname(field_value, doc_title, name, company)
+
+ if name != new_name:
+ frappe.rename_doc(doctype_name, name, new_name)
+ return new_name
\ No newline at end of file