Merge branch 'develop' of https://github.com/frappe/erpnext into cost_center_fix
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.js b/erpnext/accounts/doctype/cost_center/cost_center.js
index f341f78..ee23b1b 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.js
+++ b/erpnext/accounts/doctype/cost_center/cost_center.js
@@ -71,8 +71,13 @@
"label": "Cost Center Number",
"fieldname": "cost_center_number",
"fieldtype": "Data",
- "reqd": 1,
"default": frm.doc.cost_center_number
+ },
+ {
+ "label": __("Merge with existing"),
+ "fieldname": "merge",
+ "fieldtype": "Check",
+ "default": 0
}
],
primary_action: function() {
@@ -87,8 +92,9 @@
args: {
docname: frm.doc.name,
cost_center_name: data.cost_center_name,
- cost_center_number: data.cost_center_number,
- company: frm.doc.company
+ cost_center_number: cstr(data.cost_center_number),
+ company: frm.doc.company,
+ merge: data.merge
},
callback: function(r) {
frappe.dom.unfreeze();
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index 291aff3..645da34 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import frappe, erpnext
from frappe import _
-from frappe.utils import flt, fmt_money, getdate, formatdate
+from frappe.utils import flt, fmt_money, getdate, formatdate, cint
from frappe.model.document import Document
from frappe.model.naming import set_name_from_naming_options
from frappe.model.meta import get_field_precision
@@ -134,10 +134,17 @@
return self.cost_center_company[self.cost_center]
+ def _check_is_group():
+ return cint(frappe.get_cached_value('Cost Center', self.cost_center, 'is_group'))
+
if self.cost_center and _get_cost_center_company() != self.company:
frappe.throw(_("{0} {1}: Cost Center {2} does not belong to Company {3}")
.format(self.voucher_type, self.voucher_no, self.cost_center, self.company))
+ if self.cost_center and _check_is_group():
+ frappe.throw(_("""{0} {1}: Cost Center {2} is a group cost center and group cost centers cannot
+ be used in transactions""").format(self.voucher_type, self.voucher_no, frappe.bold(self.cost_center)))
+
def validate_party(self):
validate_party_frozen_disabled(self.party_type, self.party)
diff --git a/erpnext/accounts/report/account_balance/test_account_balance.py b/erpnext/accounts/report/account_balance/test_account_balance.py
index 5544fc4..b6ced31 100644
--- a/erpnext/accounts/report/account_balance/test_account_balance.py
+++ b/erpnext/accounts/report/account_balance/test_account_balance.py
@@ -61,7 +61,7 @@
debit_to = 'Debtors - _TC2',
income_account = 'Sales - _TC2',
expense_account = 'Cost of Goods Sold - _TC2',
- cost_center = '_Test Company 2 - _TC2')
+ cost_center = 'Main - _TC2')
diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
index f0274b4..2ff5b53 100644
--- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
@@ -63,7 +63,7 @@
debit_to = 'Debtors - _TC2',
income_account = 'Sales - _TC2',
expense_account = 'Cost of Goods Sold - _TC2',
- cost_center = '_Test Company 2 - _TC2',
+ cost_center = 'Main - _TC2',
do_not_save=1)
si.append('payment_schedule', dict(due_date=getdate(add_days(today(), 30)), invoice_portion=30.00, payment_amount=30))
@@ -83,14 +83,14 @@
def make_credit_note(docname):
create_sales_invoice(company="_Test Company 2",
- customer = '_Test Customer 2',
- currency = 'EUR',
- qty = -1,
- warehouse = 'Finished Goods - _TC2',
- debit_to = 'Debtors - _TC2',
- income_account = 'Sales - _TC2',
- expense_account = 'Cost of Goods Sold - _TC2',
- cost_center = '_Test Company 2 - _TC2',
- is_return = 1,
- return_against = docname)
+ customer = '_Test Customer 2',
+ currency = 'EUR',
+ qty = -1,
+ warehouse = 'Finished Goods - _TC2',
+ debit_to = 'Debtors - _TC2',
+ income_account = 'Sales - _TC2',
+ expense_account = 'Cost of Goods Sold - _TC2',
+ cost_center = 'Main - _TC2',
+ is_return = 1,
+ return_against = docname)
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index f6cd606..16146f4 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -837,7 +837,7 @@
pass
@frappe.whitelist()
-def update_cost_center(docname, cost_center_name, cost_center_number, company):
+def update_cost_center(docname, cost_center_name, cost_center_number, company, merge):
'''
Renames the document by adding the number as a prefix to the current name and updates
all transaction where it was present.
@@ -853,7 +853,7 @@
new_name = get_autoname_with_number(cost_center_number, cost_center_name, docname, company)
if docname != new_name:
- frappe.rename_doc("Cost Center", docname, new_name, force=1)
+ frappe.rename_doc("Cost Center", docname, new_name, force=1, merge=merge)
return new_name
def validate_field_number(doctype_name, docname, number_value, company, field_name):