fix: Validation for parent cost center (#19664)
* fix: Validation for parent cost center * fix: Minor modification in condition * fix: Update test cases for invalid cost center creation
This commit is contained in:
parent
5c2ba0ef9c
commit
7cdde93645
@ -18,6 +18,7 @@ class CostCenter(NestedSet):
|
||||
|
||||
def validate(self):
|
||||
self.validate_mandatory()
|
||||
self.validate_parent_cost_center()
|
||||
|
||||
def validate_mandatory(self):
|
||||
if self.cost_center_name != self.company and not self.parent_cost_center:
|
||||
@ -25,6 +26,12 @@ class CostCenter(NestedSet):
|
||||
elif self.cost_center_name == self.company and self.parent_cost_center:
|
||||
frappe.throw(_("Root cannot have a parent cost center"))
|
||||
|
||||
def validate_parent_cost_center(self):
|
||||
if self.parent_cost_center:
|
||||
if not frappe.db.get_value('Cost Center', self.parent_cost_center, 'is_group'):
|
||||
frappe.throw(_("{0} is not a group node. Please select a group node as parent cost center").format(
|
||||
frappe.bold(self.parent_cost_center)))
|
||||
|
||||
def convert_group_to_ledger(self):
|
||||
if self.check_if_child_exists():
|
||||
frappe.throw(_("Cannot convert Cost Center to ledger as it has child nodes"))
|
||||
|
@ -1,12 +1,26 @@
|
||||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
from __future__ import unicode_literals
|
||||
|
||||
|
||||
import unittest
|
||||
import frappe
|
||||
|
||||
test_records = frappe.get_test_records('Cost Center')
|
||||
|
||||
class TestCostCenter(unittest.TestCase):
|
||||
def test_cost_center_creation_against_child_node(self):
|
||||
|
||||
if not frappe.db.get_value('Cost Center', {'name': '_Test Cost Center 2 - _TC'}):
|
||||
frappe.get_doc(test_records[1]).insert()
|
||||
|
||||
cost_center = frappe.get_doc({
|
||||
'doctype': 'Cost Center',
|
||||
'cost_center_name': '_Test Cost Center 3',
|
||||
'parent_cost_center': '_Test Cost Center 2 - _TC',
|
||||
'is_group': 0,
|
||||
'company': '_Test Company'
|
||||
})
|
||||
|
||||
self.assertRaises(frappe.ValidationError, cost_center.save)
|
||||
|
||||
def create_cost_center(**args):
|
||||
args = frappe._dict(args)
|
||||
|
Loading…
x
Reference in New Issue
Block a user