diff --git a/setup/doctype/company/company.js b/setup/doctype/company/company.js index ca3c93b49bf..d023f8df49a 100644 --- a/setup/doctype/company/company.js +++ b/setup/doctype/company/company.js @@ -2,14 +2,53 @@ // License: GNU General Public License v3. See license.txt cur_frm.cscript.refresh = function(doc, cdt, cdn) { - if(doc.abbr && !doc.__islocal) - cur_frm.set_df_property("abbr", "read_only", 1) + if(doc.abbr && !doc.__islocal) { + cur_frm.set_df_property("abbr", "read_only", 1); + if(in_list(user_roles, "System Manager")) + cur_frm.add_custom_button("Replace Abbreviation", cur_frm.cscript.replace_abbr) + } if(!doc.__islocal) { cur_frm.toggle_enable("default_currency", !cur_frm.doc.__transactions_exist); } } +cur_frm.cscript.replace_abbr = function() { + var dialog = new wn.ui.Dialog({ + title: "Replace Abbr", + fields: [ + {"fieldtype": "Data", "label": "New Abbreviation", "fieldname": "new_abbr", + "reqd": 1 }, + {"fieldtype": "Button", "label": "Update", "fieldname": "update"}, + ] + }); + + dialog.fields_dict.update.$input.click(function() { + args = dialog.get_values(); + if(!args) return; + return wn.call({ + method: "setup.doctype.company.company.replace_abbr", + args: { + "company": cur_frm.doc.name, + "old": cur_frm.doc.abbr, + "new": args.new_abbr + }, + callback: function(r) { + if(r.exc) { + msgprint(wn._("There were errors.")); + return; + } else { + cur_frm.set_value("abbr", args.new_abbr); + } + dialog.hide(); + cur_frm.refresh(); + }, + btn: this + }) + }); + dialog.show(); +} + cur_frm.cscript.has_special_chars = function(t) { var iChars = "!@#$%^*+=-[]\\\';,/{}|\":<>?"; for (var i = 0; i < t.length; i++) { diff --git a/setup/doctype/company/company.py b/setup/doctype/company/company.py index 9746eb240ba..7da231031ea 100644 --- a/setup/doctype/company/company.py +++ b/setup/doctype/company/company.py @@ -5,9 +5,7 @@ from __future__ import unicode_literals import webnotes from webnotes import _, msgprint -from webnotes.utils import cstr, cint -from webnotes.model.doc import Document -from webnotes.model.code import get_obj +from webnotes.utils import cstr import webnotes.defaults sql = webnotes.conn.sql @@ -316,4 +314,19 @@ class DocType: where doctype='Global Defaults' and field='default_company' and value=%s""", (newdn, olddn)) - webnotes.defaults.clear_default("company", value=olddn) \ No newline at end of file + webnotes.defaults.clear_default("company", value=olddn) + +@webnotes.whitelist() +def replace_abbr(company, old, new): + webnotes.conn.set_value("Company", company, "abbr", new) + + def _rename_record(dt): + for d in webnotes.conn.sql("select name from `tab%s` where company=%s" % (dt, '%s'), company): + parts = d[0].split(" - ") + if parts[-1].lower() == old.lower(): + name_without_abbr = " - ".join(parts[:-1]) + webnotes.rename_doc(dt, d[0], name_without_abbr + " - " + new) + + for dt in ["Account", "Cost Center", "Warehouse"]: + _rename_record(dt) + webnotes.conn.commit() \ No newline at end of file diff --git a/stock/doctype/warehouse/warehouse.py b/stock/doctype/warehouse/warehouse.py index 476a6f64788..cfa278278d0 100644 --- a/stock/doctype/warehouse/warehouse.py +++ b/stock/doctype/warehouse/warehouse.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals import webnotes -from webnotes.utils import cint, flt, validate_email_add +from webnotes.utils import cint, validate_email_add from webnotes import msgprint, _ sql = webnotes.conn.sql @@ -115,8 +115,9 @@ class DocType: sql("delete from `tabStock Ledger Entry` where warehouse = %s", self.doc.name) def on_rename(self, newdn, olddn, merge=False): - webnotes.conn.set_value("Account", {"account_type": "Warehouse", "master_name": olddn}, - "master_name", newdn) + account = webnotes.conn.get_value("Account", {"account_type": "Warehouse", + "master_name": olddn}) + webnotes.conn.set_value("Account", account, "master_name", newdn) if merge: from stock.stock_ledger import update_entries_after