From 4cd60d7d61e0a94fe182a38e0429b956f0e5e09a Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 12 Nov 2014 11:06:55 +0530 Subject: [PATCH] Included standard charts in json format --- .../chart_of_accounts/chart_of_accounts.py | 21 +- .../standard_chart_of_accounts.py | 592 ++++++++++++++++++ erpnext/setup/doctype/company/company.py | 18 +- 3 files changed, 616 insertions(+), 15 deletions(-) create mode 100644 erpnext/accounts/doctype/account/chart_of_accounts/standard_chart_of_accounts.py diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py index a713142b68..eaa96513e5 100644 --- a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py +++ b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py @@ -9,6 +9,8 @@ from unidecode import unidecode def create_charts(chart_name, company): chart = get_chart(chart_name) + frappe.db.sql("delete from `tabAccount` where company=%s", company) + if chart: accounts = [] @@ -45,16 +47,20 @@ def create_charts(chart_name, company): _import_accounts(children, account.name, root_type) - _import_accounts(chart.get("tree"), None, None, root_account=True) + _import_accounts(chart, None, None, root_account=True) def get_chart(chart_name): chart = {} - for fname in os.listdir(os.path.dirname(__file__)): - if fname.endswith(".json"): - with open(os.path.join(os.path.dirname(__file__), fname), "r") as f: - chart = f.read() - if chart and json.loads(chart).get("name") == chart_name: - return json.loads(chart) + if chart_name == "Standard": + from erpnext.accounts.doctype.account.chart_of_accounts import standard_chart_of_accounts + return standard_chart_of_accounts.coa + else: + for fname in os.listdir(os.path.dirname(__file__)): + if fname.endswith(".json"): + with open(os.path.join(os.path.dirname(__file__), fname), "r") as f: + chart = f.read() + if chart and json.loads(chart).get("name") == chart_name: + return json.loads(chart).get("tree") @frappe.whitelist() def get_charts_for_country(country): @@ -80,4 +86,5 @@ def get_charts_for_country(country): with open(os.path.join(os.path.dirname(__file__), "syscohada_syscohada_chart_template.json"), "r") as f: _get_chart_name(f.read()) + charts.append("Standard") return charts diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/standard_chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/standard_chart_of_accounts.py new file mode 100644 index 0000000000..d5d3d5e988 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/standard_chart_of_accounts.py @@ -0,0 +1,592 @@ +{ + "_(\"Accounts Payable\")": { + "_(\"Creditors\")": { + "account_type": "Payable" + } + }, + "_(\"Accounts Receivable\")": { + "_(\"Debtors\")": { + "account_type": "Receivable" + } + }, + "_(\"Administrative Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Application of Funds (Assets)\")": { + "_(\"Current Assets\")": { + "_(\"Accounts Receivable\")": { + "_(\"Debtors\")": { + "account_type": "Receivable" + } + }, + "_(\"Bank Accounts\")": { + "account_type": "Bank" + }, + "_(\"Cash In Hand\")": { + "_(\"Cash\")": { + "account_type": "Cash" + }, + "account_type": "Cash" + }, + "_(\"Loans and Advances (Assets)\")": {}, + "_(\"Securities and Deposits\")": { + "_(\"Earnest Money\")": {} + }, + "_(\"Stock Assets\")": { + "account_type": "Stock" + }, + "_(\"Tax Assets\")": {} + }, + "_(\"Fixed Assets\")": { + "_(\"Capital Equipments\")": { + "account_type": "Fixed Asset" + }, + "_(\"Computers\")": { + "account_type": "Fixed Asset" + }, + "_(\"Furniture and Fixture\")": { + "account_type": "Fixed Asset" + }, + "_(\"Office Equipments\")": { + "account_type": "Fixed Asset" + }, + "_(\"Plant and Machinery\")": { + "account_type": "Fixed Asset" + } + }, + "_(\"Investments\")": {}, + "_(\"Temporary Accounts (Assets)\")": { + "_(\"Temporary Assets\")": {} + } + }, + "_(\"Bank Accounts\")": { + "account_type": "Bank" + }, + "_(\"Bank Overdraft Account\")": {}, + "_(\"Capital Account\")": { + "_(\"Reserves and Surplus\")": {}, + "_(\"Shareholders Funds\")": {} + }, + "_(\"Capital Equipments\")": { + "account_type": "Fixed Asset" + }, + "_(\"Cash In Hand\")": { + "_(\"Cash\")": { + "account_type": "Cash" + }, + "account_type": "Cash" + }, + "_(\"Cash\")": { + "account_type": "Cash" + }, + "_(\"Charity and Donations\")": { + "account_type": "Expense Account" + }, + "_(\"Commission on Sales\")": { + "account_type": "Expense Account" + }, + "_(\"Computers\")": { + "account_type": "Fixed Asset" + }, + "_(\"Cost of Goods Sold\")": { + "account_type": "Expense Account" + }, + "_(\"Creditors\")": { + "account_type": "Payable" + }, + "_(\"Current Assets\")": { + "_(\"Accounts Receivable\")": { + "_(\"Debtors\")": { + "account_type": "Receivable" + } + }, + "_(\"Bank Accounts\")": { + "account_type": "Bank" + }, + "_(\"Cash In Hand\")": { + "_(\"Cash\")": { + "account_type": "Cash" + }, + "account_type": "Cash" + }, + "_(\"Loans and Advances (Assets)\")": {}, + "_(\"Securities and Deposits\")": { + "_(\"Earnest Money\")": {} + }, + "_(\"Stock Assets\")": { + "account_type": "Stock" + }, + "_(\"Tax Assets\")": {} + }, + "_(\"Current Liabilities\")": {}, + "_(\"Debtors\")": { + "account_type": "Receivable" + }, + "_(\"Depreciation\")": { + "account_type": "Expense Account" + }, + "_(\"Direct Expenses\")": { + "_(\"Stock Expenses\")": { + "_(\"Cost of Goods Sold\")": { + "account_type": "Expense Account" + }, + "_(\"Expenses Included In Valuation\")": { + "account_type": "Expenses Included In Valuation" + }, + "_(\"Stock Adjustment\")": { + "account_type": "Stock Adjustment" + }, + "account_type": "Expense Account" + }, + "account_type": "Expense Account" + }, + "_(\"Direct Income\")": { + "_(\"Sales\")": { + "account_type": "Income Account" + }, + "_(\"Service\")": { + "account_type": "Income Account" + }, + "account_type": "Income Account" + }, + "_(\"Duties and Taxes\")": {}, + "_(\"Earnest Money\")": {}, + "_(\"Entertainment Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Expenses Included In Valuation\")": { + "account_type": "Expenses Included In Valuation" + }, + "_(\"Expenses\")": { + "_(\"Direct Expenses\")": { + "_(\"Stock Expenses\")": { + "_(\"Cost of Goods Sold\")": { + "account_type": "Expense Account" + }, + "_(\"Expenses Included In Valuation\")": { + "account_type": "Expenses Included In Valuation" + }, + "_(\"Stock Adjustment\")": { + "account_type": "Stock Adjustment" + }, + "account_type": "Expense Account" + }, + "account_type": "Expense Account" + }, + "_(\"Indirect Expenses\")": { + "_(\"Administrative Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Charity and Donations\")": { + "account_type": "Expense Account" + }, + "_(\"Commission on Sales\")": { + "account_type": "Expense Account" + }, + "_(\"Depreciation\")": { + "account_type": "Expense Account" + }, + "_(\"Entertainment Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Freight and Forwarding Charges\")": { + "account_type": "Chargeable" + }, + "_(\"Legal Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Marketing Expenses\")": { + "account_type": "Chargeable" + }, + "_(\"Miscellaneous Expenses\")": { + "account_type": "Chargeable" + }, + "_(\"Office Maintenance Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Office Rent\")": { + "account_type": "Expense Account" + }, + "_(\"Postal Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Print and Stationary\")": { + "account_type": "Expense Account" + }, + "_(\"Rounded Off\")": { + "account_type": "Expense Account" + }, + "_(\"Salary\")": { + "account_type": "Expense Account" + }, + "_(\"Sales Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Telephone Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Travel Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Utility Expenses\")": { + "account_type": "Expense Account" + }, + "account_type": "Expense Account" + }, + "account_type": "Expense Account" + }, + "_(\"Fixed Assets\")": { + "_(\"Capital Equipments\")": { + "account_type": "Fixed Asset" + }, + "_(\"Computers\")": { + "account_type": "Fixed Asset" + }, + "_(\"Furniture and Fixture\")": { + "account_type": "Fixed Asset" + }, + "_(\"Office Equipments\")": { + "account_type": "Fixed Asset" + }, + "_(\"Plant and Machinery\")": { + "account_type": "Fixed Asset" + } + }, + "_(\"Freight and Forwarding Charges\")": { + "account_type": "Chargeable" + }, + "_(\"Furniture and Fixture\")": { + "account_type": "Fixed Asset" + }, + "_(\"Income\")": { + "_(\"Direct Income\")": { + "_(\"Sales\")": { + "account_type": "Income Account" + }, + "_(\"Service\")": { + "account_type": "Income Account" + }, + "account_type": "Income Account" + }, + "_(\"Indirect Income\")": { + "account_type": "Income Account" + } + }, + "_(\"Indirect Expenses\")": { + "_(\"Administrative Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Charity and Donations\")": { + "account_type": "Expense Account" + }, + "_(\"Commission on Sales\")": { + "account_type": "Expense Account" + }, + "_(\"Depreciation\")": { + "account_type": "Expense Account" + }, + "_(\"Entertainment Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Freight and Forwarding Charges\")": { + "account_type": "Chargeable" + }, + "_(\"Legal Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Marketing Expenses\")": { + "account_type": "Chargeable" + }, + "_(\"Miscellaneous Expenses\")": { + "account_type": "Chargeable" + }, + "_(\"Office Maintenance Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Office Rent\")": { + "account_type": "Expense Account" + }, + "_(\"Postal Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Print and Stationary\")": { + "account_type": "Expense Account" + }, + "_(\"Rounded Off\")": { + "account_type": "Expense Account" + }, + "_(\"Salary\")": { + "account_type": "Expense Account" + }, + "_(\"Sales Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Telephone Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Travel Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Utility Expenses\")": { + "account_type": "Expense Account" + }, + "account_type": "Expense Account" + }, + "_(\"Indirect Income\")": { + "account_type": "Income Account" + }, + "_(\"Investments\")": {}, + "_(\"Legal Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Loans (Liabilities)\")": {}, + "_(\"Loans and Advances (Assets)\")": {}, + "_(\"Marketing Expenses\")": { + "account_type": "Chargeable" + }, + "_(\"Miscellaneous Expenses\")": { + "account_type": "Chargeable" + }, + "_(\"Office Equipments\")": { + "account_type": "Fixed Asset" + }, + "_(\"Office Maintenance Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Office Rent\")": { + "account_type": "Expense Account" + }, + "_(\"Plant and Machinery\")": { + "account_type": "Fixed Asset" + }, + "_(\"Postal Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Print and Stationary\")": { + "account_type": "Expense Account" + }, + "_(\"Reserves and Surplus\")": {}, + "_(\"Rounded Off\")": { + "account_type": "Expense Account" + }, + "_(\"Salary\")": { + "account_type": "Expense Account" + }, + "_(\"Sales Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Sales\")": { + "account_type": "Income Account" + }, + "_(\"Secured Loans\")": {}, + "_(\"Securities and Deposits\")": { + "_(\"Earnest Money\")": {} + }, + "_(\"Service\")": { + "account_type": "Income Account" + }, + "_(\"Shareholders Funds\")": {}, + "_(\"Source of Funds (Liabilities)\")": { + "_(\"Capital Account\")": { + "_(\"Reserves and Surplus\")": {}, + "_(\"Shareholders Funds\")": {} + }, + "_(\"Current Liabilities\")": {}, + "_(\"Temporary Accounts (Liabilities)\")": { + "_(\"Temporary Liabilities\")": {} + } + }, + "_(\"Stock Adjustment\")": { + "account_type": "Stock Adjustment" + }, + "_(\"Stock Assets\")": { + "account_type": "Stock" + }, + "_(\"Stock Expenses\")": { + "_(\"Cost of Goods Sold\")": { + "account_type": "Expense Account" + }, + "_(\"Expenses Included In Valuation\")": { + "account_type": "Expenses Included In Valuation" + }, + "_(\"Stock Adjustment\")": { + "account_type": "Stock Adjustment" + }, + "account_type": "Expense Account" + }, + "_(\"Stock Liabilities\")": {}, + "_(\"Stock Received But Not Billed\")": { + "account_type": "Stock Received But Not Billed" + }, + "_(\"Tax Assets\")": {}, + "_(\"Telephone Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Temporary Accounts (Assets)\")": { + "_(\"Temporary Assets\")": {} + }, + "_(\"Temporary Accounts (Liabilities)\")": { + "_(\"Temporary Liabilities\")": {} + }, + "_(\"Temporary Assets\")": {}, + "_(\"Temporary Liabilities\")": {}, + "_(\"Travel Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Unsecured Loans\")": {}, + "_(\"Utility Expenses\")": { + "account_type": "Expense Account" + }, + "root": { + "_(\"Application of Funds (Assets)\")": { + "_(\"Current Assets\")": { + "_(\"Accounts Receivable\")": { + "_(\"Debtors\")": { + "account_type": "Receivable" + } + }, + "_(\"Bank Accounts\")": { + "account_type": "Bank" + }, + "_(\"Cash In Hand\")": { + "_(\"Cash\")": { + "account_type": "Cash" + }, + "account_type": "Cash" + }, + "_(\"Loans and Advances (Assets)\")": {}, + "_(\"Securities and Deposits\")": { + "_(\"Earnest Money\")": {} + }, + "_(\"Stock Assets\")": { + "account_type": "Stock" + }, + "_(\"Tax Assets\")": {} + }, + "_(\"Fixed Assets\")": { + "_(\"Capital Equipments\")": { + "account_type": "Fixed Asset" + }, + "_(\"Computers\")": { + "account_type": "Fixed Asset" + }, + "_(\"Furniture and Fixture\")": { + "account_type": "Fixed Asset" + }, + "_(\"Office Equipments\")": { + "account_type": "Fixed Asset" + }, + "_(\"Plant and Machinery\")": { + "account_type": "Fixed Asset" + } + }, + "_(\"Investments\")": {}, + "_(\"Temporary Accounts (Assets)\")": { + "_(\"Temporary Assets\")": {} + } + }, + "_(\"Expenses\")": { + "_(\"Direct Expenses\")": { + "_(\"Stock Expenses\")": { + "_(\"Cost of Goods Sold\")": { + "account_type": "Expense Account" + }, + "_(\"Expenses Included In Valuation\")": { + "account_type": "Expenses Included In Valuation" + }, + "_(\"Stock Adjustment\")": { + "account_type": "Stock Adjustment" + }, + "account_type": "Expense Account" + }, + "account_type": "Expense Account" + }, + "_(\"Indirect Expenses\")": { + "_(\"Administrative Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Charity and Donations\")": { + "account_type": "Expense Account" + }, + "_(\"Commission on Sales\")": { + "account_type": "Expense Account" + }, + "_(\"Depreciation\")": { + "account_type": "Expense Account" + }, + "_(\"Entertainment Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Freight and Forwarding Charges\")": { + "account_type": "Chargeable" + }, + "_(\"Legal Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Marketing Expenses\")": { + "account_type": "Chargeable" + }, + "_(\"Miscellaneous Expenses\")": { + "account_type": "Chargeable" + }, + "_(\"Office Maintenance Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Office Rent\")": { + "account_type": "Expense Account" + }, + "_(\"Postal Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Print and Stationary\")": { + "account_type": "Expense Account" + }, + "_(\"Rounded Off\")": { + "account_type": "Expense Account" + }, + "_(\"Salary\")": { + "account_type": "Expense Account" + }, + "_(\"Sales Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Telephone Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Travel Expenses\")": { + "account_type": "Expense Account" + }, + "_(\"Utility Expenses\")": { + "account_type": "Expense Account" + }, + "account_type": "Expense Account" + }, + "account_type": "Expense Account" + }, + "_(\"Income\")": { + "_(\"Direct Income\")": { + "_(\"Sales\")": { + "account_type": "Income Account" + }, + "_(\"Service\")": { + "account_type": "Income Account" + }, + "account_type": "Income Account" + }, + "_(\"Indirect Income\")": { + "account_type": "Income Account" + } + }, + "_(\"Source of Funds (Liabilities)\")": { + "_(\"Capital Account\")": { + "_(\"Reserves and Surplus\")": {}, + "_(\"Shareholders Funds\")": {} + }, + "_(\"Current Liabilities\")": {}, + "_(\"Temporary Accounts (Liabilities)\")": { + "_(\"Temporary Liabilities\")": {} + } + }, + "root_type": "true" + } +} \ No newline at end of file diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index 274015c9aa..f0130d64fc 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -49,11 +49,11 @@ class Company(Document): .format(self.get(field), self.name)) def on_update(self): - if not frappe.db.sql("""select name from tabAccount - where company=%s and docstatus<2 limit 1""", self.name): - self.create_default_accounts() - self.create_default_warehouses() - self.install_country_fixtures() + # if not frappe.db.sql("""select name from tabAccount + # where company=%s and docstatus<2 limit 1""", self.name): + self.create_default_accounts() + self.create_default_warehouses() + self.install_country_fixtures() if not frappe.db.get_value("Cost Center", {"group_or_ledger": "Ledger", "company": self.name}): self.create_default_cost_center() @@ -81,11 +81,13 @@ class Company(Document): }).insert() def create_default_accounts(self): - if self.chart_of_accounts: + if not self.chart_of_accounts: + frappe.throw(_("Please select Chart of Accounts")) + else: from erpnext.accounts.doctype.account.chart_of_accounts.chart_of_accounts import create_charts create_charts(self.chart_of_accounts, self.name) - else: - self.create_standard_accounts() + # else: + # self.create_standard_accounts() frappe.db.set(self, "default_receivable_account", frappe.db.get_value("Account", {"company": self.name, "account_type": "Receivable"}))