diff --git a/erpnext/accounts/doctype/account/test_account.py b/erpnext/accounts/doctype/account/test_account.py index 83516dacb9d..4580d02dd4e 100644 --- a/erpnext/accounts/doctype/account/test_account.py +++ b/erpnext/accounts/doctype/account/test_account.py @@ -35,7 +35,12 @@ def _make_test_records(verbose): # related to Account Inventory Integration ["_Test Account Stock In Hand", "Current Assets", 0, None, None], - ["_Test Account Fixed Assets", "Current Assets", 0, None, None], + + # fixed asset depreciation + ["_Test Fixed Asset", "Current Assets", 0, "Fixed Asset", None], + ["_Test Accumulated Depreciations", "Current Assets", 0, None, None], + ["_Test Depreciations", "Expenses", 0, None, None], + ["_Test Gain/Loss on Asset Disposal", "Expenses", 0, None, None], # Receivable / Payable Account ["_Test Receivable", "Current Assets", 0, "Receivable", None], diff --git a/erpnext/accounts/doctype/asset/asset.py b/erpnext/accounts/doctype/asset/asset.py index fb1502e881a..488ba6a53e9 100644 --- a/erpnext/accounts/doctype/asset/asset.py +++ b/erpnext/accounts/doctype/asset/asset.py @@ -30,6 +30,9 @@ class Asset(Document): if flt(self.expected_value_after_useful_life) >= flt(self.gross_purchase_amount): frappe.throw(_("Expected Value After Useful Life must be less than Gross Purchase Amount")) + if not flt(self.gross_purchase_amount): + frappe.throw(_("Gross Purchase Amount is mandatory"), frappe.MandatoryError) + if not self.current_value: self.current_value = flt(self.gross_purchase_amount) else: diff --git a/erpnext/accounts/doctype/asset/test_asset.py b/erpnext/accounts/doctype/asset/test_asset.py index cada250b463..031fcc2c367 100644 --- a/erpnext/accounts/doctype/asset/test_asset.py +++ b/erpnext/accounts/doctype/asset/test_asset.py @@ -6,7 +6,71 @@ from __future__ import unicode_literals import frappe import unittest -# test_records = frappe.get_test_records('Asset') - class TestAsset(unittest.TestCase): - pass + def setUp(self): + create_asset() + + def test_fixed_asset_must_be_non_stock_item(self): + item = frappe.get_doc("Item", "Macbook Pro") + item.is_stock_item = 1 + self.assertRaises(frappe.ValidationError, item.save) + + def test_asset_purchase(self): + asset = create_asset() + + self.assertEqual(asset.current_value, 100000) + + +def create_asset(): + if not frappe.db.exists("Asset Category", "Computers"): + create_asset_category() + + if not frappe.db.exists("Item", "Macbook Pro"): + create_fixed_asset_item() + + asset = frappe.get_doc({ + "doctype": "Asset", + "asset_name": "Macbook Pro 1", + "asset_category": "Computers", + "item_code": "Macbook Pro", + "purchase_date": "2015-01-01", + "next_depreciation_date": "2015-12-31", + "gross_purchase_amount": 100000, + "expected_value_after_useful_life": 10000 + }) + try: + asset.save() + except frappe.DuplicateEntryError: + pass + + return asset + +def create_asset_category(): + asset_category = frappe.new_doc("Asset Category") + asset_category.asset_category_name = "Computers" + asset_category.number_of_depreciations = 5 + asset_category.number_of_months_in_a_period = 12 + asset_category.append("accounts", { + "company": "_Test Company", + "fixed_asset_account": "_Test Fixed Asset - _TC", + "accumulated_depreciation_account": "_Test Accumulated Depreciations - _TC", + "depreciation_expense_account": "_Test Depreciations - _TC" + }) + asset_category.insert() + +def create_fixed_asset_item(): + try: + frappe.get_doc({ + "doctype": "Item", + "item_code": "Macbook Pro", + "item_name": "Macbook Pro", + "description": "Macbook Pro Retina Display", + "item_group": "All Item Groups", + "stock_uom": "Nos", + "is_fixed_asset": 1, + "is_stock_item": 0 + }).insert() + except frappe.DuplicateEntryError: + pass + + \ No newline at end of file diff --git a/erpnext/accounts/doctype/asset_category/asset_category.py b/erpnext/accounts/doctype/asset_category/asset_category.py index f139499256a..7acd88330c4 100644 --- a/erpnext/accounts/doctype/asset_category/asset_category.py +++ b/erpnext/accounts/doctype/asset_category/asset_category.py @@ -12,4 +12,4 @@ class AssetCategory(Document): for field in ("depreciation_method", "number_of_depreciations", "number_of_months_in_a_period", "accounts"): if not self.get(field): - frappe.throw(_("{0} is mandatory").format(self.meta.get_label(field))) \ No newline at end of file + frappe.throw(_("{0} is mandatory").format(self.meta.get_label(field)), frappe.MandatoryError) \ No newline at end of file diff --git a/erpnext/accounts/doctype/asset_category/test_asset_category.py b/erpnext/accounts/doctype/asset_category/test_asset_category.py index a85fe3d15e6..1fe4aae86fb 100644 --- a/erpnext/accounts/doctype/asset_category/test_asset_category.py +++ b/erpnext/accounts/doctype/asset_category/test_asset_category.py @@ -6,7 +6,24 @@ from __future__ import unicode_literals import frappe import unittest -# test_records = frappe.get_test_records('Asset Category') - class TestAssetCategory(unittest.TestCase): - pass + def test_mandatory_fields(self): + asset_category = frappe.new_doc("Asset Category") + asset_category.asset_category_name = "Computers" + + self.assertRaises(frappe.MandatoryError, asset_category.insert) + + asset_category.number_of_depreciations = 5 + asset_category.number_of_months_in_a_period = 12 + asset_category.append("accounts", { + "company": "_Test Company", + "fixed_asset_account": "_Test Fixed Asset - _TC", + "accumulated_depreciation_account": "_Test Accoumulated Depreciations - _TC", + "depreciation_expense_account": "_Test Depreciations - _TC" + }) + + try: + asset_category.insert() + except frappe.DuplicateEntryError: + pass + \ No newline at end of file diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json index 95b17c4e931..be63aac6c3c 100644 --- a/erpnext/setup/doctype/company/company.json +++ b/erpnext/setup/doctype/company/company.json @@ -257,7 +257,7 @@ "print_hide_if_no_value": 0, "read_only": 0, "report_hide": 0, - "reqd": 1, + "reqd": 0, "search_index": 0, "set_only_once": 0, "unique": 0 diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py index c3bd45231ef..28a07f368c9 100644 --- a/erpnext/setup/utils.py +++ b/erpnext/setup/utils.py @@ -49,7 +49,9 @@ def before_tests(): "company_tagline" :"Testing", "email" :"test@erpnext.com", "password" :"test", - "chart_of_accounts" : "Standard" + "chart_of_accounts" : "Standard", + "domain" : "Manufacturing", + }) frappe.db.sql("delete from `tabLeave Allocation`")