feat: force cost center renaming from cost center form (#21503)
This commit is contained in:
parent
090e6093f2
commit
a8779872ee
@ -18,7 +18,7 @@ frappe.ui.form.on('Cost Center', {
|
|||||||
},
|
},
|
||||||
refresh: function(frm) {
|
refresh: function(frm) {
|
||||||
if (!frm.is_new()) {
|
if (!frm.is_new()) {
|
||||||
frm.add_custom_button(__('Update Cost Center Number'), function () {
|
frm.add_custom_button(__('Update Cost Center Name / Number'), function () {
|
||||||
frm.trigger("update_cost_center_number");
|
frm.trigger("update_cost_center_number");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -47,35 +47,45 @@ frappe.ui.form.on('Cost Center', {
|
|||||||
},
|
},
|
||||||
update_cost_center_number: function(frm) {
|
update_cost_center_number: function(frm) {
|
||||||
var d = new frappe.ui.Dialog({
|
var d = new frappe.ui.Dialog({
|
||||||
title: __('Update Cost Center Number'),
|
title: __('Update Cost Center Name / Number'),
|
||||||
fields: [
|
fields: [
|
||||||
{
|
{
|
||||||
"label": 'Cost Center Number',
|
"label": "Cost Center Name",
|
||||||
|
"fieldname": "cost_center_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"reqd": 1,
|
||||||
|
"default": frm.doc.cost_center_name
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Cost Center Number",
|
||||||
"fieldname": "cost_center_number",
|
"fieldname": "cost_center_number",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"reqd": 1
|
"reqd": 1,
|
||||||
|
"default": frm.doc.cost_center_number
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
primary_action: function() {
|
primary_action: function() {
|
||||||
var data = d.get_values();
|
var data = d.get_values();
|
||||||
if(data.cost_center_number === frm.doc.cost_center_number) {
|
if(data.cost_center_name === frm.doc.cost_center_name && data.cost_center_number === frm.doc.cost_center_number) {
|
||||||
d.hide();
|
d.hide();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
frappe.dom.freeze();
|
||||||
frappe.call({
|
frappe.call({
|
||||||
method: "erpnext.accounts.utils.update_number_field",
|
method: "erpnext.accounts.utils.update_cost_center",
|
||||||
args: {
|
args: {
|
||||||
doctype_name: frm.doc.doctype,
|
docname: frm.doc.name,
|
||||||
name: frm.doc.name,
|
cost_center_name: data.cost_center_name,
|
||||||
field_name: d.fields[0].fieldname,
|
cost_center_number: data.cost_center_number,
|
||||||
number_value: data.cost_center_number,
|
|
||||||
company: frm.doc.company
|
company: frm.doc.company
|
||||||
},
|
},
|
||||||
callback: function(r) {
|
callback: function(r) {
|
||||||
|
frappe.dom.unfreeze();
|
||||||
if(!r.exc) {
|
if(!r.exc) {
|
||||||
if(r.message) {
|
if(r.message) {
|
||||||
frappe.set_route("Form", "Cost Center", r.message);
|
frappe.set_route("Form", "Cost Center", r.message);
|
||||||
} else {
|
} else {
|
||||||
|
me.frm.set_value("cost_center_name", data.cost_center_name);
|
||||||
me.frm.set_value("cost_center_number", data.cost_center_number);
|
me.frm.set_value("cost_center_number", data.cost_center_number);
|
||||||
}
|
}
|
||||||
d.hide();
|
d.hide();
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
"actions": [],
|
"actions": [],
|
||||||
"allow_copy": 1,
|
"allow_copy": 1,
|
||||||
"allow_import": 1,
|
"allow_import": 1,
|
||||||
"allow_rename": 1,
|
|
||||||
"creation": "2013-01-23 19:57:17",
|
"creation": "2013-01-23 19:57:17",
|
||||||
"description": "Track separate Income and Expense for product verticals or divisions.",
|
"description": "Track separate Income and Expense for product verticals or divisions.",
|
||||||
"doctype": "DocType",
|
"doctype": "DocType",
|
||||||
@ -126,7 +125,7 @@
|
|||||||
"idx": 1,
|
"idx": 1,
|
||||||
"is_tree": 1,
|
"is_tree": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-03-18 17:59:04.321637",
|
"modified": "2020-04-29 16:09:30.025214",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Accounts",
|
"module": "Accounts",
|
||||||
"name": "Cost Center",
|
"name": "Cost Center",
|
||||||
|
|||||||
@ -817,48 +817,37 @@ def create_payment_gateway_account(gateway):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def update_number_field(doctype_name, name, field_name, number_value, company):
|
def update_cost_center(docname, cost_center_name, cost_center_number, company):
|
||||||
'''
|
'''
|
||||||
doctype_name = Name of the DocType
|
|
||||||
name = Docname being referred
|
|
||||||
field_name = Name of the field thats holding the 'number' attribute
|
|
||||||
number_value = Numeric value entered in field_name
|
|
||||||
|
|
||||||
Stores the number entered in the dialog to the DocType's field.
|
|
||||||
|
|
||||||
Renames the document by adding the number as a prefix to the current name and updates
|
Renames the document by adding the number as a prefix to the current name and updates
|
||||||
all transaction where it was present.
|
all transaction where it was present.
|
||||||
'''
|
'''
|
||||||
doc_title = frappe.db.get_value(doctype_name, name, frappe.scrub(doctype_name)+"_name")
|
validate_field_number("Cost Center", docname, cost_center_number, company, "cost_center_number")
|
||||||
|
|
||||||
validate_field_number(doctype_name, name, number_value, company, field_name)
|
if cost_center_number:
|
||||||
|
frappe.db.set_value("Cost Center", docname, "cost_center_number", cost_center_number.strip())
|
||||||
|
else:
|
||||||
|
frappe.db.set_value("Cost Center", docname, "cost_center_number", "")
|
||||||
|
|
||||||
frappe.db.set_value(doctype_name, name, field_name, number_value)
|
frappe.db.set_value("Cost Center", docname, "cost_center_name", cost_center_name.strip())
|
||||||
|
|
||||||
if doc_title[0].isdigit():
|
new_name = get_autoname_with_number(cost_center_number, cost_center_name, docname, company)
|
||||||
separator = " - " if " - " in doc_title else " "
|
if docname != new_name:
|
||||||
doc_title = doc_title.split(separator, 1)[1]
|
frappe.rename_doc("Cost Center", docname, new_name, force=1)
|
||||||
|
|
||||||
frappe.db.set_value(doctype_name, name, frappe.scrub(doctype_name)+"_name", doc_title)
|
|
||||||
|
|
||||||
new_name = get_autoname_with_number(number_value, doc_title, name, company)
|
|
||||||
|
|
||||||
if name != new_name:
|
|
||||||
frappe.rename_doc(doctype_name, name, new_name)
|
|
||||||
return new_name
|
return new_name
|
||||||
|
|
||||||
def validate_field_number(doctype_name, name, number_value, company, field_name):
|
def validate_field_number(doctype_name, docname, number_value, company, field_name):
|
||||||
''' Validate if the number entered isn't already assigned to some other document. '''
|
''' Validate if the number entered isn't already assigned to some other document. '''
|
||||||
if number_value:
|
if number_value:
|
||||||
|
filters = {field_name: number_value, "name": ["!=", docname]}
|
||||||
if company:
|
if company:
|
||||||
doctype_with_same_number = frappe.db.get_value(doctype_name,
|
filters["company"] = company
|
||||||
{field_name: number_value, "company": company, "name": ["!=", name]})
|
|
||||||
else:
|
doctype_with_same_number = frappe.db.get_value(doctype_name, filters)
|
||||||
doctype_with_same_number = frappe.db.get_value(doctype_name,
|
|
||||||
{field_name: number_value, "name": ["!=", name]})
|
|
||||||
if doctype_with_same_number:
|
if doctype_with_same_number:
|
||||||
frappe.throw(_("{0} Number {1} already used in account {2}")
|
frappe.throw(_("{0} Number {1} is already used in {2} {3}")
|
||||||
.format(doctype_name, number_value, doctype_with_same_number))
|
.format(doctype_name, number_value, doctype_name.lower(), doctype_with_same_number))
|
||||||
|
|
||||||
def get_autoname_with_number(number_value, doc_title, name, company):
|
def get_autoname_with_number(number_value, doc_title, name, company):
|
||||||
''' append title with prefix as number and suffix as company's abbreviation separated by '-' '''
|
''' append title with prefix as number and suffix as company's abbreviation separated by '-' '''
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user