mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-20 05:29:18 +00:00
Merge pull request #21105 from nextchamp-saqib/asset-cat-validation-v12
fix: no server side validations for accounts in asset category
This commit is contained in:
@@ -69,6 +69,7 @@ class TestAccount(unittest.TestCase):
|
|||||||
acc.account_name = "Accumulated Depreciation"
|
acc.account_name = "Accumulated Depreciation"
|
||||||
acc.parent_account = "Fixed Assets - _TC"
|
acc.parent_account = "Fixed Assets - _TC"
|
||||||
acc.company = "_Test Company"
|
acc.company = "_Test Company"
|
||||||
|
acc.account_type = "Accumulated Depreciation"
|
||||||
acc.insert()
|
acc.insert()
|
||||||
|
|
||||||
doc = frappe.get_doc("Account", "Securities and Deposits - _TC")
|
doc = frappe.get_doc("Account", "Securities and Deposits - _TC")
|
||||||
@@ -149,7 +150,7 @@ def _make_test_records(verbose):
|
|||||||
|
|
||||||
# fixed asset depreciation
|
# fixed asset depreciation
|
||||||
["_Test Fixed Asset", "Current Assets", 0, "Fixed Asset", None],
|
["_Test Fixed Asset", "Current Assets", 0, "Fixed Asset", None],
|
||||||
["_Test Accumulated Depreciations", "Current Assets", 0, None, None],
|
["_Test Accumulated Depreciations", "Current Assets", 0, "Accumulated Depreciation", None],
|
||||||
["_Test Depreciations", "Expenses", 0, None, None],
|
["_Test Depreciations", "Expenses", 0, None, None],
|
||||||
["_Test Gain/Loss on Asset Disposal", "Expenses", 0, None, None],
|
["_Test Gain/Loss on Asset Disposal", "Expenses", 0, None, None],
|
||||||
|
|
||||||
|
|||||||
@@ -11,12 +11,34 @@ from frappe.model.document import Document
|
|||||||
class AssetCategory(Document):
|
class AssetCategory(Document):
|
||||||
def validate(self):
|
def validate(self):
|
||||||
self.validate_finance_books()
|
self.validate_finance_books()
|
||||||
|
self.validate_accounts()
|
||||||
|
|
||||||
def validate_finance_books(self):
|
def validate_finance_books(self):
|
||||||
for d in self.finance_books:
|
for d in self.finance_books:
|
||||||
for field in ("Total Number of Depreciations", "Frequency of Depreciation"):
|
for field in ("Total Number of Depreciations", "Frequency of Depreciation"):
|
||||||
if cint(d.get(frappe.scrub(field)))<1:
|
if cint(d.get(frappe.scrub(field)))<1:
|
||||||
frappe.throw(_("Row {0}: {1} must be greater than 0").format(d.idx, field), frappe.MandatoryError)
|
frappe.throw(_("Row {0}: {1} must be greater than 0").format(d.idx, field), frappe.MandatoryError)
|
||||||
|
|
||||||
|
def validate_accounts(self):
|
||||||
|
account_type_map = {
|
||||||
|
'fixed_asset_account': { 'account_type': 'Fixed Asset' },
|
||||||
|
'accumulated_depreciation_account': { 'account_type': 'Accumulated Depreciation' },
|
||||||
|
'depreciation_expense_account': { 'root_type': 'Expense' },
|
||||||
|
'capital_work_in_progress_account': { 'account_type': 'Capital Work in Progress' }
|
||||||
|
}
|
||||||
|
for d in self.accounts:
|
||||||
|
for fieldname in account_type_map.keys():
|
||||||
|
if d.get(fieldname):
|
||||||
|
selected_account = d.get(fieldname)
|
||||||
|
key_to_match = next(iter(account_type_map.get(fieldname))) # acount_type or root_type
|
||||||
|
selected_key_type = frappe.db.get_value('Account', selected_account, key_to_match)
|
||||||
|
expected_key_type = account_type_map[fieldname][key_to_match]
|
||||||
|
|
||||||
|
if selected_key_type != expected_key_type:
|
||||||
|
frappe.throw(_("Row #{}: {} of {} should be {}. Please modify the account or select a different account.")
|
||||||
|
.format(d.idx, frappe.unscrub(key_to_match), frappe.bold(selected_account), frappe.bold(expected_key_type)),
|
||||||
|
title=_("Invalid Account"))
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_asset_category_account(fieldname, item=None, asset=None, account=None, asset_category = None, company = None):
|
def get_asset_category_account(fieldname, item=None, asset=None, account=None, asset_category = None, company = None):
|
||||||
|
|||||||
@@ -355,8 +355,8 @@ class TestPurchaseReceipt(unittest.TestCase):
|
|||||||
'accounts': [{
|
'accounts': [{
|
||||||
'company_name': '_Test Company',
|
'company_name': '_Test Company',
|
||||||
'fixed_asset_account': '_Test Fixed Asset - _TC',
|
'fixed_asset_account': '_Test Fixed Asset - _TC',
|
||||||
'accumulated_depreciation_account': 'Depreciation - _TC',
|
'accumulated_depreciation_account': '_Test Accumulated Depreciations - _TC',
|
||||||
'depreciation_expense_account': 'Depreciation - _TC'
|
'depreciation_expense_account': '_Test Depreciation - _TC'
|
||||||
}]
|
}]
|
||||||
}).insert()
|
}).insert()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user