Merge branch 'develop' of https://github.com/frappe/erpnext into rebrand-ui
diff --git a/erpnext/accounts/desk_page/accounting/accounting.json b/erpnext/accounts/desk_page/accounting/accounting.json
deleted file mode 100644
index a18dbff..0000000
--- a/erpnext/accounts/desk_page/accounting/accounting.json
+++ /dev/null
@@ -1,161 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Accounting Masters",
-   "links": "[\n    {\n        \"description\": \"Company (not Customer or Supplier) master.\",\n        \"label\": \"Company\",\n        \"name\": \"Company\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tree of financial accounts.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Chart of Accounts\",\n        \"name\": \"Account\",\n        \"onboard\": 1,\n        \"route\": \"#Tree/Account\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Accounts Settings\",\n        \"name\": \"Accounts Settings\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Financial / accounting year.\",\n        \"label\": \"Fiscal Year\",\n        \"name\": \"Fiscal Year\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Accounting Dimension\",\n        \"name\": \"Accounting Dimension\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Finance Book\",\n        \"name\": \"Finance Book\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Accounting Period\",\n        \"name\": \"Accounting Period\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Payment Terms based on conditions\",\n        \"label\": \"Payment Term\",\n        \"name\": \"Payment Term\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "General Ledger",
-   "links": "[\n    {\n        \"description\": \"Accounting journal entries.\",\n        \"label\": \"Journal Entry\",\n        \"name\": \"Journal Entry\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Make journal entries from a template.\",\n        \"label\": \"Journal Entry Template\",\n        \"name\": \"Journal Entry Template\",\n        \"type\": \"doctype\"\n    },\n    \n    {\n        \"dependencies\": [\n            \"GL Entry\"\n        ],\n        \"doctype\": \"GL Entry\",\n        \"is_query_report\": true,\n        \"label\": \"General Ledger\",\n        \"name\": \"General Ledger\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Customer Ledger Summary\",\n        \"name\": \"Customer Ledger Summary\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Supplier Ledger Summary\",\n        \"name\": \"Supplier Ledger Summary\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Accounts Receivable",
-   "links": "[\n    {\n        \"description\": \"Bills raised to Customers.\",\n        \"label\": \"Sales Invoice\",\n        \"name\": \"Sales Invoice\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Customer database.\",\n        \"label\": \"Customer\",\n        \"name\": \"Customer\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Bank/Cash transactions against party or for internal transfer\",\n        \"label\": \"Payment Entry\",\n        \"name\": \"Payment Entry\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Payment Request\",\n        \"label\": \"Payment Request\",\n        \"name\": \"Payment Request\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Accounts Receivable\",\n        \"name\": \"Accounts Receivable\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Accounts Receivable Summary\",\n        \"name\": \"Accounts Receivable Summary\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Register\",\n        \"name\": \"Sales Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Item-wise Sales Register\",\n        \"name\": \"Item-wise Sales Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Order Analysis\",\n        \"name\": \"Sales Order Analysis\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Delivered Items To Be Billed\",\n        \"name\": \"Delivered Items To Be Billed\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Accounts Payable",
-   "links": "[\n    {\n        \"description\": \"Bills raised by Suppliers.\",\n        \"label\": \"Purchase Invoice\",\n        \"name\": \"Purchase Invoice\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Supplier database.\",\n        \"label\": \"Supplier\",\n        \"name\": \"Supplier\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Bank/Cash transactions against party or for internal transfer\",\n        \"label\": \"Payment Entry\",\n        \"name\": \"Payment Entry\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Accounts Payable\",\n        \"name\": \"Accounts Payable\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Accounts Payable Summary\",\n        \"name\": \"Accounts Payable Summary\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Register\",\n        \"name\": \"Purchase Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Item-wise Purchase Register\",\n        \"name\": \"Item-wise Purchase Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Order\"\n        ],\n        \"doctype\": \"Purchase Order\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Order Analysis\",\n        \"name\": \"Purchase Order Analysis\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Received Items To Be Billed\",\n        \"name\": \"Received Items To Be Billed\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"GL Entry\"\n        ],\n        \"doctype\": \"GL Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Trial Balance for Party\",\n        \"name\": \"Trial Balance for Party\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Journal Entry\"\n        ],\n        \"doctype\": \"Journal Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Payment Period Based On Invoice Date\",\n        \"name\": \"Payment Period Based On Invoice Date\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Partners Commission\",\n        \"name\": \"Sales Partners Commission\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Customer\"\n        ],\n        \"doctype\": \"Customer\",\n        \"is_query_report\": true,\n        \"label\": \"Customer Credit Balance\",\n        \"name\": \"Customer Credit Balance\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Payment Summary\",\n        \"name\": \"Sales Payment Summary\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Address\"\n        ],\n        \"doctype\": \"Address\",\n        \"is_query_report\": true,\n        \"label\": \"Address And Contacts\",\n        \"name\": \"Address And Contacts\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"GL Entry\"\n        ],\n        \"doctype\": \"GL Entry\",\n        \"is_query_report\": true,\n        \"label\": \"DATEV Export\",\n        \"name\": \"DATEV\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Financial Statements",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"GL Entry\"\n        ],\n        \"doctype\": \"GL Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Trial Balance\",\n        \"name\": \"Trial Balance\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"GL Entry\"\n        ],\n        \"doctype\": \"GL Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Profit and Loss Statement\",\n        \"name\": \"Profit and Loss Statement\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"GL Entry\"\n        ],\n        \"doctype\": \"GL Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Balance Sheet\",\n        \"name\": \"Balance Sheet\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"GL Entry\"\n        ],\n        \"doctype\": \"GL Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Cash Flow\",\n        \"name\": \"Cash Flow\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"GL Entry\"\n        ],\n        \"doctype\": \"GL Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Consolidated Financial Statement\",\n        \"name\": \"Consolidated Financial Statement\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Multi Currency",
-   "links": "[\n    {\n        \"description\": \"Enable / disable currencies.\",\n        \"label\": \"Currency\",\n        \"name\": \"Currency\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Currency exchange rate master.\",\n        \"label\": \"Currency Exchange\",\n        \"name\": \"Currency Exchange\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Exchange Rate Revaluation master.\",\n        \"label\": \"Exchange Rate Revaluation\",\n        \"name\": \"Exchange Rate Revaluation\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Settings",
-   "links": "[\n    {\n        \"description\": \"Setup Gateway accounts.\",\n        \"label\": \"Payment Gateway Account\",\n        \"name\": \"Payment Gateway Account\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Template of terms or contract.\",\n        \"label\": \"Terms and Conditions Template\",\n        \"name\": \"Terms and Conditions\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"e.g. Bank, Cash, Credit Card\",\n        \"label\": \"Mode of Payment\",\n        \"name\": \"Mode of Payment\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Bank Statement",
-   "links": "[\n    {\n        \"label\": \"Bank\",\n        \"name\": \"Bank\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Bank Account\",\n        \"name\": \"Bank Account\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Bank Clearance\",\n        \"name\": \"Bank Clearance\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Bank Reconciliation\",\n        \"name\": \"bank-reconciliation\",\n        \"type\": \"page\"\n    },\n    {\n        \"dependencies\": [\n            \"GL Entry\"\n        ],\n        \"doctype\": \"GL Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Bank Reconciliation Statement\",\n        \"name\": \"Bank Reconciliation Statement\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Subscription Management",
-   "links": "[\n    {\n        \"label\": \"Subscription Plan\",\n        \"name\": \"Subscription Plan\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Subscription\",\n        \"name\": \"Subscription\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Subscription Settings\",\n        \"name\": \"Subscription Settings\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Goods and Services Tax (GST India)",
-   "links": "[\n    {\n        \"label\": \"GST Settings\",\n        \"name\": \"GST Settings\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"GST HSN Code\",\n        \"name\": \"GST HSN Code\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"GSTR-1\",\n        \"name\": \"GSTR-1\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"GSTR-2\",\n        \"name\": \"GSTR-2\",\n        \"type\": \"report\"\n    },\n    {\n        \"label\": \"GSTR 3B Report\",\n        \"name\": \"GSTR 3B Report\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"GST Sales Register\",\n        \"name\": \"GST Sales Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"GST Purchase Register\",\n        \"name\": \"GST Purchase Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"GST Itemised Sales Register\",\n        \"name\": \"GST Itemised Sales Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"GST Itemised Purchase Register\",\n        \"name\": \"GST Itemised Purchase Register\",\n        \"type\": \"report\"\n    },\n    {\n        \"country\": \"India\",\n        \"description\": \"C-Form records\",\n        \"label\": \"C-Form\",\n        \"name\": \"C-Form\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"country\": \"India\",\n        \"label\": \"Lower Deduction Certificate\",\n        \"name\": \"Lower Deduction Certificate\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Share Management",
-   "links": "[\n    {\n        \"description\": \"List of available Shareholders with folio numbers\",\n        \"label\": \"Shareholder\",\n        \"name\": \"Shareholder\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"List of all share transactions\",\n        \"label\": \"Share Transfer\",\n        \"name\": \"Share Transfer\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Share Transfer\"\n        ],\n        \"doctype\": \"Share Transfer\",\n        \"is_query_report\": true,\n        \"label\": \"Share Ledger\",\n        \"name\": \"Share Ledger\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Share Transfer\"\n        ],\n        \"doctype\": \"Share Transfer\",\n        \"is_query_report\": true,\n        \"label\": \"Share Balance\",\n        \"name\": \"Share Balance\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Cost Center and Budgeting",
-   "links": "[\n    {\n        \"description\": \"Tree of financial Cost Centers.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Chart of Cost Centers\",\n        \"name\": \"Cost Center\",\n        \"route\": \"#Tree/Cost Center\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Define budget for a financial year.\",\n        \"label\": \"Budget\",\n        \"name\": \"Budget\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Accounting Dimension\",\n        \"name\": \"Accounting Dimension\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Cost Center\"\n        ],\n        \"doctype\": \"Cost Center\",\n        \"is_query_report\": true,\n        \"label\": \"Budget Variance Report\",\n        \"name\": \"Budget Variance Report\",\n        \"type\": \"report\"\n    },\n    {\n        \"description\": \"Seasonality for setting budgets, targets etc.\",\n        \"label\": \"Monthly Distribution\",\n        \"name\": \"Monthly Distribution\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Opening and Closing",
-   "links": "[\n    {\n        \"label\": \"Opening Invoice Creation Tool\",\n        \"name\": \"Opening Invoice Creation Tool\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Chart of Accounts Importer\",\n        \"name\": \"Chart of Accounts Importer\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Close Balance Sheet and book Profit or Loss.\",\n        \"label\": \"Period Closing Voucher\",\n        \"name\": \"Period Closing Voucher\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Taxes",
-   "links": "[\n    {\n        \"description\": \"Tax template for selling transactions.\",\n        \"label\": \"Sales Taxes and Charges Template\",\n        \"name\": \"Sales Taxes and Charges Template\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tax template for buying transactions.\",\n        \"label\": \"Purchase Taxes and Charges Template\",\n        \"name\": \"Purchase Taxes and Charges Template\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tax template for item tax rates.\",\n        \"label\": \"Item Tax Template\",\n        \"name\": \"Item Tax Template\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tax Category for overriding tax rates.\",\n        \"label\": \"Tax Category\",\n        \"name\": \"Tax Category\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tax Rule for transactions.\",\n        \"label\": \"Tax Rule\",\n        \"name\": \"Tax Rule\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tax Withholding rates to be applied on transactions.\",\n        \"label\": \"Tax Withholding Category\",\n        \"name\": \"Tax Withholding Category\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Profitability",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Gross Profit\",\n        \"name\": \"Gross Profit\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"GL Entry\"\n        ],\n        \"doctype\": \"GL Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Profitability Analysis\",\n        \"name\": \"Profitability Analysis\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Invoice Trends\",\n        \"name\": \"Sales Invoice Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Invoice\"\n        ],\n        \"doctype\": \"Purchase Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Invoice Trends\",\n        \"name\": \"Purchase Invoice Trends\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Value-Added Tax (VAT UAE)",
-   "links": "[\n    {\n        \"country\": \"United Arab Emirates\",\n        \"label\": \"UAE VAT Settings\",\n        \"name\": \"UAE VAT Settings\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"country\": \"United Arab Emirates\",\n        \"is_query_report\": true,\n        \"label\": \"UAE VAT 201\",\n        \"name\": \"UAE VAT 201\",\n        \"type\": \"report\"\n    }\n\n]"
-  }
- ],
- "category": "Modules",
- "charts": [
-  {
-   "chart_name": "Profit and Loss",
-   "label": "Profit and Loss"
-  }
- ],
- "creation": "2020-03-02 15:41:59.515192",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Accounting",
- "modified": "2020-11-11 18:35:11.542909",
- "modified_by": "Administrator",
- "module": "Accounts",
- "name": "Accounting",
- "onboarding": "Accounts",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "label": "Chart Of Accounts",
-   "link_to": "Account",
-   "type": "DocType"
-  },
-  {
-   "label": "Sales Invoice",
-   "link_to": "Sales Invoice",
-   "type": "DocType"
-  },
-  {
-   "label": "Purchase Invoice",
-   "link_to": "Purchase Invoice",
-   "type": "DocType"
-  },
-  {
-   "label": "Journal Entry",
-   "link_to": "Journal Entry",
-   "type": "DocType"
-  },
-  {
-   "label": "Payment Entry",
-   "link_to": "Payment Entry",
-   "type": "DocType"
-  },
-  {
-   "label": "Accounts Receivable",
-   "link_to": "Accounts Receivable",
-   "type": "Report"
-  },
-  {
-   "label": "General Ledger",
-   "link_to": "General Ledger",
-   "type": "Report"
-  },
-  {
-   "label": "Trial Balance",
-   "link_to": "Trial Balance",
-   "type": "Report"
-  },
-  {
-   "label": "Dashboard",
-   "link_to": "Accounts",
-   "type": "Dashboard"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/account/account_tree.js b/erpnext/accounts/doctype/account/account_tree.js
index 7bbc1c9..7dc0533 100644
--- a/erpnext/accounts/doctype/account/account_tree.js
+++ b/erpnext/accounts/doctype/account/account_tree.js
@@ -120,7 +120,7 @@
 			} else {
 				treeview.new_node();
 			}
-		}, "octicon octicon-plus");
+		}, "add");
 	},
 	onrender: function(node) {
 		if(frappe.boot.user.can_read.indexOf("GL Entry") !== -1){
@@ -130,7 +130,7 @@
 			let dr_or_cr = balance > 0 ? "Dr": "Cr";
 
 			if (node.data && node.data.balance!==undefined) {
-				$('<span class="balance-area pull-right text-muted small">'
+				$('<span class="balance-area pull-right">'
 					+ (node.data.balance_in_account_currency ?
 						(format_currency(Math.abs(node.data.balance_in_account_currency),
 							node.data.account_currency) + " / ") : "")
diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.js b/erpnext/accounts/doctype/accounts_settings/accounts_settings.js
index 0627675..541901c 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.js
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.js
@@ -6,3 +6,46 @@
 
 	}
 });
+
+frappe.tour['Accounts Settings'] = [
+	{
+		fieldname: "acc_frozen_upto",
+		title: "Accounts Frozen Upto",
+		description: __("Freeze accounting transactions up to specified date, nobody can make/modify entry except the specified Role."),
+	},
+	{
+		fieldname: "frozen_accounts_modifier",
+		title: "Role Allowed to Set Frozen Accounts & Edit Frozen Entries",
+		description: __("Users with this Role are allowed to set frozen accounts and create/modify accounting entries against frozen accounts.")
+	},
+	{
+		fieldname: "determine_address_tax_category_from",
+		title: "Determine Address Tax Category From",
+		description: __("Tax category can be set on Addresses. An address can be Shipping or Billing address. Set which addres to select when applying Tax Category.")
+	},
+	{
+		fieldname: "over_billing_allowance",
+		title: "Over Billing Allowance Percentage",
+		description: __("The percentage by which you can overbill transactions. For example, if the order value is $100 for an Item and percentage here is set as 10% then you are allowed to bill for $110.")
+	},
+	{
+		fieldname: "credit_controller",
+		title: "Credit Controller",
+		description: __("Select the role that is allowed to submit transactions that exceed credit limits set. The credit limit can be set in the Customer form.")
+	},
+	{
+		fieldname: "make_payment_via_journal_entry",
+		title: "Make Payment via Journal Entry",
+		description: __("When checked, if user proceeds to make payment from an invoice, the system will open a Journal Entry instead of a Payment Entry.")
+	},
+	{
+		fieldname: "unlink_payment_on_cancellation_of_invoice",
+		title: "Unlink Payment on Cancellation of Invoice",
+		description: __("If checked, system will unlink the payment against the respective invoice.")
+	},
+	{
+		fieldname: "unlink_advance_payment_on_cancelation_of_order",
+		title: "Unlink Advance Payment on Cancellation of Order",
+		description: __("Similar to the previous option, this unlinks any advance payments made against Purchase/Sales Orders.")
+	}
+];
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js
index c087980..b2e8626 100644
--- a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js
+++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js
@@ -121,7 +121,8 @@
 				frappe.render_template('opening_invoice_creation_tool_dashboard', {
 					data: opening_invoices_summary,
 					max_count: max_count
-				})
+				}),
+				__("Opening Invoices Summary")
 			);
 
 			section.on('click', '.invoice-link', function() {
diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py
index ee2092a..76027a3 100644
--- a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py
+++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.py
@@ -64,11 +64,11 @@
 			prepare_invoice_summary(doctype, invoices)
 
 		return invoices_summary, max_count
-	
+
 	def validate_company(self):
 		if not self.company:
 			frappe.throw(_("Please select the Company"))
-	
+
 	def set_missing_values(self, row):
 		row.qty = row.qty or 1.0
 		row.temporary_opening_account = row.temporary_opening_account or get_temporary_opening_account(self.company)
@@ -210,7 +210,7 @@
 			frappe.db.commit()
 	if errors:
 		frappe.msgprint(_("You had {} errors while creating opening invoices. Check {} for more details")
-			.format(errors, "<a href='#List/Error Log' class='variant-click'>Error Log</a>"), indicator="red", title=_("Error Occured"))
+			.format(errors, "<a href='/app/List/Error Log' class='variant-click'>Error Log</a>"), indicator="red", title=_("Error Occured"))
 	return names
 
 def publish(index, total, doctype):
diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool_dashboard.html b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool_dashboard.html
index 5b136d4..afbcfa5 100644
--- a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool_dashboard.html
+++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool_dashboard.html
@@ -1,4 +1,3 @@
-<h5 style="margin-top: 0px;">{{ __("Opening Invoices Summary") }}</h5>
 {% $.each(data, (company, summary) => { %}
 <h6 style="margin: 15px 0px -10px 0px;"><a class="company-link"> {{ company }}</a></h6>
 
diff --git a/erpnext/accounts/doctype/payment_request/payment_request_list.js b/erpnext/accounts/doctype/payment_request/payment_request_list.js
index 72833d2..85d729c 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request_list.js
+++ b/erpnext/accounts/doctype/payment_request/payment_request_list.js
@@ -2,7 +2,7 @@
 	add_fields: ["status"],
 	get_indicator: function(doc) {
 		if(doc.status == "Draft") {
-			return [__("Draft"), "darkgrey", "status,=,Draft"];
+			return [__("Draft"), "gray", "status,=,Draft"];
 		}
 		if(doc.status == "Requested") {
 			return [__("Requested"), "green", "status,=,Requested"];
@@ -19,5 +19,5 @@
 		else if(doc.status == "Cancelled") {
 			return [__("Cancelled"), "red", "status,=,Cancelled"];
 		}
-	}	
+	}
 }
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js
index 8da7d6f..914a245 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js
@@ -19,7 +19,7 @@
 				return [__("Unpaid"), "orange", "outstanding_amount,>,0|due_date,>=,Today"];
 			}
 		} else if (cint(doc.is_return)) {
-			return [__("Return"), "darkgrey", "is_return,=,Yes"];
+			return [__("Return"), "gray", "is_return,=,Yes"];
 		} else if (doc.company == doc.represents_company && doc.is_internal_supplier) {
 			return [__("Internal Transfer"), "darkgrey", "outstanding_amount,=,0"];
 		} else if (flt(doc.outstanding_amount)==0 && doc.docstatus==1) {
diff --git a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.py b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.py
index 56576df..50ec7d8 100644
--- a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.py
+++ b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.py
@@ -6,8 +6,5 @@
 
 from frappe.model.document import Document
 
-from erpnext.controllers.print_settings import print_settings_for_item_table
-
 class PurchaseInvoiceItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 72199a9..d8109f1 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -669,12 +669,12 @@
 		};
 	},
 	// When multiple companies are set up. in case company name is changed set default company address
-	company:function(frm){
-		if (frm.doc.company)
-		{
+	company: function(frm){
+		if (frm.doc.company) {
 			frappe.call({
-				method:"erpnext.setup.doctype.company.company.get_default_company_address",
-				args:{name:frm.doc.company, existing_address: frm.doc.company_address},
+				method: "erpnext.setup.doctype.company.company.get_default_company_address",
+				args: {name:frm.doc.company, existing_address: frm.doc.company_address || ""},
+				debounce: 2000,
 				callback: function(r){
 					if (r.message){
 						frm.set_value("company_address",r.message)
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 566734e..6e40186 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -53,7 +53,7 @@
 		"""Set indicator for portal"""
 		if self.outstanding_amount < 0:
 			self.indicator_title = _("Credit Note Issued")
-			self.indicator_color = "darkgrey"
+			self.indicator_color = "gray"
 		elif self.outstanding_amount > 0 and getdate(self.due_date) >= getdate(nowdate()):
 			self.indicator_color = "orange"
 			self.indicator_title = _("Unpaid")
@@ -62,7 +62,7 @@
 			self.indicator_title = _("Overdue")
 		elif cint(self.is_return) == 1:
 			self.indicator_title = _("Return")
-			self.indicator_color = "darkgrey"
+			self.indicator_color = "gray"
 		else:
 			self.indicator_color = "green"
 			self.indicator_title = _("Paid")
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js
index 41140d1..1a01cb5 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js
@@ -10,8 +10,8 @@
 			"Draft": "grey",
 			"Unpaid": "orange",
 			"Paid": "green",
-			"Return": "darkgrey",
-			"Credit Note Issued": "darkgrey",
+			"Return": "gray",
+			"Credit Note Issued": "gray",
 			"Unpaid and Discounted": "orange",
 			"Overdue and Discounted": "red",
 			"Overdue": "red",
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index 5435d3b..68e750f 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -1770,59 +1770,59 @@
 		self.assertEqual(target_doc.company, "_Test Company 1")
 		self.assertEqual(target_doc.supplier, "_Test Internal Supplier")
 
-	# def test_internal_transfer_gl_entry(self):
-	# 	## Create internal transfer account
-	# 	account = create_account(account_name="Unrealized Profit",
-	# 		parent_account="Current Liabilities - TCP1", company="_Test Company with perpetual inventory")
+	def test_internal_transfer_gl_entry(self):
+		## Create internal transfer account
+		account = create_account(account_name="Unrealized Profit",
+			parent_account="Current Liabilities - TCP1", company="_Test Company with perpetual inventory")
 
-	# 	frappe.db.set_value('Company', '_Test Company with perpetual inventory',
-	# 		'unrealized_profit_loss_account', account)
+		frappe.db.set_value('Company', '_Test Company with perpetual inventory',
+			'unrealized_profit_loss_account', account)
 
-	# 	customer = create_internal_customer("_Test Internal Customer 2", "_Test Company with perpetual inventory",
-	# 		"_Test Company with perpetual inventory")
+		customer = create_internal_customer("_Test Internal Customer 2", "_Test Company with perpetual inventory",
+			"_Test Company with perpetual inventory")
 
-	# 	create_internal_supplier("_Test Internal Supplier 2", "_Test Company with perpetual inventory",
-	# 		"_Test Company with perpetual inventory")
+		create_internal_supplier("_Test Internal Supplier 2", "_Test Company with perpetual inventory",
+			"_Test Company with perpetual inventory")
 
-	# 	si = create_sales_invoice(
-	# 		company = "_Test Company with perpetual inventory",
-	# 		customer = customer,
-	# 		debit_to = "Debtors - TCP1",
-	# 		warehouse = "Stores - TCP1",
-	# 		income_account = "Sales - TCP1",
-	# 		expense_account = "Cost of Goods Sold - TCP1",
-	# 		cost_center = "Main - TCP1",
-	# 		currency = "INR",
-	# 		do_not_save = 1
-	# 	)
+		si = create_sales_invoice(
+			company = "_Test Company with perpetual inventory",
+			customer = customer,
+			debit_to = "Debtors - TCP1",
+			warehouse = "Stores - TCP1",
+			income_account = "Sales - TCP1",
+			expense_account = "Cost of Goods Sold - TCP1",
+			cost_center = "Main - TCP1",
+			currency = "INR",
+			do_not_save = 1
+		)
 
-	# 	si.selling_price_list = "_Test Price List Rest of the World"
-	# 	si.update_stock = 1
-	# 	si.items[0].target_warehouse = 'Work In Progress - TCP1'
-	# 	add_taxes(si)
-	# 	si.save()
-	# 	si.submit()
+		si.selling_price_list = "_Test Price List Rest of the World"
+		si.update_stock = 1
+		si.items[0].target_warehouse = 'Work In Progress - TCP1'
+		add_taxes(si)
+		si.save()
+		si.submit()
 
-	# 	target_doc = make_inter_company_transaction("Sales Invoice", si.name)
-	# 	target_doc.company = '_Test Company with perpetual inventory'
-	# 	target_doc.items[0].warehouse = 'Finished Goods - TCP1'
-	# 	add_taxes(target_doc)
-	# 	target_doc.save()
-	# 	target_doc.submit()
+		target_doc = make_inter_company_transaction("Sales Invoice", si.name)
+		target_doc.company = '_Test Company with perpetual inventory'
+		target_doc.items[0].warehouse = 'Finished Goods - TCP1'
+		add_taxes(target_doc)
+		target_doc.save()
+		target_doc.submit()
 
-	# 	si_gl_entries = [
-	# 		["_Test Account Excise Duty - TCP1", 0.0, 12.0, nowdate()],
-	# 		["Unrealized Profit - TCP1", 12.0, 0.0, nowdate()]
-	# 	]
+		si_gl_entries = [
+			["_Test Account Excise Duty - TCP1", 0.0, 12.0, nowdate()],
+			["Unrealized Profit - TCP1", 12.0, 0.0, nowdate()]
+		]
 
-	# 	check_gl_entries(self, si.name, si_gl_entries, add_days(nowdate(), -1))
+		check_gl_entries(self, si.name, si_gl_entries, add_days(nowdate(), -1))
 
-	# 	pi_gl_entries = [
-	# 		["_Test Account Excise Duty - TCP1", 12.0 , 0.0, nowdate()],
-	# 		["Unrealized Profit - TCP1", 0.0, 12.0, nowdate()]
-	# 	]
+		pi_gl_entries = [
+			["_Test Account Excise Duty - TCP1", 12.0 , 0.0, nowdate()],
+			["Unrealized Profit - TCP1", 0.0, 12.0, nowdate()]
+		]
 
-	# 	check_gl_entries(self, target_doc.name, pi_gl_entries, add_days(nowdate(), -1))
+		check_gl_entries(self, target_doc.name, pi_gl_entries, add_days(nowdate(), -1))
 
 	def test_eway_bill_json(self):
 		si = make_sales_invoice_for_ewaybill()
diff --git a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py
index 7a62f8e..a73b03a 100644
--- a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py
+++ b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py
@@ -5,8 +5,6 @@
 import frappe
 
 from frappe.model.document import Document
-from erpnext.controllers.print_settings import print_settings_for_item_table
 
 class SalesInvoiceItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js
index 97a6fdd..0e01188 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js
@@ -5,3 +5,25 @@
 
 {% include "erpnext/public/js/controllers/accounts.js" %}
 
+frappe.tour['Sales Taxes and Charges Template'] = [
+	{
+		fieldname: "title",
+		title: __("Title"),
+		description: __("A name by which you will identify this template. You can change this later."),
+	},
+	{
+		fieldname: "company",
+		title: __("Company"),
+		description: __("Company for which this tax template will be applicable"),
+	},
+	{
+		fieldname: "is_default",
+		title: __("Is this Default?"),
+		description: __("Set this template as the default for all sales transactions"),
+	},
+	{
+		fieldname: "taxes",
+		title: __("Taxes Table"),
+		description: __("You can add a row for a tax rule here. These rules can be applied on the net total, or can be a flat amount."),
+	}
+];
diff --git a/erpnext/accounts/doctype/subscription/subscription_list.js b/erpnext/accounts/doctype/subscription/subscription_list.js
index a4edb77..c7325fb 100644
--- a/erpnext/accounts/doctype/subscription/subscription_list.js
+++ b/erpnext/accounts/doctype/subscription/subscription_list.js
@@ -11,7 +11,7 @@
 		} else if(doc.status === 'Unpaid') {
 			return [__("Unpaid"), "red"];
 		} else if(doc.status === 'Cancelled') {
-			return [__("Cancelled"), "darkgrey"];
+			return [__("Cancelled"), "gray"];
 		}
 	}
 };
\ No newline at end of file
diff --git a/erpnext/accounts/module_onboarding/accounts/accounts.json b/erpnext/accounts/module_onboarding/accounts/accounts.json
index 570d2bd..6b5c5a1 100644
--- a/erpnext/accounts/module_onboarding/accounts/accounts.json
+++ b/erpnext/accounts/module_onboarding/accounts/accounts.json
@@ -13,7 +13,7 @@
  "documentation_url": "https://docs.erpnext.com/docs/user/manual/en/accounts",
  "idx": 0,
  "is_complete": 0,
- "modified": "2020-07-08 14:06:09.033880",
+ "modified": "2020-10-30 15:41:15.547225",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Accounts",
diff --git a/erpnext/accounts/onboarding_step/chart_of_accounts/chart_of_accounts.json b/erpnext/accounts/onboarding_step/chart_of_accounts/chart_of_accounts.json
index 48637bf..fc49bd6 100644
--- a/erpnext/accounts/onboarding_step/chart_of_accounts/chart_of_accounts.json
+++ b/erpnext/accounts/onboarding_step/chart_of_accounts/chart_of_accounts.json
@@ -1,19 +1,24 @@
 {
  "action": "Go to Page",
+ "action_label": "View Chart of Accounts",
+ "callback_message": "You can continue with the onboarding after exploring this page",
+ "callback_title": "Awesome Work",
  "creation": "2020-05-13 19:58:20.928127",
+ "description": "# Chart Of Accounts\n\nThe Chart of Accounts is the blueprint of the accounts in your organization.\nIt is a tree view of the names of the Accounts (Ledgers and Groups) that a Company requires to manage its books of accounts. ERPNext sets up a simple chart of accounts for each Company you create, but you can modify it according to your needs and legal requirements.\n\nFor each company, Chart of Accounts signifies the way to classify the accounting entries, mostly\nbased on statutory (tax, compliance to government regulations) requirements.\n\nThere's a brief video tutorial about chart of accounts in the next step.",
  "docstatus": 0,
  "doctype": "Onboarding Step",
  "idx": 0,
+ "intro_video_url": "https://www.youtube.com/embed/AcfMCT7wLLo",
  "is_complete": 0,
- "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-14 17:40:28.410447",
+ "modified": "2020-10-30 14:35:59.474920",
  "modified_by": "Administrator",
  "name": "Chart of Accounts",
  "owner": "Administrator",
  "path": "Tree/Account",
  "reference_document": "Account",
+ "show_form_tour": 0,
  "show_full_form": 0,
  "title": "Review Chart of Accounts",
  "validate_action": 0
diff --git a/erpnext/accounts/onboarding_step/configure_account_settings/configure_account_settings.json b/erpnext/accounts/onboarding_step/configure_account_settings/configure_account_settings.json
index c8be357..c84430a 100644
--- a/erpnext/accounts/onboarding_step/configure_account_settings/configure_account_settings.json
+++ b/erpnext/accounts/onboarding_step/configure_account_settings/configure_account_settings.json
@@ -1,18 +1,19 @@
 {
- "action": "Create Entry",
+ "action": "Show Form Tour",
  "creation": "2020-05-14 17:53:00.876946",
+ "description": "# Account Settings\n\nThis is a crucial piece of configuration. There are various account settings in ERPNext to restrict and configure actions in the Accounting module.\n\nThe following settings are avaialble for you to configure\n\n1. Account Freezing \n2. Credit and Overbilling\n3. Invoicing and Tax Automations\n4. Balance Sheet configurations\n\nThere's much more, you can check it all out in this step",
  "docstatus": 0,
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 0,
  "is_single": 1,
  "is_skipped": 0,
- "modified": "2020-05-14 18:06:25.212923",
+ "modified": "2020-10-19 14:40:55.584484",
  "modified_by": "Administrator",
  "name": "Configure Account Settings",
  "owner": "Administrator",
  "reference_document": "Accounts Settings",
+ "show_form_tour": 0,
  "show_full_form": 1,
  "title": "Configure Account Settings",
  "validate_action": 1
diff --git a/erpnext/accounts/onboarding_step/create_a_customer/create_a_customer.json b/erpnext/accounts/onboarding_step/create_a_customer/create_a_customer.json
index 5a403b0..0b6750c 100644
--- a/erpnext/accounts/onboarding_step/create_a_customer/create_a_customer.json
+++ b/erpnext/accounts/onboarding_step/create_a_customer/create_a_customer.json
@@ -1,18 +1,19 @@
 {
  "action": "Create Entry",
  "creation": "2020-05-14 17:46:41.831517",
+ "description": "## Who is a Customer?\n\nA customer, who is sometimes known as a client, buyer, or purchaser is the one who receives goods, services, products, or ideas, from a seller for a monetary consideration.\n\nEvery customer needs to be assigned a unique id. Customer name itself can be the id or you can set a naming series for ids to be generated in Selling Settings.\n\nJust like the supplier, let's quickly create a customer.",
  "docstatus": 0,
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-06-01 13:16:19.731719",
+ "modified": "2020-10-30 15:28:46.659660",
  "modified_by": "Administrator",
  "name": "Create a Customer",
  "owner": "Administrator",
  "reference_document": "Customer",
+ "show_form_tour": 0,
  "show_full_form": 0,
  "title": "Create a Customer",
  "validate_action": 1
diff --git a/erpnext/accounts/onboarding_step/create_a_product/create_a_product.json b/erpnext/accounts/onboarding_step/create_a_product/create_a_product.json
index d2068e1..d76f645 100644
--- a/erpnext/accounts/onboarding_step/create_a_product/create_a_product.json
+++ b/erpnext/accounts/onboarding_step/create_a_product/create_a_product.json
@@ -1,19 +1,21 @@
 {
  "action": "Create Entry",
  "creation": "2020-05-12 18:16:06.624554",
+ "description": "## Products and Services\n\nDepending on the nature of your business, you might be selling products or services to your clients or even both. \nERPNext is optimized for itemized management of your sales and purchase.\n\nThe **Item Master**  is where you can add all your sales items. If you are in services, you can create an Item for each service that you offer. If you run a manufacturing business, the same master is used for keeping a record of raw materials, sub-assemblies etc.\n\nCompleting the Item Master is very essential for the successful implementation of ERPNext. We have a brief video introducing the item master for you, you can watch it in the next step.",
  "docstatus": 0,
  "doctype": "Onboarding Step",
  "idx": 0,
+ "intro_video_url": "https://www.youtube.com/watch?v=Sl5UFA5H5EQ",
  "is_complete": 0,
- "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-12 18:30:02.489949",
+ "modified": "2020-10-30 15:20:30.133495",
  "modified_by": "Administrator",
  "name": "Create a Product",
  "owner": "Administrator",
  "reference_document": "Item",
+ "show_form_tour": 0,
  "show_full_form": 0,
- "title": "Create a Product",
+ "title": "Create a Sales Item",
  "validate_action": 1
 }
\ No newline at end of file
diff --git a/erpnext/accounts/onboarding_step/create_a_supplier/create_a_supplier.json b/erpnext/accounts/onboarding_step/create_a_supplier/create_a_supplier.json
index 7a64224..64bc7bb 100644
--- a/erpnext/accounts/onboarding_step/create_a_supplier/create_a_supplier.json
+++ b/erpnext/accounts/onboarding_step/create_a_supplier/create_a_supplier.json
@@ -1,18 +1,19 @@
 {
  "action": "Create Entry",
  "creation": "2020-05-14 22:09:10.043554",
+ "description": "## Who is a Supplier?\n\nSuppliers are companies or individuals who provide you with products or services. ERPNext has comprehensive features for purchase cycles. \n\nLet's quickly create a supplier with the minimal details required. You need the name of the supplier, assign the supplier to a group, and select the type of the supplier, viz. Company or Individual.",
  "docstatus": 0,
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-14 22:09:10.043554",
+ "modified": "2020-10-30 15:26:48.315772",
  "modified_by": "Administrator",
  "name": "Create a Supplier",
  "owner": "Administrator",
  "reference_document": "Supplier",
+ "show_form_tour": 0,
  "show_full_form": 0,
  "title": "Create a Supplier",
  "validate_action": 1
diff --git a/erpnext/accounts/onboarding_step/create_your_first_purchase_invoice/create_your_first_purchase_invoice.json b/erpnext/accounts/onboarding_step/create_your_first_purchase_invoice/create_your_first_purchase_invoice.json
index 3a2b8d3..ddbc89e 100644
--- a/erpnext/accounts/onboarding_step/create_your_first_purchase_invoice/create_your_first_purchase_invoice.json
+++ b/erpnext/accounts/onboarding_step/create_your_first_purchase_invoice/create_your_first_purchase_invoice.json
@@ -1,18 +1,19 @@
 {
  "action": "Create Entry",
  "creation": "2020-05-14 22:10:07.049704",
+ "description": "# What's a Purchase Invoice?\n\nA Purchase Invoice is a bill you receive from your Suppliers against which you need to make the payment.\nPurchase Invoice is the exact opposite of your Sales Invoice. Here you accrue expenses to your Supplier. \n\nThe following is what a typical purchase cycle looks like, however you can create a purchase invoice directly as well.\n\n![Purchase Flow](https://docs.erpnext.com/docs/assets/img/accounts/pi-flow.png)\n\n",
  "docstatus": 0,
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-14 22:10:07.049704",
+ "modified": "2020-10-30 15:30:26.337773",
  "modified_by": "Administrator",
  "name": "Create Your First Purchase Invoice",
  "owner": "Administrator",
  "reference_document": "Purchase Invoice",
+ "show_form_tour": 0,
  "show_full_form": 1,
  "title": "Create Your First Purchase Invoice ",
  "validate_action": 1
diff --git a/erpnext/accounts/onboarding_step/create_your_first_sales_invoice/create_your_first_sales_invoice.json b/erpnext/accounts/onboarding_step/create_your_first_sales_invoice/create_your_first_sales_invoice.json
index 473de50..9e7dd67 100644
--- a/erpnext/accounts/onboarding_step/create_your_first_sales_invoice/create_your_first_sales_invoice.json
+++ b/erpnext/accounts/onboarding_step/create_your_first_sales_invoice/create_your_first_sales_invoice.json
@@ -1,18 +1,19 @@
 {
  "action": "Create Entry",
  "creation": "2020-05-14 17:48:21.019019",
+ "description": "# All about sales invoice\n\nA Sales Invoice is a bill that you send to your Customers against which the Customer makes the payment. Sales Invoice is an accounting transaction. On submission of Sales Invoice, the system updates the receivable and books income against a Customer Account.\n\nHere's the flow of how a sales invoice is generally created\n\n\n![Sales Flow](https://docs.erpnext.com/docs/assets/img/accounts/so-flow.png)",
  "docstatus": 0,
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-14 17:48:21.019019",
+ "modified": "2020-10-16 12:59:16.987507",
  "modified_by": "Administrator",
  "name": "Create Your First Sales Invoice",
  "owner": "Administrator",
  "reference_document": "Sales Invoice",
+ "show_form_tour": 0,
  "show_full_form": 1,
  "title": "Create Your First Sales Invoice ",
  "validate_action": 1
diff --git a/erpnext/accounts/onboarding_step/setup_taxes/setup_taxes.json b/erpnext/accounts/onboarding_step/setup_taxes/setup_taxes.json
index 8e00067..a492201 100644
--- a/erpnext/accounts/onboarding_step/setup_taxes/setup_taxes.json
+++ b/erpnext/accounts/onboarding_step/setup_taxes/setup_taxes.json
@@ -1,18 +1,20 @@
 {
  "action": "Create Entry",
+ "action_label": "Make a Sales Tax Template",
  "creation": "2020-05-13 19:29:43.844463",
+ "description": "# Setting up Taxes\n\nAny sophisticated accounting system, including ERPNext will have automatic tax calculations for your transactions. These calculations are based on user defined rules in compliance to local rules and regulations.\n\nERPNext allows this via *Tax Templates*. These templates can be used in Sales Orders and Sales Invoices. Other types of charges that may apply to your invoices (like shipping, insurance etc.) can also be configured as taxes.\n\nFor Tax Accounts that you want to use in the tax templates, go to:\n\n`> Accounting > Taxes > Sales Taxes and Charges Template`\n\nYou can read more about these templates in our documentation [here](https://docs.erpnext.com/docs/user/manual/en/selling/sales-taxes-and-charges-template)\n",
  "docstatus": 0,
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-14 17:40:16.014413",
+ "modified": "2020-10-30 14:54:18.087383",
  "modified_by": "Administrator",
  "name": "Setup Taxes",
  "owner": "Administrator",
  "reference_document": "Sales Taxes and Charges Template",
+ "show_form_tour": 1,
  "show_full_form": 1,
  "title": "Lets create a Tax Template for Sales ",
  "validate_action": 0
diff --git a/erpnext/accounts/print_format/sales_invoice_return/sales_invoice_return.html b/erpnext/accounts/print_format/sales_invoice_return/sales_invoice_return.html
index 1d758e8..3d5a9b1 100644
--- a/erpnext/accounts/print_format/sales_invoice_return/sales_invoice_return.html
+++ b/erpnext/accounts/print_format/sales_invoice_return/sales_invoice_return.html
@@ -1,5 +1,5 @@
 {%- from "templates/print_formats/standard_macros.html" import add_header, render_field, print_value, fieldmeta,
-	get_width, get_align_class -%}
+	get_width, get_align_class with context -%}
 
 {%- macro render_currency(df, doc) -%}
 <div class="row {% if df.bold %}important{% endif %} data-field">
@@ -63,14 +63,19 @@
 					<tr>
 						<td class="table-sr">{{ d.idx }}</td>
 						{% for tdf in visible_columns %}
-						{% if not d.flags.compact_item_print or tdf.fieldname in doc.get(df.fieldname)[0].flags.compact_item_fields %}
+						{% if not print_settings.compact_item_print or tdf.fieldname in doc.flags.compact_item_fields %}
 							<td class="{{ get_align_class(tdf) }}" {{ fieldmeta(df) }}>
 								{% if tdf.fieldname == 'qty' %}
 									<div class="value">{{ (d[tdf.fieldname])|abs }}</div></td>
 								{% elif tdf.fieldtype == 'Currency' %}
 									<div class="value">{{ frappe.utils.fmt_money((d[tdf.fieldname])|abs, currency=doc.currency) }}</div></td>
 								{% else %}
-									<div class="value">{{ print_value(tdf, d, doc, visible_columns) }}</div></td>
+									{% if doc.child_print_templates %}
+										{%- set child_templates = doc.child_print_templates.get(df.fieldname) -%}
+											<div class="value">{{ print_value(tdf, d, doc, visible_columns, child_templates) }}</div></td>
+										{% else %}
+											<div class="value">{{ print_value(tdf, d, doc, visible_columns) }}</div></td>
+									{% endif %}
 								{% endif %}
 						{% endif %}
 						{% endfor %}
diff --git a/erpnext/accounts/report/balance_sheet/balance_sheet.py b/erpnext/accounts/report/balance_sheet/balance_sheet.py
index a858c19..1729abc 100644
--- a/erpnext/accounts/report/balance_sheet/balance_sheet.py
+++ b/erpnext/accounts/report/balance_sheet/balance_sheet.py
@@ -147,7 +147,6 @@
 		{
 			"value": net_asset,
 			"label": "Total Asset",
-			"indicator": "Green",
 			"datatype": "Currency",
 			"currency": currency
 		},
@@ -155,14 +154,12 @@
 			"value": net_liability,
 			"label": "Total Liability",
 			"datatype": "Currency",
-			"indicator": "Red",
 			"currency": currency
 		},
 		{
 			"value": net_equity,
 			"label": "Total Equity",
 			"datatype": "Currency",
-			"indicator": "Blue",
 			"currency": currency
 		},
 		{
diff --git a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
index b34d037..fe261b3 100644
--- a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
+++ b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py
@@ -60,23 +60,25 @@
 
 	return [
 		{
-			"value": net_profit,
-			"indicator": "Green" if net_profit > 0 else "Red",
-			"label": profit_label,
-			"datatype": "Currency",
-			"currency": currency
-		},
-		{
 			"value": net_income,
 			"label": income_label,
 			"datatype": "Currency",
 			"currency": currency
 		},
+		{ "type": "separator", "value": "-"},
 		{
 			"value": net_expense,
 			"label": expense_label,
 			"datatype": "Currency",
 			"currency": currency
+		},
+		{ "type": "separator", "value": "=", "color": "blue"},
+		{
+			"value": net_profit,
+			"indicator": "Green" if net_profit > 0 else "Red",
+			"label": profit_label,
+			"datatype": "Currency",
+			"currency": currency
 		}
 	]
 
diff --git a/erpnext/accounts/workspace/accounting/accounting.json b/erpnext/accounts/workspace/accounting/accounting.json
new file mode 100644
index 0000000..8d24ca8
--- /dev/null
+++ b/erpnext/accounts/workspace/accounting/accounting.json
@@ -0,0 +1,1119 @@
+{
+ "category": "Modules",
+ "charts": [
+  {
+   "chart_name": "Profit and Loss",
+   "label": "Profit and Loss"
+  }
+ ],
+ "creation": "2020-03-02 15:41:59.515192",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "accounting",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Accounting",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Accounting Masters",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Company",
+   "link_to": "Company",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Chart of Accounts",
+   "link_to": "Account",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Accounts Settings",
+   "link_to": "Accounts Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Fiscal Year",
+   "link_to": "Fiscal Year",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Accounting Dimension",
+   "link_to": "Accounting Dimension",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Finance Book",
+   "link_to": "Finance Book",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Accounting Period",
+   "link_to": "Accounting Period",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payment Term",
+   "link_to": "Payment Term",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "General Ledger",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Journal Entry",
+   "link_to": "Journal Entry",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Journal Entry Template",
+   "link_to": "Journal Entry Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "GL Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "General Ledger",
+   "link_to": "General Ledger",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Customer Ledger Summary",
+   "link_to": "Customer Ledger Summary",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Supplier Ledger Summary",
+   "link_to": "Supplier Ledger Summary",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Accounts Receivable",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sales Invoice",
+   "link_to": "Sales Invoice",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Customer",
+   "link_to": "Customer",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payment Entry",
+   "link_to": "Payment Entry",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payment Request",
+   "link_to": "Payment Request",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Accounts Receivable",
+   "link_to": "Accounts Receivable",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Accounts Receivable Summary",
+   "link_to": "Accounts Receivable Summary",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Register",
+   "link_to": "Sales Register",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Item-wise Sales Register",
+   "link_to": "Item-wise Sales Register",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Order Analysis",
+   "link_to": "Sales Order Analysis",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Delivered Items To Be Billed",
+   "link_to": "Delivered Items To Be Billed",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Accounts Payable",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Purchase Invoice",
+   "link_to": "Purchase Invoice",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Supplier",
+   "link_to": "Supplier",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payment Entry",
+   "link_to": "Payment Entry",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Purchase Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Accounts Payable",
+   "link_to": "Accounts Payable",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Purchase Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Accounts Payable Summary",
+   "link_to": "Accounts Payable Summary",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Purchase Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Purchase Register",
+   "link_to": "Purchase Register",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Purchase Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Item-wise Purchase Register",
+   "link_to": "Item-wise Purchase Register",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Purchase Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Purchase Order Analysis",
+   "link_to": "Purchase Order Analysis",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Purchase Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Received Items To Be Billed",
+   "link_to": "Received Items To Be Billed",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "GL Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Trial Balance for Party",
+   "link_to": "Trial Balance for Party",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Journal Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Payment Period Based On Invoice Date",
+   "link_to": "Payment Period Based On Invoice Date",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Partners Commission",
+   "link_to": "Sales Partners Commission",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Customer",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Customer Credit Balance",
+   "link_to": "Customer Credit Balance",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Payment Summary",
+   "link_to": "Sales Payment Summary",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Address",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Address And Contacts",
+   "link_to": "Address And Contacts",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "GL Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "DATEV Export",
+   "link_to": "DATEV",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Financial Statements",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "GL Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Trial Balance",
+   "link_to": "Trial Balance",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "GL Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Profit and Loss Statement",
+   "link_to": "Profit and Loss Statement",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "GL Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Balance Sheet",
+   "link_to": "Balance Sheet",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "GL Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Cash Flow",
+   "link_to": "Cash Flow",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "GL Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Consolidated Financial Statement",
+   "link_to": "Consolidated Financial Statement",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Multi Currency",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Currency",
+   "link_to": "Currency",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Currency Exchange",
+   "link_to": "Currency Exchange",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Exchange Rate Revaluation",
+   "link_to": "Exchange Rate Revaluation",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payment Gateway Account",
+   "link_to": "Payment Gateway Account",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Terms and Conditions Template",
+   "link_to": "Terms and Conditions",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Mode of Payment",
+   "link_to": "Mode of Payment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Bank Statement",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Bank",
+   "link_to": "Bank",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Bank Account",
+   "link_to": "Bank Account",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Bank Clearance",
+   "link_to": "Bank Clearance",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Bank Reconciliation",
+   "link_to": "bank-reconciliation",
+   "link_type": "Page",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "GL Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Bank Reconciliation Statement",
+   "link_to": "Bank Reconciliation Statement",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Bank Statement Transaction Entry",
+   "link_to": "Bank Statement Transaction Entry",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Bank Statement Settings",
+   "link_to": "Bank Statement Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Subscription Management",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Subscription Plan",
+   "link_to": "Subscription Plan",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Subscription",
+   "link_to": "Subscription",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Subscription Settings",
+   "link_to": "Subscription Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Goods and Services Tax (GST India)",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "GST Settings",
+   "link_to": "GST Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "GST HSN Code",
+   "link_to": "GST HSN Code",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "GSTR-1",
+   "link_to": "GSTR-1",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "GSTR-2",
+   "link_to": "GSTR-2",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "GSTR 3B Report",
+   "link_to": "GSTR 3B Report",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "GST Sales Register",
+   "link_to": "GST Sales Register",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "GST Purchase Register",
+   "link_to": "GST Purchase Register",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "GST Itemised Sales Register",
+   "link_to": "GST Itemised Sales Register",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "GST Itemised Purchase Register",
+   "link_to": "GST Itemised Purchase Register",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "C-Form",
+   "link_to": "C-Form",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Lower Deduction Certificate",
+   "link_to": "Lower Deduction Certificate",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Share Management",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Shareholder",
+   "link_to": "Shareholder",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Share Transfer",
+   "link_to": "Share Transfer",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Share Transfer",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Share Ledger",
+   "link_to": "Share Ledger",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Share Transfer",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Share Balance",
+   "link_to": "Share Balance",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Cost Center and Budgeting",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Chart of Cost Centers",
+   "link_to": "Cost Center",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Budget",
+   "link_to": "Budget",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Accounting Dimension",
+   "link_to": "Accounting Dimension",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Cost Center",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Budget Variance Report",
+   "link_to": "Budget Variance Report",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Monthly Distribution",
+   "link_to": "Monthly Distribution",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Opening and Closing",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Opening Invoice Creation Tool",
+   "link_to": "Opening Invoice Creation Tool",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Chart of Accounts Importer",
+   "link_to": "Chart of Accounts Importer",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Period Closing Voucher",
+   "link_to": "Period Closing Voucher",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Taxes",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sales Taxes and Charges Template",
+   "link_to": "Sales Taxes and Charges Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Purchase Taxes and Charges Template",
+   "link_to": "Purchase Taxes and Charges Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item Tax Template",
+   "link_to": "Item Tax Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Tax Category",
+   "link_to": "Tax Category",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Tax Rule",
+   "link_to": "Tax Rule",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Tax Withholding Category",
+   "link_to": "Tax Withholding Category",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Profitability",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Gross Profit",
+   "link_to": "Gross Profit",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "GL Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Profitability Analysis",
+   "link_to": "Profitability Analysis",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Invoice Trends",
+   "link_to": "Sales Invoice Trends",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Purchase Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Purchase Invoice Trends",
+   "link_to": "Purchase Invoice Trends",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:35.349024",
+ "modified_by": "Administrator",
+ "module": "Accounts",
+ "name": "Accounting",
+ "onboarding": "Accounts",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "label": "Chart Of Accounts",
+   "link_to": "Account",
+   "type": "DocType"
+  },
+  {
+   "label": "Sales Invoice",
+   "link_to": "Sales Invoice",
+   "type": "DocType"
+  },
+  {
+   "label": "Purchase Invoice",
+   "link_to": "Purchase Invoice",
+   "type": "DocType"
+  },
+  {
+   "label": "Journal Entry",
+   "link_to": "Journal Entry",
+   "type": "DocType"
+  },
+  {
+   "label": "Payment Entry",
+   "link_to": "Payment Entry",
+   "type": "DocType"
+  },
+  {
+   "label": "Accounts Receivable",
+   "link_to": "Accounts Receivable",
+   "type": "Report"
+  },
+  {
+   "label": "General Ledger",
+   "link_to": "General Ledger",
+   "type": "Report"
+  },
+  {
+   "label": "Trial Balance",
+   "link_to": "Trial Balance",
+   "type": "Report"
+  },
+  {
+   "label": "Dashboard",
+   "link_to": "Accounts",
+   "type": "Dashboard"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/agriculture/desk_page/agriculture/agriculture.json b/erpnext/agriculture/desk_page/agriculture/agriculture.json
deleted file mode 100644
index e0d2c9c..0000000
--- a/erpnext/agriculture/desk_page/agriculture/agriculture.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Crops & Lands",
-   "links": "[\n    {\n        \"label\": \"Crop\",\n        \"name\": \"Crop\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Crop Cycle\",\n        \"name\": \"Crop Cycle\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Location\",\n        \"name\": \"Location\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Analytics",
-   "links": "[\n    {\n        \"label\": \"Plant Analysis\",\n        \"name\": \"Plant Analysis\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Soil Analysis\",\n        \"name\": \"Soil Analysis\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Water Analysis\",\n        \"name\": \"Water Analysis\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Soil Texture\",\n        \"name\": \"Soil Texture\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Weather\",\n        \"name\": \"Weather\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Agriculture Analysis Criteria\",\n        \"name\": \"Agriculture Analysis Criteria\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Diseases & Fertilizers",
-   "links": "[\n    {\n        \"label\": \"Disease\",\n        \"name\": \"Disease\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Fertilizer\",\n        \"name\": \"Fertilizer\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    }\n]"
-  }
- ],
- "category": "Domains",
- "charts": [],
- "creation": "2020-03-02 17:23:34.339274",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Agriculture",
- "modified": "2020-04-01 11:28:51.032822",
- "modified_by": "Administrator",
- "module": "Agriculture",
- "name": "Agriculture",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "restrict_to_domain": "Agriculture",
- "shortcuts": []
-}
\ No newline at end of file
diff --git a/erpnext/agriculture/workspace/agriculture/agriculture.json b/erpnext/agriculture/workspace/agriculture/agriculture.json
new file mode 100644
index 0000000..2cc2524
--- /dev/null
+++ b/erpnext/agriculture/workspace/agriculture/agriculture.json
@@ -0,0 +1,157 @@
+{
+ "category": "Domains",
+ "charts": [],
+ "creation": "2020-03-02 17:23:34.339274",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "agriculture",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Agriculture",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Crops & Lands",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Crop",
+   "link_to": "Crop",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Crop Cycle",
+   "link_to": "Crop Cycle",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Location",
+   "link_to": "Location",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Analytics",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Plant Analysis",
+   "link_to": "Plant Analysis",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Soil Analysis",
+   "link_to": "Soil Analysis",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Water Analysis",
+   "link_to": "Water Analysis",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Soil Texture",
+   "link_to": "Soil Texture",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Weather",
+   "link_to": "Weather",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Agriculture Analysis Criteria",
+   "link_to": "Agriculture Analysis Criteria",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Diseases & Fertilizers",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Disease",
+   "link_to": "Disease",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Fertilizer",
+   "link_to": "Fertilizer",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:38.477493",
+ "modified_by": "Administrator",
+ "module": "Agriculture",
+ "name": "Agriculture",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Agriculture",
+ "shortcuts": []
+}
\ No newline at end of file
diff --git a/erpnext/assets/desk_page/assets/assets.json b/erpnext/assets/desk_page/assets/assets.json
deleted file mode 100644
index 449a5fa..0000000
--- a/erpnext/assets/desk_page/assets/assets.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Assets",
-   "links": "[\n    {\n        \"label\": \"Asset\",\n        \"name\": \"Asset\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Location\",\n        \"name\": \"Location\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Asset Category\",\n        \"name\": \"Asset Category\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Transfer an asset from one warehouse to another\",\n        \"label\": \"Asset Movement\",\n        \"name\": \"Asset Movement\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Maintenance",
-   "links": "[\n    {\n        \"label\": \"Asset Maintenance Team\",\n        \"name\": \"Asset Maintenance Team\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Asset Maintenance Team\"\n        ],\n        \"label\": \"Asset Maintenance\",\n        \"name\": \"Asset Maintenance\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Asset Maintenance\"\n        ],\n        \"label\": \"Asset Maintenance Log\",\n        \"name\": \"Asset Maintenance Log\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Asset\"\n        ],\n        \"label\": \"Asset Value Adjustment\",\n        \"name\": \"Asset Value Adjustment\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Asset\"\n        ],\n        \"label\": \"Asset Repair\",\n        \"name\": \"Asset Repair\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Asset\"\n        ],\n        \"doctype\": \"Asset\",\n        \"is_query_report\": true,\n        \"label\": \"Asset Depreciation Ledger\",\n        \"name\": \"Asset Depreciation Ledger\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Asset\"\n        ],\n        \"doctype\": \"Asset\",\n        \"is_query_report\": true,\n        \"label\": \"Asset Depreciations and Balances\",\n        \"name\": \"Asset Depreciations and Balances\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Asset Maintenance\"\n        ],\n        \"doctype\": \"Asset Maintenance\",\n        \"label\": \"Asset Maintenance\",\n        \"name\": \"Asset Maintenance\",\n        \"type\": \"report\"\n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [
-  {
-   "chart_name": "Asset Value Analytics",
-   "label": "Asset Value Analytics"
-  }
- ],
- "creation": "2020-03-02 15:43:27.634865",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Assets",
- "modified": "2020-05-20 18:05:23.994795",
- "modified_by": "Administrator",
- "module": "Assets",
- "name": "Assets",
- "onboarding": "Assets",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "label": "Asset",
-   "link_to": "Asset",
-   "type": "DocType"
-  },
-  {
-   "label": "Asset Category",
-   "link_to": "Asset Category",
-   "type": "DocType"
-  },
-  {
-   "label": "Fixed Asset Register",
-   "link_to": "Fixed Asset Register",
-   "type": "Report"
-  },
-  {
-   "label": "Dashboard",
-   "link_to": "Asset",
-   "type": "Dashboard"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 30abc66..1793dad 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -471,7 +471,7 @@
 
 		asset_bought_with_invoice = (purchase_document == self.purchase_invoice)
 		fixed_asset_account = self.get_fixed_asset_account()
-		
+
 		cwip_enabled = is_cwip_accounting_enabled(self.asset_category)
 		cwip_account = self.get_cwip_account(cwip_enabled=cwip_enabled)
 
@@ -503,10 +503,10 @@
 		purchase_document = self.purchase_invoice if asset_bought_with_invoice else self.purchase_receipt
 
 		return purchase_document
-	
+
 	def get_fixed_asset_account(self):
 		return get_asset_category_account('fixed_asset_account', None, self.name, None, self.asset_category, self.company)
-	
+
 	def get_cwip_account(self, cwip_enabled=False):
 		cwip_account = None
 		try:
@@ -659,7 +659,7 @@
 
 	frappe.db.commit()
 
-	frappe.msgprint(_("Asset Movement record {0} created").format("<a href='#Form/Asset Movement/{0}'>{0}</a>").format(movement_entry.name))
+	frappe.msgprint(_("Asset Movement record {0} created").format("<a href='/app/Form/Asset Movement/{0}'>{0}</a>").format(movement_entry.name))
 
 @frappe.whitelist()
 def get_item_details(item_code, asset_category):
diff --git a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.js b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.js
index 001fc26..70b8654 100644
--- a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.js
+++ b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.js
@@ -40,14 +40,13 @@
 					if(!r.message) {
 						return;
 					}
-					var section = frm.dashboard.add_section(`<h5 style="margin-top: 0px;">
-						${ __("Maintenance Log") }</a></h5>`);
+					const section = frm.dashboard.add_section('', __("Maintenance Log"));
 					var rows = $('<div></div>').appendTo(section);
 					// show
 					(r.message || []).forEach(function(d) {
 						$(`<div class='row' style='margin-bottom: 10px;'>
 							<div class='col-sm-3 small'>
-								<a onclick="frappe.set_route('List', 'Asset Maintenance Log', 
+								<a onclick="frappe.set_route('List', 'Asset Maintenance Log',
 									{'asset_name': '${d.asset_name}','maintenance_status': '${d.maintenance_status}' });">
 									${d.maintenance_status} <span class="badge">${d.count}</span>
 								</a>
diff --git a/erpnext/assets/workspace/assets/assets.json b/erpnext/assets/workspace/assets/assets.json
new file mode 100644
index 0000000..c401581
--- /dev/null
+++ b/erpnext/assets/workspace/assets/assets.json
@@ -0,0 +1,193 @@
+{
+ "category": "Modules",
+ "charts": [
+  {
+   "chart_name": "Asset Value Analytics",
+   "label": "Asset Value Analytics"
+  }
+ ],
+ "creation": "2020-03-02 15:43:27.634865",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "assets",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Assets",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Assets",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Asset",
+   "link_to": "Asset",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Location",
+   "link_to": "Location",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Asset Category",
+   "link_to": "Asset Category",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Asset Movement",
+   "link_to": "Asset Movement",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Maintenance",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Asset Maintenance Team",
+   "link_to": "Asset Maintenance Team",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Asset Maintenance Team",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Asset Maintenance",
+   "link_to": "Asset Maintenance",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Asset Maintenance",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Asset Maintenance Log",
+   "link_to": "Asset Maintenance Log",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Asset",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Asset Value Adjustment",
+   "link_to": "Asset Value Adjustment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Asset",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Asset Repair",
+   "link_to": "Asset Repair",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Asset",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Asset Depreciation Ledger",
+   "link_to": "Asset Depreciation Ledger",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Asset",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Asset Depreciations and Balances",
+   "link_to": "Asset Depreciations and Balances",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Asset Maintenance",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Asset Maintenance",
+   "link_to": "Asset Maintenance",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:37.977119",
+ "modified_by": "Administrator",
+ "module": "Assets",
+ "name": "Assets",
+ "onboarding": "Assets",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "label": "Asset",
+   "link_to": "Asset",
+   "type": "DocType"
+  },
+  {
+   "label": "Asset Category",
+   "link_to": "Asset Category",
+   "type": "DocType"
+  },
+  {
+   "label": "Fixed Asset Register",
+   "link_to": "Fixed Asset Register",
+   "type": "Report"
+  },
+  {
+   "label": "Dashboard",
+   "link_to": "Asset",
+   "type": "Dashboard"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/buying/desk_page/buying/buying.json b/erpnext/buying/desk_page/buying/buying.json
deleted file mode 100644
index 2e870fe..0000000
--- a/erpnext/buying/desk_page/buying/buying.json
+++ /dev/null
@@ -1,113 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Buying",
-   "links": "[   \n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"description\": \"Request for purchase.\",\n        \"label\": \"Material Request\",\n        \"name\": \"Material Request\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Supplier\"\n        ],\n        \"description\": \"Purchase Orders given to Suppliers.\",\n        \"label\": \"Purchase Order\",\n        \"name\": \"Purchase Order\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Supplier\"\n        ],\n        \"label\": \"Purchase Invoice\",\n        \"name\": \"Purchase Invoice\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Supplier\"\n        ],\n        \"description\": \"Request for quotation.\",\n        \"label\": \"Request for Quotation\",\n        \"name\": \"Request for Quotation\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Supplier\"\n        ],\n        \"description\": \"Quotations received from Suppliers.\",\n        \"label\": \"Supplier Quotation\",\n        \"name\": \"Supplier Quotation\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Items & Pricing",
-   "links": "[\n    {\n        \"description\": \"All Products or Services.\",\n        \"label\": \"Item\",\n        \"name\": \"Item\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Multiple Item prices.\",\n        \"label\": \"Item Price\",\n        \"name\": \"Item Price\",\n        \"onboard\": 1,\n        \"route\": \"#Report/Item Price\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Price List master.\",\n        \"label\": \"Price List\",\n        \"name\": \"Price List\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Bundle items at time of sale.\",\n        \"label\": \"Product Bundle\",\n        \"name\": \"Product Bundle\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tree of Item Groups.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Item Group\",\n        \"link\": \"Tree/Item Group\",\n        \"name\": \"Item Group\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Rules for applying different promotional schemes.\",\n        \"label\": \"Promotional Scheme\",\n        \"name\": \"Promotional Scheme\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Rules for applying pricing and discount.\",\n        \"label\": \"Pricing Rule\",\n        \"name\": \"Pricing Rule\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Settings",
-   "links": "[\n    {\n        \"description\": \"Default settings for buying transactions.\",\n        \"label\": \"Buying Settings\",\n        \"name\": \"Buying Settings\",\n        \"settings\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tax template for buying transactions.\",\n        \"label\": \"Purchase Taxes and Charges Template\",\n        \"name\": \"Purchase Taxes and Charges Template\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Template of terms or contract.\",\n        \"label\": \"Terms and Conditions Template\",\n        \"name\": \"Terms and Conditions\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Supplier",
-   "links": "[\n    {\n        \"description\": \"Supplier database.\",\n        \"label\": \"Supplier\",\n        \"name\": \"Supplier\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Supplier Group master.\",\n        \"label\": \"Supplier Group\",\n        \"name\": \"Supplier Group\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"All Contacts.\",\n        \"label\": \"Contact\",\n        \"name\": \"Contact\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"All Addresses.\",\n        \"label\": \"Address\",\n        \"name\": \"Address\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Supplier Scorecard",
-   "links": "[\n    {\n        \"description\": \"All Supplier scorecards.\",\n        \"label\": \"Supplier Scorecard\",\n        \"name\": \"Supplier Scorecard\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Templates of supplier scorecard variables.\",\n        \"label\": \"Supplier Scorecard Variable\",\n        \"name\": \"Supplier Scorecard Variable\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Templates of supplier scorecard criteria.\",\n        \"label\": \"Supplier Scorecard Criteria\",\n        \"name\": \"Supplier Scorecard Criteria\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Templates of supplier standings.\",\n        \"label\": \"Supplier Scorecard Standing\",\n        \"name\": \"Supplier Scorecard Standing\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Key Reports",
-   "links": "[\n    {\n        \"is_query_report\": true,\n        \"label\": \"Purchase Analytics\",\n        \"name\": \"Purchase Analytics\",\n        \"onboard\": 1,\n        \"reference_doctype\": \"Purchase Order\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Purchase Order Analysis\",\n        \"name\": \"Purchase Order Analysis\",\n        \"onboard\": 1,\n        \"reference_doctype\": \"Purchase Order\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Supplier-Wise Sales Analytics\",\n        \"name\": \"Supplier-Wise Sales Analytics\",\n        \"onboard\": 1,\n        \"reference_doctype\": \"Stock Ledger Entry\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Requested Items to Order\",\n        \"name\": \"Requested Items to Order\",\n        \"onboard\": 1,\n        \"reference_doctype\": \"Material Request\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Purchase Order Trends\",\n        \"name\": \"Purchase Order Trends\",\n        \"onboard\": 1,\n        \"reference_doctype\": \"Purchase Order\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Procurement Tracker\",\n        \"name\": \"Procurement Tracker\",\n        \"onboard\": 1,\n        \"reference_doctype\": \"Purchase Order\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Other Reports",
-   "links": "[\n    {\n        \"is_query_report\": true,\n        \"label\": \"Items To Be Requested\",\n        \"name\": \"Items To Be Requested\",\n        \"onboard\": 1,\n        \"reference_doctype\": \"Item\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Item-wise Purchase History\",\n        \"name\": \"Item-wise Purchase History\",\n        \"onboard\": 1,\n        \"reference_doctype\": \"Item\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Purchase Receipt Trends\",\n        \"name\": \"Purchase Receipt Trends\",\n        \"reference_doctype\": \"Purchase Receipt\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Purchase Invoice Trends\",\n        \"name\": \"Purchase Invoice Trends\",\n        \"reference_doctype\": \"Purchase Invoice\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Subcontracted Raw Materials To Be Transferred\",\n        \"name\": \"Subcontracted Raw Materials To Be Transferred\",\n        \"reference_doctype\": \"Purchase Order\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Subcontracted Item To Be Received\",\n        \"name\": \"Subcontracted Item To Be Received\",\n        \"reference_doctype\": \"Purchase Order\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Supplier Quotation Comparison\",\n        \"name\": \"Supplier Quotation Comparison\",\n        \"onboard\": 1,\n        \"reference_doctype\": \"Supplier Quotation\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Material Requests for which Supplier Quotations are not created\",\n        \"name\": \"Material Requests for which Supplier Quotations are not created\",\n        \"reference_doctype\": \"Material Request\",\n        \"type\": \"report\"\n    },\n    {\n        \"is_query_report\": true,\n        \"label\": \"Supplier Addresses And Contacts\",\n        \"name\": \"Address And Contacts\",\n        \"reference_doctype\": \"Address\",\n        \"route_options\": {\n            \"party_type\": \"Supplier\"\n        },\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Regional",
-   "links": "[\n     {\n        \"description\": \"Import Italian Purchase Invoices\",\n        \"label\": \"Import Supplier Invoice\",\n        \"name\": \"Import Supplier Invoice\",\n        \"type\": \"doctype\"\n    }    \n]"
-  }
- ],
- "cards_label": "",
- "category": "Modules",
- "charts": [
-  {
-   "chart_name": "Purchase Order Trends",
-   "label": "Purchase Order Trends"
-  }
- ],
- "charts_label": "",
- "creation": "2020-01-28 11:50:26.195467",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Buying",
- "modified": "2020-09-30 14:40:55.638458",
- "modified_by": "Administrator",
- "module": "Buying",
- "name": "Buying",
- "onboarding": "Buying",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "color": "#cef6d1",
-   "format": "{} Available",
-   "label": "Item",
-   "link_to": "Item",
-   "stats_filter": "{\n    \"disabled\": 0\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "#ffe8cd",
-   "format": "{} Pending",
-   "label": "Material Request",
-   "link_to": "Material Request",
-   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\": \"Pending\"\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "#ffe8cd",
-   "format": "{}  To Receive",
-   "label": "Purchase Order",
-   "link_to": "Purchase Order",
-   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\":[\"in\", [\"To Receive\", \"To Receive and Bill\"]]\n}",
-   "type": "DocType"
-  },
-  {
-   "label": "Purchase Analytics",
-   "link_to": "Purchase Analytics",
-   "type": "Report"
-  },
-  {
-   "label": "Purchase Order Analysis",
-   "link_to": "Purchase Order Analysis",
-   "type": "Report"
-  },
-  {
-   "label": "Dashboard",
-   "link_to": "Buying",
-   "type": "Dashboard"
-  }
- ],
- "shortcuts_label": ""
-}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py
index b711e36..8bdcd47 100644
--- a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py
+++ b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py
@@ -6,11 +6,8 @@
 
 from frappe.model.document import Document
 
-from erpnext.controllers.print_settings import print_settings_for_item_table
-
 class PurchaseOrderItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
 
 def on_doctype_update():
 	frappe.db.add_index("Purchase Order Item", ["item_code", "warehouse"])
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index ae5611f..6a4c02c 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -71,7 +71,7 @@
 			doc_sup = doc_sup[0] if doc_sup else None
 			if not doc_sup:
 				frappe.throw(_("Supplier {0} not found in {1}").format(self.supplier,
-					"<a href='desk#Form/Request for Quotation/{0}'> Request for Quotation {0} </a>".format(doc.name)))
+					"<a href='desk/app/Form/Request for Quotation/{0}'> Request for Quotation {0} </a>".format(doc.name)))
 
 			quote_status = _('Received')
 			for item in doc.items:
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js
index 9f4fece..5ab6c98 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js
@@ -4,9 +4,9 @@
 		if(doc.status==="Ordered") {
 			return [__("Ordered"), "green", "status,=,Ordered"];
 		} else if(doc.status==="Rejected") {
-			return [__("Lost"), "darkgrey", "status,=,Lost"];
+			return [__("Lost"), "gray", "status,=,Lost"];
 		} else if(doc.status==="Expired") {
-			return [__("Expired"), "darkgrey", "status,=,Expired"];
+			return [__("Expired"), "gray", "status,=,Expired"];
 		}
 	}
 };
diff --git a/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.py b/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.py
index f24e5be..64dda87 100644
--- a/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.py
+++ b/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.py
@@ -6,8 +6,5 @@
 
 from frappe.model.document import Document
 
-from erpnext.controllers.print_settings import print_settings_for_item_table
-
 class SupplierQuotationItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
diff --git a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_list.js b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_list.js
index c50916e..dc5474e 100644
--- a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_list.js
+++ b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_list.js
@@ -10,7 +10,7 @@
 		if (doc.indicator_color) {
 			return [__(doc.status), doc.indicator_color.toLowerCase(), "status,=," + doc.status];
 		} else {
-			return [__("Unknown"), "darkgrey", "status,=,''"];
+			return [__("Unknown"), "gray", "status,=,''"];
 		}
 	},
 
diff --git a/erpnext/buying/workspace/buying/buying.json b/erpnext/buying/workspace/buying/buying.json
new file mode 100644
index 0000000..6c9c0f3
--- /dev/null
+++ b/erpnext/buying/workspace/buying/buying.json
@@ -0,0 +1,520 @@
+{
+ "cards_label": "",
+ "category": "Modules",
+ "charts": [
+  {
+   "chart_name": "Purchase Order Trends",
+   "label": "Purchase Order Trends"
+  }
+ ],
+ "charts_label": "",
+ "creation": "2020-01-28 11:50:26.195467",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "buying",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Buying",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Buying",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Material Request",
+   "link_to": "Material Request",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Supplier",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Purchase Order",
+   "link_to": "Purchase Order",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Supplier",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Purchase Invoice",
+   "link_to": "Purchase Invoice",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Supplier",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Request for Quotation",
+   "link_to": "Request for Quotation",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Supplier",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Supplier Quotation",
+   "link_to": "Supplier Quotation",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Items & Pricing",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item",
+   "link_to": "Item",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item Price",
+   "link_to": "Item Price",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Price List",
+   "link_to": "Price List",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Product Bundle",
+   "link_to": "Product Bundle",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item Group",
+   "link_to": "Item Group",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Promotional Scheme",
+   "link_to": "Promotional Scheme",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Pricing Rule",
+   "link_to": "Pricing Rule",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Buying Settings",
+   "link_to": "Buying Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Purchase Taxes and Charges Template",
+   "link_to": "Purchase Taxes and Charges Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Terms and Conditions Template",
+   "link_to": "Terms and Conditions",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Supplier",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Supplier",
+   "link_to": "Supplier",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Supplier Group",
+   "link_to": "Supplier Group",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Contact",
+   "link_to": "Contact",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Address",
+   "link_to": "Address",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Supplier Scorecard",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Supplier Scorecard",
+   "link_to": "Supplier Scorecard",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Supplier Scorecard Variable",
+   "link_to": "Supplier Scorecard Variable",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Supplier Scorecard Criteria",
+   "link_to": "Supplier Scorecard Criteria",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Supplier Scorecard Standing",
+   "link_to": "Supplier Scorecard Standing",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Key Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Purchase Analytics",
+   "link_to": "Purchase Analytics",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Purchase Order Analysis",
+   "link_to": "Purchase Order Analysis",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Supplier-Wise Sales Analytics",
+   "link_to": "Supplier-Wise Sales Analytics",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Items to Order and Receive",
+   "link_to": "Requested Items to Order and Receive",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Purchase Order Trends",
+   "link_to": "Purchase Order Trends",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Procurement Tracker",
+   "link_to": "Procurement Tracker",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Other Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Items To Be Requested",
+   "link_to": "Items To Be Requested",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Item-wise Purchase History",
+   "link_to": "Item-wise Purchase History",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Purchase Receipt Trends",
+   "link_to": "Purchase Receipt Trends",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Purchase Invoice Trends",
+   "link_to": "Purchase Invoice Trends",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Subcontracted Raw Materials To Be Transferred",
+   "link_to": "Subcontracted Raw Materials To Be Transferred",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Subcontracted Item To Be Received",
+   "link_to": "Subcontracted Item To Be Received",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Supplier Quotation Comparison",
+   "link_to": "Supplier Quotation Comparison",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Material Requests for which Supplier Quotations are not created",
+   "link_to": "Material Requests for which Supplier Quotations are not created",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Supplier Addresses And Contacts",
+   "link_to": "Address And Contacts",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Regional",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Import Supplier Invoice",
+   "link_to": "Import Supplier Invoice",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:38.615167",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Buying",
+ "onboarding": "Buying",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "color": "Green",
+   "format": "{} Available",
+   "label": "Item",
+   "link_to": "Item",
+   "stats_filter": "{\n    \"disabled\": 0\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Yellow",
+   "format": "{} Pending",
+   "label": "Material Request",
+   "link_to": "Material Request",
+   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\": \"Pending\"\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Yellow",
+   "format": "{}  To Receive",
+   "label": "Purchase Order",
+   "link_to": "Purchase Order",
+   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\":[\"in\", [\"To Receive\", \"To Receive and Bill\"]]\n}",
+   "type": "DocType"
+  },
+  {
+   "label": "Purchase Analytics",
+   "link_to": "Purchase Analytics",
+   "type": "Report"
+  },
+  {
+   "label": "Purchase Order Analysis",
+   "link_to": "Purchase Order Analysis",
+   "type": "Report"
+  },
+  {
+   "label": "Dashboard",
+   "link_to": "Buying",
+   "type": "Dashboard"
+  }
+ ],
+ "shortcuts_label": ""
+}
\ No newline at end of file
diff --git a/erpnext/config/__init__.py b/erpnext/config/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/config/__init__.py
+++ /dev/null
diff --git a/erpnext/config/accounts.py b/erpnext/config/accounts.py
deleted file mode 100644
index 839c4ad..0000000
--- a/erpnext/config/accounts.py
+++ /dev/null
@@ -1,626 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-import frappe
-
-
-def get_data():
-	config = [
-		{
-			"label": _("Accounts Receivable"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Sales Invoice",
-					"description": _("Bills raised to Customers."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Customer",
-					"description": _("Customer database."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Payment Entry",
-					"description": _("Bank/Cash transactions against party or for internal transfer")
-				},
-				{
-					"type": "doctype",
-					"name": "Payment Request",
-					"description": _("Payment Request"),
-				},
-				{
-					"type": "report",
-					"name": "Accounts Receivable",
-					"doctype": "Sales Invoice",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Accounts Receivable Summary",
-					"doctype": "Sales Invoice",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Sales Register",
-					"doctype": "Sales Invoice",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Item-wise Sales Register",
-					"is_query_report": True,
-					"doctype": "Sales Invoice"
-				},
-				{
-					"type": "report",
-					"name": "Ordered Items To Be Billed",
-					"is_query_report": True,
-					"doctype": "Sales Invoice"
-				},
-				{
-					"type": "report",
-					"name": "Delivered Items To Be Billed",
-					"is_query_report": True,
-					"doctype": "Sales Invoice"
-				},
-			]
-		},
-		{
-			"label": _("Accounts Payable"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Purchase Invoice",
-					"description": _("Bills raised by Suppliers."),
-					"onboard": 1
-				},
-				{
-					"type": "doctype",
-					"name": "Supplier",
-					"description": _("Supplier database."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Payment Entry",
-					"description": _("Bank/Cash transactions against party or for internal transfer")
-				},
-				{
-					"type": "report",
-					"name": "Accounts Payable",
-					"doctype": "Purchase Invoice",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Accounts Payable Summary",
-					"doctype": "Purchase Invoice",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Purchase Register",
-					"doctype": "Purchase Invoice",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Item-wise Purchase Register",
-					"is_query_report": True,
-					"doctype": "Purchase Invoice"
-				},
-				{
-					"type": "report",
-					"name": "Purchase Order Items To Be Billed",
-					"is_query_report": True,
-					"doctype": "Purchase Invoice"
-				},
-				{
-					"type": "report",
-					"name": "Received Items To Be Billed",
-					"is_query_report": True,
-					"doctype": "Purchase Invoice"
-				},
-			]
-		},
-		{
-			"label": _("Accounting Masters"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Company",
-					"description": _("Company (not Customer or Supplier) master."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Account",
-					"icon": "fa fa-sitemap",
-					"label": _("Chart of Accounts"),
-					"route": "#Tree/Account",
-					"description": _("Tree of financial accounts."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Accounts Settings",
-				},
-				{
-					"type": "doctype",
-					"name": "Fiscal Year",
-					"description": _("Financial / accounting year.")
-				},
-				{
-					"type": "doctype",
-					"name": "Accounting Dimension",
-				},
-				{
-					"type": "doctype",
-					"name": "Finance Book",
-				},
-				{
-					"type": "doctype",
-					"name": "Accounting Period",
-				},
-				{
-					"type": "doctype",
-					"name": "Payment Term",
-					"description": _("Payment Terms based on conditions")
-				},
-			]
-		},
-		{
-			"label": _("Banking and Payments"),
-			"items": [
-				{
-					"type": "doctype",
-					"label": _("Match Payments with Invoices"),
-					"name": "Payment Reconciliation",
-					"description": _("Match non-linked Invoices and Payments.")
-				},
-				{
-					"type": "doctype",
-					"label": _("Update Bank Clearance Dates"),
-					"name": "Bank Clearance",
-					"description": _("Update bank payment dates with journals.")
-				},
-				{
-					"type": "doctype",
-					"label": _("Invoice Discounting"),
-					"name": "Invoice Discounting",
-				},
-				{
-					"type": "report",
-					"name": "Bank Reconciliation Statement",
-					"is_query_report": True,
-					"doctype": "Journal Entry"
-				},{
-					"type": "page",
-					"name": "bank-reconciliation",
-					"label": _("Bank Reconciliation"),
-					"icon": "fa fa-bar-chart"
-				},
-				{
-					"type": "report",
-					"name": "Bank Clearance Summary",
-					"is_query_report": True,
-					"doctype": "Journal Entry"
-				},
-				{
-					"type": "doctype",
-					"name": "Bank Guarantee"
-				},
-				{
-					"type": "doctype",
-					"name": "Cheque Print Template",
-					"description": _("Setup cheque dimensions for printing")
-				},
-			]
-		},
-		{
-			"label": _("General Ledger"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Journal Entry",
-					"description": _("Accounting journal entries.")
-				},
-				{
-					"type": "report",
-					"name": "General Ledger",
-					"doctype": "GL Entry",
-					"is_query_report": True,
-				},
-				{
-					"type": "report",
-					"name": "Customer Ledger Summary",
-					"doctype": "Sales Invoice",
-					"is_query_report": True,
-				},
-				{
-					"type": "report",
-					"name": "Supplier Ledger Summary",
-					"doctype": "Sales Invoice",
-					"is_query_report": True,
-				},
-				{
-					"type": "doctype",
-					"name": "Process Deferred Accounting"
-				}
-			]
-		},
-		{
-			"label": _("Taxes"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Sales Taxes and Charges Template",
-					"description": _("Tax template for selling transactions.")
-				},
-				{
-					"type": "doctype",
-					"name": "Purchase Taxes and Charges Template",
-					"description": _("Tax template for buying transactions.")
-				},
-				{
-					"type": "doctype",
-					"name": "Item Tax Template",
-					"description": _("Tax template for item tax rates.")
-				},
-				{
-					"type": "doctype",
-					"name": "Tax Category",
-					"description": _("Tax Category for overriding tax rates.")
-				},
-				{
-					"type": "doctype",
-					"name": "Tax Rule",
-					"description": _("Tax Rule for transactions.")
-				},
-				{
-					"type": "doctype",
-					"name": "Tax Withholding Category",
-					"description": _("Tax Withholding rates to be applied on transactions.")
-				},
-			]
-		},
-		{
-			"label": _("Cost Center and Budgeting"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Cost Center",
-					"icon": "fa fa-sitemap",
-					"label": _("Chart of Cost Centers"),
-					"route": "#Tree/Cost Center",
-					"description": _("Tree of financial Cost Centers."),
-				},
-				{
-					"type": "doctype",
-					"name": "Budget",
-					"description": _("Define budget for a financial year.")
-				},
-				{
-					"type": "doctype",
-					"name": "Accounting Dimension",
-				},
-				{
-					"type": "report",
-					"name": "Budget Variance Report",
-					"is_query_report": True,
-					"doctype": "Cost Center"
-				},
-				{
-					"type": "doctype",
-					"name": "Monthly Distribution",
-					"description": _("Seasonality for setting budgets, targets etc.")
-				},
-			]
-		},
-		{
-			"label": _("Financial Statements"),
-			"items": [
-				{
-					"type": "report",
-					"name": "Trial Balance",
-					"doctype": "GL Entry",
-					"is_query_report": True,
-				},
-				{
-					"type": "report",
-					"name": "Profit and Loss Statement",
-					"doctype": "GL Entry",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Balance Sheet",
-					"doctype": "GL Entry",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Cash Flow",
-					"doctype": "GL Entry",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Consolidated Financial Statement",
-					"doctype": "GL Entry",
-					"is_query_report": True
-				},
-			]
-		},
-		{
-			"label": _("Opening and Closing"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Opening Invoice Creation Tool",
-				},
-				{
-					"type": "doctype",
-					"name": "Chart of Accounts Importer",
-				},
-				{
-					"type": "doctype",
-					"name": "Period Closing Voucher",
-					"description": _("Close Balance Sheet and book Profit or Loss.")
-				},
-			]
-
-		},
-		{
-			"label": _("Multi Currency"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Currency",
-					"description": _("Enable / disable currencies.")
-				},
-				{
-					"type": "doctype",
-					"name": "Currency Exchange",
-					"description": _("Currency exchange rate master.")
-				},
-				{
-					"type": "doctype",
-					"name": "Exchange Rate Revaluation",
-					"description": _("Exchange Rate Revaluation master.")
-				},
-			]
-		},
-		{
-			"label": _("Settings"),
-			"icon": "fa fa-cog",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Payment Gateway Account",
-					"description": _("Setup Gateway accounts.")
-				},
-				{
-					"type": "doctype",
-					"name": "Terms and Conditions",
-					"label": _("Terms and Conditions Template"),
-					"description": _("Template of terms or contract.")
-				},
-				{
-					"type": "doctype",
-					"name": "Mode of Payment",
-					"description": _("e.g. Bank, Cash, Credit Card")
-				},
-			]
-		},
-		{
-			"label": _("Subscription Management"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Subscriber",
-				},
-				{
-					"type": "doctype",
-					"name": "Subscription Plan",
-				},
-				{
-					"type": "doctype",
-					"name": "Subscription"
-				},
-				{
-					"type": "doctype",
-					"name": "Subscription Settings"
-				}
-			]
-		},
-		{
-			"label": _("Bank Statement"),
-			"items": [
-				{
-					"type": "doctype",
-					"label": _("Bank"),
-					"name": "Bank",
-				},
-				{
-					"type": "doctype",
-					"label": _("Bank Account"),
-					"name": "Bank Account",
-				},
-				{
-					"type": "doctype",
-					"name": "Bank Statement Transaction Entry",
-				},
-				{
-					"type": "doctype",
-					"label": _("Bank Statement Settings"),
-					"name": "Bank Statement Settings",
-				},
-			]
-		},
-		{
-			"label": _("Profitability"),
-			"items": [
-				{
-					"type": "report",
-					"name": "Gross Profit",
-					"doctype": "Sales Invoice",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Profitability Analysis",
-					"doctype": "GL Entry",
-					"is_query_report": True,
-				},
-				{
-					"type": "report",
-					"name": "Sales Invoice Trends",
-					"is_query_report": True,
-					"doctype": "Sales Invoice"
-				},
-				{
-					"type": "report",
-					"name": "Purchase Invoice Trends",
-					"is_query_report": True,
-					"doctype": "Purchase Invoice"
-				},
-			]
-		},
-		{
-			"label": _("Reports"),
-			"icon": "fa fa-table",
-			"items": [
-				{
-					"type": "report",
-					"name": "Trial Balance for Party",
-					"doctype": "GL Entry",
-					"is_query_report": True,
-				},
-				{
-					"type": "report",
-					"name": "Payment Period Based On Invoice Date",
-					"is_query_report": True,
-					"doctype": "Journal Entry"
-				},
-				{
-					"type": "report",
-					"name": "Sales Partners Commission",
-					"is_query_report": True,
-					"doctype": "Sales Invoice"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Customer Credit Balance",
-					"doctype": "Customer"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Sales Payment Summary",
-					"doctype": "Sales Invoice"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Address And Contacts",
-					"doctype": "Address"
-				}
-			]
-		},
-		{
-			"label": _("Share Management"),
-			"icon": "fa fa-microchip ",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Shareholder",
-					"description": _("List of available Shareholders with folio numbers")
-				},
-				{
-					"type": "doctype",
-					"name": "Share Transfer",
-					"description": _("List of all share transactions"),
-				},
-				{
-					"type": "report",
-					"name": "Share Ledger",
-					"doctype": "Share Transfer",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Share Balance",
-					"doctype": "Share Transfer",
-					"is_query_report": True
-				}
-			]
-		},
-
-	]
-
-	gst = {
-		"label": _("Goods and Services Tax (GST India)"),
-		"items": [
-			{
-				"type": "doctype",
-				"name": "GST Settings",
-			},
-			{
-				"type": "doctype",
-				"name": "GST HSN Code",
-			},
-			{
-				"type": "report",
-				"name": "GSTR-1",
-				"is_query_report": True
-			},
-			{
-				"type": "report",
-				"name": "GSTR-2",
-				"is_query_report": True
-			},
-			{
-				"type": "doctype",
-				"name": "GSTR 3B Report",
-			},
-			{
-				"type": "report",
-				"name": "GST Sales Register",
-				"is_query_report": True
-			},
-			{
-				"type": "report",
-				"name": "GST Purchase Register",
-				"is_query_report": True
-			},
-			{
-				"type": "report",
-				"name": "GST Itemised Sales Register",
-				"is_query_report": True
-			},
-			{
-				"type": "report",
-				"name": "GST Itemised Purchase Register",
-				"is_query_report": True
-			},
-			{
-				"type": "doctype",
-				"name": "C-Form",
-				"description": _("C-Form records"),
-				"country": "India"
-			},
-		]
-	}
-
-
-	countries = frappe.get_all("Company", fields="country")
-	countries = [country["country"] for country in countries]
-	if "India" in countries:
-		config.insert(9, gst)
-	domains = frappe.get_active_domains()
-	return config
diff --git a/erpnext/config/agriculture.py b/erpnext/config/agriculture.py
deleted file mode 100644
index 937d76e..0000000
--- a/erpnext/config/agriculture.py
+++ /dev/null
@@ -1,70 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Crops & Lands"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Crop",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Crop Cycle",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Location",
-					"onboard": 1,
-				}
-			]
-		},
-		{
-			"label": _("Diseases & Fertilizers"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Disease",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Fertilizer",
-					"onboard": 1,
-				}
-			]
-		},
-		{
-			"label": _("Analytics"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Plant Analysis",
-				},
-				{
-					"type": "doctype",
-					"name": "Soil Analysis",
-				},
-				{
-					"type": "doctype",
-					"name": "Water Analysis",
-				},
-				{
-					"type": "doctype",
-					"name": "Soil Texture",
-				},
-				{
-					"type": "doctype",
-					"name": "Weather",
-				},
-				{
-					"type": "doctype",
-					"name": "Agriculture Analysis Criteria",
-				}
-			]
-		},
-	]
\ No newline at end of file
diff --git a/erpnext/config/assets.py b/erpnext/config/assets.py
deleted file mode 100644
index 4cf7cf0..0000000
--- a/erpnext/config/assets.py
+++ /dev/null
@@ -1,94 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Assets"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Asset",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Location",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Asset Category",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Asset Movement",
-					"description": _("Transfer an asset from one warehouse to another")
-				},
-			]
-		},
-		{
-			"label": _("Maintenance"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Asset Maintenance Team",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Asset Maintenance",
-					"onboard": 1,
-					"dependencies": ["Asset Maintenance Team"],
-				},
-				{
-					"type": "doctype",
-					"name": "Asset Maintenance Tasks",
-					"onboard": 1,
-					"dependencies": ["Asset Maintenance"],
-				},
-				{
-					"type": "doctype",
-					"name": "Asset Maintenance Log",
-					"dependencies": ["Asset Maintenance"],
-				},
-				{
-					"type": "doctype",
-					"name": "Asset Value Adjustment",
-					"dependencies": ["Asset"],
-				},
-				{
-					"type": "doctype",
-					"name": "Asset Repair",
-					"dependencies": ["Asset"],
-				},
-			]
-		},
-		{
-			"label": _("Reports"),
-			"icon": "fa fa-table",
-			"items": [
-				{
-					"type": "report",
-					"name": "Asset Depreciation Ledger",
-					"doctype": "Asset",
-					"is_query_report": True,
-					"dependencies": ["Asset"],
-				},
-				{
-					"type": "report",
-					"name": "Asset Depreciations and Balances",
-					"doctype": "Asset",
-					"is_query_report": True,
-					"dependencies": ["Asset"],
-				},
-				{
-					"type": "report",
-					"name": "Asset Maintenance",
-					"doctype": "Asset Maintenance",
-					"dependencies": ["Asset Maintenance"]
-				},
-			]
-		}
-	]
diff --git a/erpnext/config/buying.py b/erpnext/config/buying.py
deleted file mode 100644
index b06bb76..0000000
--- a/erpnext/config/buying.py
+++ /dev/null
@@ -1,264 +0,0 @@
-from __future__ import unicode_literals
-import frappe
-from frappe import _
-
-def get_data():
-	config =  [
-		{
-			"label": _("Purchasing"),
-			"icon": "fa fa-star",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Material Request",
-					"onboard": 1,
-					"dependencies": ["Item"],
-					"description": _("Request for purchase."),
-				},
-				{
-					"type": "doctype",
-					"name": "Purchase Order",
-					"onboard": 1,
-					"dependencies": ["Item", "Supplier"],
-					"description": _("Purchase Orders given to Suppliers."),
-				},
-				{
-					"type": "doctype",
-					"name": "Purchase Invoice",
-					"onboard": 1,
-					"dependencies": ["Item", "Supplier"]
-				},
-				{
-					"type": "doctype",
-					"name": "Request for Quotation",
-					"onboard": 1,
-					"dependencies": ["Item", "Supplier"],
-					"description": _("Request for quotation."),
-				},
-				{
-					"type": "doctype",
-					"name": "Supplier Quotation",
-					"dependencies": ["Item", "Supplier"],
-					"description": _("Quotations received from Suppliers."),
-				},
-			]
-		},
-		{
-			"label": _("Items and Pricing"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Item",
-					"onboard": 1,
-					"description": _("All Products or Services."),
-				},
-				{
-					"type": "doctype",
-					"name": "Item Price",
-					"description": _("Multiple Item prices."),
-					"onboard": 1,
-					"route": "#Report/Item Price"
-				},
-				{
-					"type": "doctype",
-					"name": "Price List",
-					"description": _("Price List master.")
-				},
-				{
-					"type": "doctype",
-					"name": "Pricing Rule",
-					"description": _("Rules for applying pricing and discount.")
-				},
-				{
-					"type": "doctype",
-					"name": "Product Bundle",
-					"description": _("Bundle items at time of sale."),
-				},
-				{
-					"type": "doctype",
-					"name": "Item Group",
-					"icon": "fa fa-sitemap",
-					"label": _("Item Group"),
-					"link": "Tree/Item Group",
-					"description": _("Tree of Item Groups."),
-				},
-				{
-					"type": "doctype",
-					"name": "Promotional Scheme",
-					"description": _("Rules for applying different promotional schemes.")
-				}
-			]
-		},
-		{
-			"label": _("Settings"),
-			"icon": "fa fa-cog",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Buying Settings",
-					"settings": 1,
-					"description": _("Default settings for buying transactions.")
-				},
-				{
-					"type": "doctype",
-					"name": "Purchase Taxes and Charges Template",
-					"description": _("Tax template for buying transactions.")
-				},
-				{
-					"type": "doctype",
-					"name":"Terms and Conditions",
-					"label": _("Terms and Conditions Template"),
-					"description": _("Template of terms or contract.")
-				},
-			]
-		},
-		{
-			"label": _("Supplier"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Supplier",
-					"onboard": 1,
-					"description": _("Supplier database."),
-				},
-				{
-					"type": "doctype",
-					"name": "Supplier Group",
-					"description": _("Supplier Group master.")
-				},
-				{
-					"type": "doctype",
-					"name": "Contact",
-					"description": _("All Contacts."),
-				},
-				{
-					"type": "doctype",
-					"name": "Address",
-					"description": _("All Addresses."),
-				},
-
-			]
-		},
-		{
-			"label": _("Key Reports"),
-			"icon": "fa fa-table",
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Purchase Analytics",
-					"reference_doctype": "Purchase Order",
-					"onboard": 1
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Purchase Order Trends",
-					"reference_doctype": "Purchase Order",
-					"onboard": 1,
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Procurement Tracker",
-					"reference_doctype": "Purchase Order",
-					"onboard": 1,
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Requested Items To Order",
-					"reference_doctype": "Material Request",
-					"onboard": 1,
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Address And Contacts",
-					"label": _("Supplier Addresses And Contacts"),
-					"reference_doctype": "Address",
-					"route_options": {
-						"party_type": "Supplier"
-					}
-				}
-			]
-		},
-		{
-			"label": _("Supplier Scorecard"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Supplier Scorecard",
-					"description": _("All Supplier scorecards."),
-				},
-				{
-					"type": "doctype",
-					"name": "Supplier Scorecard Variable",
-					"description": _("Templates of supplier scorecard variables.")
-				},
-				{
-					"type": "doctype",
-					"name": "Supplier Scorecard Criteria",
-					"description": _("Templates of supplier scorecard criteria."),
-				},
-				{
-					"type": "doctype",
-					"name": "Supplier Scorecard Standing",
-					"description": _("Templates of supplier standings."),
-				},
-
-			]
-		},
-		{
-			"label": _("Other Reports"),
-			"icon": "fa fa-list",
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Items To Be Requested",
-					"reference_doctype": "Item",
-					"onboard": 1,
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Item-wise Purchase History",
-					"reference_doctype": "Item",
-					"onboard": 1,
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Supplier-Wise Sales Analytics",
-					"reference_doctype": "Stock Ledger Entry",
-					"onboard": 1
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Material Requests for which Supplier Quotations are not created",
-					"reference_doctype": "Material Request"
-				}
-			]
-		},
-
-	]
-
-	regional = {
-			"label": _("Regional"),
-			"items": [
-				{
-				"type": "doctype",
-				"name": "Import Supplier Invoice",
-				"description": _("Import Italian Supplier Invoice."),
-				"onboard": 1,
-				}
-			]
-		}
-
-	countries = frappe.get_all("Company", fields="country")
-	countries = [country["country"] for country in countries]
-	if "Italy" in countries:
-		config.append(regional)
-	return config
\ No newline at end of file
diff --git a/erpnext/config/crm.py b/erpnext/config/crm.py
deleted file mode 100644
index 09c2a65..0000000
--- a/erpnext/config/crm.py
+++ /dev/null
@@ -1,236 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Sales Pipeline"),
-			"icon": "fa fa-star",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Lead",
-					"description": _("Database of potential customers."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Opportunity",
-					"description": _("Potential opportunities for selling."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Customer",
-					"description": _("Customer database."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Contact",
-					"description": _("All Contacts."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Communication",
-					"description": _("Record of all communications of type email, phone, chat, visit, etc."),
-				},
-				{
-					"type": "doctype",
-					"name": "Lead Source",
-					"description": _("Track Leads by Lead Source.")
-				},
-				{
-					"type": "doctype",
-					"name": "Contract",
-					"description": _("Helps you keep tracks of Contracts based on Supplier, Customer and Employee"),
-				},
-				{
-					"type": "doctype",
-					"name": "Appointment",
-					"description" : _("Helps you manage appointments with your leads"),
-				},
-        {
-          "type": "doctype",
-					"name": "Newsletter",
-					"label": _("Newsletter"),
-				}
-			]
-		},
-		{
-			"label": _("Reports"),
-			"icon": "fa fa-list",
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Lead Details",
-					"doctype": "Lead",
-					"onboard": 1,
-				},
-				{
-					"type": "page",
-					"name": "sales-funnel",
-					"label": _("Sales Funnel"),
-					"icon": "fa fa-bar-chart",
-					"onboard": 1,
-				},
-				{
-					"type": "report",
-					"name": "Prospects Engaged But Not Converted",
-					"doctype": "Lead",
-					"is_query_report": True,
-					"onboard": 1,
-				},
-				{
-					"type": "report",
-					"name": "Minutes to First Response for Opportunity",
-					"doctype": "Opportunity",
-					"is_query_report": True,
-					"dependencies": ["Opportunity"]
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Customer Addresses And Contacts",
-					"doctype": "Contact",
-					"dependencies": ["Customer"]
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Inactive Customers",
-					"doctype": "Sales Order",
-					"dependencies": ["Sales Order"]
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Campaign Efficiency",
-					"doctype": "Lead",
-					"dependencies": ["Lead"]
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Lead Owner Efficiency",
-					"doctype": "Lead",
-					"dependencies": ["Lead"]
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Territory-wise Sales",
-					"doctype": "Opportunity",
-					"dependencies": ["Opportunity"]
-				}
-			]
-		},
-		{
-			"label": _("Settings"),
-			"icon": "fa fa-cog",
-			"items": [
-				{
-					"type": "doctype",
-					"label": _("Customer Group"),
-					"name": "Customer Group",
-					"icon": "fa fa-sitemap",
-					"link": "Tree/Customer Group",
-					"description": _("Manage Customer Group Tree."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"label": _("Territory"),
-					"name": "Territory",
-					"icon": "fa fa-sitemap",
-					"link": "Tree/Territory",
-					"description": _("Manage Territory Tree."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"label": _("Sales Person"),
-					"name": "Sales Person",
-					"icon": "fa fa-sitemap",
-					"link": "Tree/Sales Person",
-					"description": _("Manage Sales Person Tree."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Campaign",
-					"description": _("Sales campaigns."),
-				},
-				{
-					"type": "doctype",
-					"name": "Email Campaign",
-					"description": _("Sends Mails to lead or contact based on a Campaign schedule"),
-				},
-				{
-					"type": "doctype",
-					"name": "SMS Center",
-					"description":_("Send mass SMS to your contacts"),
-				},
-				{
-					"type": "doctype",
-					"name": "SMS Log",
-					"description":_("Logs for maintaining sms delivery status"),
-				},
-				{
-					"type": "doctype",
-					"name": "SMS Settings",
-					"description": _("Setup SMS gateway settings")
-				},
-				{
-					"type": "doctype",
-					"label": _("Email Group"),
-					"name": "Email Group",
-				}
-			]
-		},
-		{
-			"label": _("Maintenance"),
-			"icon": "fa fa-star",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Maintenance Schedule",
-					"description": _("Plan for maintenance visits."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Maintenance Visit",
-					"description": _("Visit report for maintenance call."),
-				},
-				{
-					"type": "report",
-					"name": "Maintenance Schedules",
-					"is_query_report": True,
-					"doctype": "Maintenance Schedule"
-				},
-				{
-					"type": "doctype",
-					"name": "Warranty Claim",
-					"description": _("Warranty Claim against Serial No."),
-				},
-			]
-		},
-		# {
-		# 	"label": _("Help"),
-		# 	"items": [
-		# 		{
-		# 			"type": "help",
-		# 			"label": _("Lead to Quotation"),
-		# 			"youtube_id": "TxYX4r4JAKA"
-		# 		},
-		# 		{
-		# 			"type": "help",
-		# 			"label": _("Newsletters"),
-		# 			"youtube_id": "muLKsCrrDRo"
-		# 		},
-		# 	]
-		# },
-	]
diff --git a/erpnext/config/desktop.py b/erpnext/config/desktop.py
deleted file mode 100644
index ce7c245..0000000
--- a/erpnext/config/desktop.py
+++ /dev/null
@@ -1,220 +0,0 @@
-# coding=utf-8
-
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		# Modules
-		{
-			"module_name": "Getting Started",
-			"category": "Modules",
-			"label": _("Getting Started"),
-			"color": "#1abc9c",
-			"icon": "fa fa-check-square-o",
-			"type": "module",
-			"disable_after_onboard": 1,
-			"description": "Dive into the basics for your organisation's needs.",
-			"onboard_present": 1
-		},
-		{
-			"module_name": "Accounts",
-			"category": "Modules",
-			"label": _("Accounting"),
-			"color": "#3498db",
-			"icon": "octicon octicon-repo",
-			"type": "module",
-			"description": "Accounts, billing, payments, cost center and budgeting."
-		},
-		{
-			"module_name": "Selling",
-			"category": "Modules",
-			"label": _("Selling"),
-			"color": "#1abc9c",
-			"icon": "octicon octicon-tag",
-			"type": "module",
-			"description": "Sales orders, quotations, customers and items."
-		},
-		{
-			"module_name": "Buying",
-			"category": "Modules",
-			"label": _("Buying"),
-			"color": "#c0392b",
-			"icon": "octicon octicon-briefcase",
-			"type": "module",
-			"description": "Purchasing, suppliers, material requests, and items."
-		},
-		{
-			"module_name": "Stock",
-			"category": "Modules",
-			"label": _("Stock"),
-			"color": "#f39c12",
-			"icon": "octicon octicon-package",
-			"type": "module",
-			"description": "Stock transactions, reports, serial numbers and batches."
-		},
-		{
-			"module_name": "Assets",
-			"category": "Modules",
-			"label": _("Assets"),
-			"color": "#4286f4",
-			"icon": "octicon octicon-database",
-			"type": "module",
-			"description": "Asset movement, maintainance and tools."
-		},
-		{
-			"module_name": "Projects",
-			"category": "Modules",
-			"label": _("Projects"),
-			"color": "#8e44ad",
-			"icon": "octicon octicon-rocket",
-			"type": "module",
-			"description": "Updates, Timesheets and Activities."
-		},
-		{
-			"module_name": "CRM",
-			"category": "Modules",
-			"label": _("CRM"),
-			"color": "#EF4DB6",
-			"icon": "octicon octicon-broadcast",
-			"type": "module",
-			"description": "Sales pipeline, leads, opportunities and customers."
-		},
-		{
-			"module_name": "Loan Management",
-			"category": "Modules",
-			"label": _("Loan Management"),
-			"color": "#EF4DB6",
-			"icon": "octicon octicon-repo",
-			"type": "module",
-			"description": "Loan Management for Customer and Employees"
-		},
-		{
-			"module_name": "Support",
-			"category": "Modules",
-			"label": _("Support"),
-			"color": "#1abc9c",
-			"icon": "fa fa-check-square-o",
-			"type": "module",
-			"description": "User interactions, support issues and knowledge base."
-		},
-		{
-			"module_name": "HR",
-			"category": "Modules",
-			"label": _("Human Resources"),
-			"color": "#2ecc71",
-			"icon": "octicon octicon-organization",
-			"type": "module",
-			"description": "Employees, attendance, payroll, leaves and shifts."
-		},
-		{
-			"module_name": "Quality Management",
-			"category": "Modules",
-			"label": _("Quality"),
-			"color": "#1abc9c",
-			"icon": "fa fa-check-square-o",
-			"type": "module",
-			"description": "Quality goals, procedures, reviews and action."
-		},
-
-
-		# Category: "Domains"
-		{
-			"module_name": "Manufacturing",
-			"category": "Domains",
-			"label": _("Manufacturing"),
-			"color": "#7f8c8d",
-			"icon": "octicon octicon-tools",
-			"type": "module",
-			"description": "BOMS, work orders, operations, and timesheets."
-		},
-		{
-			"module_name": "Retail",
-			"category": "Domains",
-			"label": _("Retail"),
-			"color": "#7f8c8d",
-			"icon": "octicon octicon-credit-card",
-			"type": "module",
-			"description": "Point of Sale and cashier closing."
-		},
-		{
-			"module_name": "Education",
-			"category": "Domains",
-			"label": _("Education"),
-			"color": "#428B46",
-			"icon": "octicon octicon-mortar-board",
-			"type": "module",
-			"description": "Student admissions, fees, courses and scores."
-		},
-
-		{
-			"module_name": "Healthcare",
-			"category": "Domains",
-			"label": _("Healthcare"),
-			"color": "#FF888B",
-			"icon": "fa fa-heartbeat",
-			"type": "module",
-			"description": "Patient appointments, procedures and tests."
-		},
-		{
-			"module_name": "Agriculture",
-			"category": "Domains",
-			"label": _("Agriculture"),
-			"color": "#8BC34A",
-			"icon": "octicon octicon-globe",
-			"type": "module",
-			"description": "Crop cycles, land areas, soil and plant analysis."
-		},
-		{
-			"module_name": "Hotels",
-			"category": "Domains",
-			"label": _("Hotels"),
-			"color": "#EA81E8",
-			"icon": "fa fa-bed",
-			"type": "module",
-			"description": "Hotel rooms, pricing, reservation and amenities."
-		},
-
-		{
-			"module_name": "Non Profit",
-			"category": "Domains",
-			"label": _("Non Profit"),
-			"color": "#DE2B37",
-			"icon": "octicon octicon-heart",
-			"type": "module",
-			"description": "Volunteers, memberships, grants and chapters."
-		},
-		{
-			"module_name": "Restaurant",
-			"category": "Domains",
-			"label": _("Restaurant"),
-			"color": "#EA81E8",
-			"icon": "fa fa-cutlery",
-			"_doctype": "Restaurant",
-			"type": "module",
-			"link": "List/Restaurant",
-			"description": "Menu, Orders and Table Reservations."
-		},
-
-		{
-			"module_name": "Help",
-			"category": "Administration",
-			"label": _("Learn"),
-			"color": "#FF888B",
-			"icon": "octicon octicon-device-camera-video",
-			"type": "module",
-			"is_help": True,
-			"description": "Explore Help Articles and Videos."
-		},
-		{
-			"module_name": 'Marketplace',
-			"category": "Places",
-			"label": _('Marketplace'),
-			"icon": "octicon octicon-star",
-			"type": 'link',
-			"link": '#marketplace/home',
-			"color": '#FF4136',
-			'standard': 1,
-			"description": "Publish items to other ERPNext users."
-		},
-	]
diff --git a/erpnext/config/docs.py b/erpnext/config/docs.py
deleted file mode 100644
index 85e6006..0000000
--- a/erpnext/config/docs.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from __future__ import unicode_literals
-
-source_link = "https://github.com/erpnext/foundation"
diff --git a/erpnext/config/education.py b/erpnext/config/education.py
index 4efaaa6..1c8ab10 100644
--- a/erpnext/config/education.py
+++ b/erpnext/config/education.py
@@ -173,7 +173,7 @@
 				{
 					"type": "doctype",
 					"name": "Course Schedule",
-					"route": "#List/Course Schedule/Calendar"
+					"route": "/app/List/Course Schedule/Calendar"
 				},
 				{
 					"type": "doctype",
diff --git a/erpnext/config/getting_started.py b/erpnext/config/getting_started.py
deleted file mode 100644
index dc72316..0000000
--- a/erpnext/config/getting_started.py
+++ /dev/null
@@ -1,268 +0,0 @@
-from __future__ import unicode_literals
-import frappe
-from frappe import _
-
-active_domains = frappe.get_active_domains()
-
-def get_data():
-	return [
-		{
-			"label": _("Accounting"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Item",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Customer",
-					"description": _("Customer database."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Supplier",
-					"description": _("Supplier database."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Company",
-					"description": _("Company (not Customer or Supplier) master."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Account",
-					"icon": "fa fa-sitemap",
-					"label": _("Chart of Accounts"),
-					"route": "#Tree/Account",
-					"description": _("Tree of financial accounts."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Opening Invoice Creation Tool",
-					"description": _("Create Opening Sales and Purchase Invoices"),
-					"onboard": 1,
-				},
-			]
-		},
-		{
-			"label": _("Data Import and Settings"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Data Import",
-					"label": _("Import Data"),
-					"icon": "octicon octicon-cloud-upload",
-					"description": _("Import Data from CSV / Excel files."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Chart of Accounts Importer",
-					"label": _("Chart of Accounts Importer"),
-					"description": _("Import Chart of Accounts from CSV / Excel files"),
-					"onboard": 1
-				},
-				{
-					"type": "doctype",
-					"name": "Letter Head",
-					"description": _("Letter Heads for print templates."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Email Account",
-					"description": _("Add / Manage Email Accounts."),
-					"onboard": 1,
-				},
-
-			]
-		},
-		{
-			"label": _("Stock"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Warehouse",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Brand",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "UOM",
-					"label": _("Unit of Measure") + " (UOM)",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Stock Reconciliation",
-					"onboard": 1,
-				},
-			]
-		},
-		{
-			"label": _("CRM"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Lead",
-					"description": _("Database of potential customers."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"label": _("Customer Group"),
-					"name": "Customer Group",
-					"icon": "fa fa-sitemap",
-					"link": "Tree/Customer Group",
-					"description": _("Manage Customer Group Tree."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"label": _("Territory"),
-					"name": "Territory",
-					"icon": "fa fa-sitemap",
-					"link": "Tree/Territory",
-					"description": _("Manage Territory Tree."),
-					"onboard": 1,
-				},
-			]
-		},
-		{
-			"label": _("Human Resources"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Employee",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Attendance Tool",
-					"hide_count": True,
-					"onboard": 1,
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Salary Structure",
-					"onboard": 1,
-				},
-			]
-		},
-		{
-			"label": _("Education"),
-			"condition": "Education" in active_domains,
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Student",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Course",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Instructor",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Room",
-					"onboard": 1,
-				},
-			]
-		},
-		{
-			"label": _("Healthcare"),
-			"condition": "Healthcare" in active_domains,
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Patient",
-					"label": _("Patient"),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Physician",
-					"label": _("Physician"),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Diagnosis",
-					"label": _("Diagnosis"),
-					"onboard": 1,
-				}
-			]
-		},
-		{
-			"label": _("Agriculture"),
-			"condition": "Agriculture" in active_domains,
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Crop",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Crop Cycle",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Location",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Fertilizer",
-					"onboard": 1,
-				}
-			]
-		},
-		{
-			"label": _("Non Profit"),
-			"condition": "Non Profit" in active_domains,
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Member",
-					"description": _("Member information."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Volunteer",
-					"description": _("Volunteer information."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Chapter",
-					"description": _("Chapter information."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Donor",
-					"description": _("Donor information."),
-					"onboard": 1,
-				},
-			]
-		}
-	]
\ No newline at end of file
diff --git a/erpnext/config/healthcare.py b/erpnext/config/healthcare.py
deleted file mode 100644
index da24d11..0000000
--- a/erpnext/config/healthcare.py
+++ /dev/null
@@ -1,254 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Masters"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Patient",
-					"label": _("Patient"),
-					"onboard": 1
-				},
-				{
-					"type": "doctype",
-					"name": "Healthcare Practitioner",
-					"label": _("Healthcare Practitioner"),
-					"onboard": 1
-				},
-				{
-					"type": "doctype",
-					"name": "Practitioner Schedule",
-					"label": _("Practitioner Schedule"),
-					"onboard": 1
-				},
-				{
-					"type": "doctype",
-					"name": "Medical Department",
-					"label": _("Medical Department"),
-				},
-				{
-					"type": "doctype",
-					"name": "Healthcare Service Unit Type",
-					"label": _("Healthcare Service Unit Type")
-				},
-				{
-					"type": "doctype",
-					"name": "Healthcare Service Unit",
-					"label": _("Healthcare Service Unit")
-				},
-				{
-					"type": "doctype",
-					"name": "Medical Code Standard",
-					"label": _("Medical Code Standard")
-				},
-				{
-					"type": "doctype",
-					"name": "Medical Code",
-					"label": _("Medical Code")
-				}
-			]
-		},
-		{
-			"label": _("Consultation Setup"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Appointment Type",
-					"label": _("Appointment Type"),
-				},
-				{
-					"type": "doctype",
-					"name": "Clinical Procedure Template",
-					"label": _("Clinical Procedure Template")
-				},
-				{
-					"type": "doctype",
-					"name": "Prescription Dosage",
-					"label": _("Prescription Dosage")
-				},
-				{
-					"type": "doctype",
-					"name": "Prescription Duration",
-					"label": _("Prescription Duration")
-				},
-				{
-					"type": "doctype",
-					"name": "Antibiotic",
-					"label": _("Antibiotic")
-				}
-			]
-		},
-		{
-			"label": _("Consultation"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Patient Appointment",
-					"label": _("Patient Appointment")
-				},
-				{
-					"type": "doctype",
-					"name": "Clinical Procedure",
-					"label": _("Clinical Procedure")
-				},
-				{
-					"type": "doctype",
-					"name": "Patient Encounter",
-					"label": _("Patient Encounter")
-				},
-				{
-					"type": "doctype",
-					"name": "Vital Signs",
-					"label": _("Vital Signs")
-				},
-				{
-					"type": "doctype",
-					"name": "Complaint",
-					"label": _("Complaint")
-				},
-				{
-					"type": "doctype",
-					"name": "Diagnosis",
-					"label": _("Diagnosis")
-				},
-				{
-					"type": "doctype",
-					"name": "Fee Validity",
-					"label": _("Fee Validity")
-				}
-			]
-		},
-		{
-			"label": _("Settings"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Healthcare Settings",
-					"label": _("Healthcare Settings"),
-					"onboard": 1
-				}
-			]
-		},
-		{
-			"label": _("Laboratory Setup"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Lab Test Template",
-					"label": _("Lab Test Template")
-				},
-				{
-					"type": "doctype",
-					"name": "Lab Test Sample",
-					"label": _("Lab Test Sample")
-				},
-				{
-					"type": "doctype",
-					"name": "Lab Test UOM",
-					"label": _("Lab Test UOM")
-				},
-				{
-					"type": "doctype",
-					"name": "Sensitivity",
-					"label": _("Sensitivity")
-				}
-			]
-		},
-		{
-			"label": _("Laboratory"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Lab Test",
-					"label": _("Lab Test")
-				},
-				{
-					"type": "doctype",
-					"name": "Sample Collection",
-					"label": _("Sample Collection")
-				},
-				{
-					"type": "doctype",
-					"name": "Dosage Form",
-					"label": _("Dosage Form")
-				}
-			]
-		},
-		{
-			"label": _("Records and History"),
-			"items": [
-				{
-					"type": "page",
-					"name": "patient_history",
-					"label": _("Patient History"),
-				},
-				{
-					"type": "doctype",
-					"name": "Patient Medical Record",
-					"label": _("Patient Medical Record")
-				},
-				{
-					"type": "doctype",
-					"name": "Inpatient Record",
-					"label": _("Inpatient Record")
-				}
-			]
-		},
-		{
-			"label": _("Reports"),
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Patient Appointment Analytics",
-					"doctype": "Patient Appointment"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Lab Test Report",
-					"doctype": "Lab Test",
-					"label": _("Lab Test Report")
-				}
-			]
-		},
-		{
-			"label": _("Rehabilitation"),
-			"icon": "icon-cog",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Exercise Type",
-					"label": _("Exercise Type")
-				},
-				{
-					"type": "doctype",
-					"name": "Exercise Difficulty Level",
-					"label": _("Exercise Difficulty Level")
-				},
-				{
-					"type": "doctype",
-					"name": "Therapy Type",
-					"label": _("Therapy Type")
-				},
-				{
-					"type": "doctype",
-					"name": "Therapy Plan",
-					"label": _("Therapy Plan")
-				},
-				{
-					"type": "doctype",
-					"name": "Therapy Session",
-					"label": _("Therapy Session")
-				},
-				{
-					"type": "doctype",
-					"name": "Motor Assessment Scale",
-					"label": _("Motor Assessment Scale")
-				}
-			]
-		}
-	]
diff --git a/erpnext/config/help.py b/erpnext/config/help.py
deleted file mode 100644
index 922afb4..0000000
--- a/erpnext/config/help.py
+++ /dev/null
@@ -1,273 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("General"),
-			"items": [
-				{
-					"type": "help",
-					"label": _("Navigating"),
-					"youtube_id": "YDoI2DF4Lmc"
-				},
-				{
-					"type": "help",
-					"label": _("Setup Wizard"),
-					"youtube_id": "oIOf_zCFWKQ"
-				},
-				{
-					"type": "help",
-					"label": _("Customizing Forms"),
-					"youtube_id": "pJhL9mmxV_U"
-				},
-				{
-					"type": "help",
-					"label": _("Report Builder"),
-					"youtube_id": "TxJGUNarcQs"
-				},
-			]
-
-		},
-		{
-			"label": _("Settings"),
-			"items": [
-				{
-					"type": "help",
-					"label": _("Data Import and Export"),
-					"youtube_id": "6wiriRKPhmg"
-				},
-				{
-					"type": "help",
-					"label": _("Opening Stock Balance"),
-					"youtube_id": "nlHX0ZZ84Lw"
-				},
-				{
-					"type": "help",
-					"label": _("Setting up Email Account"),
-					"youtube_id": "YFYe0DrB95o"
-				},
-				{
-					"type": "help",
-					"label": _("Printing and Branding"),
-					"youtube_id": "cKZHcx1znMc"
-				},
-				{
-					"type": "help",
-					"label": _("Users and Permissions"),
-					"youtube_id": "8Slw1hsTmUI"
-				},
-				{
-					"type": "help",
-					"label": _("Workflow"),
-					"youtube_id": "yObJUg9FxFs"
-				},
-				{
-					"type": "help",
-					"label": _("File Manager"),
-					"youtube_id": "4-osLW3E_Rk"
-				},
-			]
-		},
-		{
-			"label": _("Accounting"),
-			"items": [
-				{
-					"type": "help",
-					"label": _("Chart of Accounts"),
-					"youtube_id": "DyR-DST-PyA"
-				},
-				{
-					"type": "help",
-					"label": _("Setting up Taxes"),
-					"youtube_id": "nQ1zZdPgdaQ"
-				},
-				{
-					"type": "help",
-					"label": _("Opening Accounting Balance"),
-					"youtube_id": "kdgM20Q-q68"
-				},
-				{
-					"type": "help",
-					"label": _("Advance Payments"),
-					"youtube_id": "J46-6qtyZ9U"
-				},
-			]
-		},
-		{
-			"label": _("CRM"),
-			"items": [
-				{
-					"type": "help",
-					"label": _("Lead to Quotation"),
-					"youtube_id": "TxYX4r4JAKA"
-				},
-				{
-					"type": "help",
-					"label": _("Newsletters"),
-					"youtube_id": "muLKsCrrDRo"
-				},
-			]
-		},
-		{
-			"label": _("Selling"),
-			"items": [
-				{
-					"type": "help",
-					"label": _("Customer and Supplier"),
-					"youtube_id": "anoGi_RpQ20"
-				},
-				{
-					"type": "help",
-					"label": _("Sales Order to Payment"),
-					"youtube_id": "1eP90MWoDQM"
-				},
-				{
-					"type": "help",
-					"label": _("Point-of-Sale"),
-					"youtube_id": "4WkelWkbP_c"
-				},
-				{
-					"type": "help",
-					"label": _("Product Bundle"),
-					"youtube_id": "yk3kPrRyRRc"
-				},
-				{
-					"type": "help",
-					"label": _("Drop Ship"),
-					"youtube_id": "hUc0hu_XLdo"
-				},
-			]
-		},
-		{
-			"label": _("Stock"),
-			"items": [
-				{
-					"type": "help",
-					"label": _("Items and Pricing"),
-					"youtube_id": "qXaEwld4_Ps"
-				},
-				{
-					"type": "help",
-					"label": _("Item Variants"),
-					"youtube_id": "OGBETlCzU5o"
-				},
-				{
-					"type": "help",
-					"label": _("Opening Stock Balance"),
-					"youtube_id": "0yPgrtfeCTs"
-				},
-				{
-					"type": "help",
-					"label": _("Making Stock Entries"),
-					"youtube_id": "Njt107hlY3I"
-				},
-				{
-					"type": "help",
-					"label": _("Serialized Inventory"),
-					"youtube_id": "gvOVlEwFDAk"
-				},
-				{
-					"type": "help",
-					"label": _("Batch Inventory"),
-					"youtube_id": "J0QKl7ABPKM"
-				},
-				{
-					"type": "help",
-					"label": _("Managing Subcontracting"),
-					"youtube_id": "ThiMCC2DtKo"
-				},
-				{
-					"type": "help",
-					"label": _("Quality Inspection"),
-					"youtube_id": "WmtcF3Y40Fs"
-				},
-			]
-		},
-		{
-			"label": _("Buying"),
-			"items": [
-				{
-					"type": "help",
-					"label": _("Customer and Supplier"),
-					"youtube_id": "anoGi_RpQ20"
-				},
-				{
-					"type": "help",
-					"label": _("Material Request to Purchase Order"),
-					"youtube_id": "55Gk2j7Q8Zw"
-				},
-				{
-					"type": "help",
-					"label": _("Purchase Order to Payment"),
-					"youtube_id": "efFajTTQBa8"
-				},
-				{
-					"type": "help",
-					"label": _("Managing Subcontracting"),
-					"youtube_id": "ThiMCC2DtKo"
-				},
-			]
-		},
-		{
-			"label": _("Manufacturing"),
-			"items": [
-				{
-					"type": "help",
-					"label": _("Bill of Materials"),
-					"youtube_id": "hDV0c1OeWLo"
-				},
-				{
-					"type": "help",
-					"label": _("Work Order"),
-					"youtube_id": "ZotgLyp2YFY"
-				},
-
-			]
-		},
-		{
-			"label": _("Human Resource"),
-			"items": [
-				{
-					"type": "help",
-					"label": _("Setting up Employees"),
-					"youtube_id": "USfIUdZlUhw"
-				},
-				{
-					"type": "help",
-					"label": _("Leave Management"),
-					"youtube_id": "fc0p_AXebc8"
-				},
-				{
-					"type": "help",
-					"label": _("Expense Claims"),
-					"youtube_id": "5SZHJF--ZFY"
-				}
-			]
-		},
-		{
-			"label": _("Projects"),
-			"items": [
-				{
-					"type": "help",
-					"label": _("Managing Projects"),
-					"youtube_id": "gCzShu9Niu4"
-				},
-			]
-		},
-		{
-			"label": _("Website"),
-			"items": [
-				{
-					"type": "help",
-					"label": _("Publish Items on Website"),
-					"youtube_id": "W31LBBNzbgc"
-				},
-				{
-					"type": "help",
-					"label": _("Shopping Cart"),
-					"youtube_id": "xkrYO-KFukM"
-				},
-			]
-		},
-	]
diff --git a/erpnext/config/hr.py b/erpnext/config/hr.py
deleted file mode 100644
index 9855a11..0000000
--- a/erpnext/config/hr.py
+++ /dev/null
@@ -1,470 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Employee"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Employee",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Employment Type",
-				},
-				{
-					"type": "doctype",
-					"name": "Branch",
-				},
-				{
-					"type": "doctype",
-					"name": "Department",
-				},
-				{
-					"type": "doctype",
-					"name": "Designation",
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Grade",
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Group",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Health Insurance"
-				},
-			]
-		},
-		{
-			"label": _("Attendance"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Employee Attendance Tool",
-					"hide_count": True,
-					"onboard": 1,
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Attendance",
-					"onboard": 1,
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Attendance Request",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Upload Attendance",
-					"hide_count": True,
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Checkin",
-					"hide_count": True,
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Monthly Attendance Sheet",
-					"doctype": "Attendance"
-				},
-			]
-		},
-		{
-			"label": _("Leaves"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Leave Application",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Leave Allocation",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Leave Policy",
-					"dependencies": ["Leave Type"]
-				},
-				{
-					"type": "doctype",
-					"name": "Leave Period",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name":"Leave Type",
-				},
-				{
-					"type": "doctype",
-					"name": "Holiday List",
-				},
-				{
-					"type": "doctype",
-					"name": "Compensatory Leave Request",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Leave Encashment",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Leave Block List",
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Employee Leave Balance",
-					"doctype": "Leave Application"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Leave Ledger Entry",
-					"doctype": "Leave Ledger Entry"
-				},
-			]
-		},
-		{
-			"label": _("Payroll"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Salary Structure",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Salary Structure Assignment",
-					"onboard": 1,
-					"dependencies": ["Salary Structure", "Employee"],
-				},
-				{
-					"type": "doctype",
-					"name": "Payroll Entry",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Salary Slip",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Payroll Period",
-				},
-				{
-					"type": "doctype",
-					"name": "Income Tax Slab",
-				},
-				{
-					"type": "doctype",
-					"name": "Salary Component",
-				},
-				{
-					"type": "doctype",
-					"name": "Additional Salary",
-				},
-				{
-					"type": "doctype",
-					"name": "Retention Bonus",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Incentive",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Salary Register",
-					"doctype": "Salary Slip"
-				},
-			]
-		},
-		{
-			"label": _("Employee Tax and Benefits"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Employee Tax Exemption Declaration",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Tax Exemption Proof Submission",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Other Income",
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Benefit Application",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Benefit Claim",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Tax Exemption Category",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Tax Exemption Sub Category",
-					"dependencies": ["Employee"]
-				},
-			]
-		},
-		{
-			"label": _("Employee Lifecycle"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Employee Onboarding",
-					"dependencies": ["Job Applicant"],
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Skill Map",
-					"dependencies": ["Employee"],
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Promotion",
-					"dependencies": ["Employee"],
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Transfer",
-					"dependencies": ["Employee"],
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Separation",
-					"dependencies": ["Employee"],
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Onboarding Template",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Separation Template",
-					"dependencies": ["Employee"]
-				},
-			]
-		},
-		{
-			"label": _("Recruitment"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Job Opening",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Job Applicant",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Job Offer",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Appointment Letter",
-				},
-				{
-					"type": "doctype",
-					"name": "Staffing Plan",
-				},
-			]
-		},
-		{
-			"label": _("Training"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Training Program"
-				},
-				{
-					"type": "doctype",
-					"name": "Training Event"
-				},
-				{
-					"type": "doctype",
-					"name": "Training Result"
-				},
-				{
-					"type": "doctype",
-					"name": "Training Feedback"
-				},
-			]
-		},
-		{
-			"label": _("Performance"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Appraisal",
-				},
-				{
-					"type": "doctype",
-					"name": "Appraisal Template",
-				},
-				{
-					"type": "doctype",
-					"name": "Energy Point Rule",
-				},
-				{
-					"type": "doctype",
-					"name": "Energy Point Log",
-				},
-				{
-					"type": "link",
-					"doctype": "Energy Point Log",
-					"label": _("Energy Point Leaderboard"),
-					"route": "#social/users"
-				},
-			]
-		},
-		{
-			"label": _("Expense Claims"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Expense Claim",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Employee Advance",
-					"dependencies": ["Employee"]
-				},
-			]
-		},
-		{
-			"label": _("Loans"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Loan Application",
-					"dependencies": ["Employee"]
-				},
-				{
-					"type": "doctype",
-					"name": "Loan"
-				},
-				{
-					"type": "doctype",
-					"name": "Loan Type",
-				},
-			]
-		},
-		{
-			"label": _("Shift Management"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Shift Type",
-				},
-				{
-					"type": "doctype",
-					"name": "Shift Request",
-				},
-				{
-					"type": "doctype",
-					"name": "Shift Assignment",
-				},
-			]
-		},
-		{
-			"label": _("Fleet Management"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Vehicle"
-				},
-				{
-					"type": "doctype",
-					"name": "Vehicle Log"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Vehicle Expenses",
-					"doctype": "Vehicle"
-				},
-			]
-		},
-		{
-			"label": _("Settings"),
-			"icon": "fa fa-cog",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "HR Settings",
-				},
-				{
-					"type": "doctype",
-					"name": "Daily Work Summary Group"
-				},
-				{
-					"type": "page",
-					"name": "team-updates",
-					"label": _("Team Updates")
-				},
-			]
-		},
-		{
-			"label": _("Reports"),
-			"icon": "fa fa-list",
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Employee Birthday",
-					"doctype": "Employee"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Employees working on a holiday",
-					"doctype": "Employee"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Department Analytics",
-					"doctype": "Employee"
-				},
-			]
-		},
-	]
diff --git a/erpnext/config/hub_node.py b/erpnext/config/hub_node.py
deleted file mode 100644
index 0afdeb5..0000000
--- a/erpnext/config/hub_node.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Settings"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Marketplace Settings"
-				},
-			]
-		},
-		{
-			"label": _("Marketplace"),
-			"items": [
-				{
-					"type": "page",
-					"name": "marketplace/home"
-				},
-			]
-		},
-	]
\ No newline at end of file
diff --git a/erpnext/config/integrations.py b/erpnext/config/integrations.py
deleted file mode 100644
index f8b3257..0000000
--- a/erpnext/config/integrations.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Payments"),
-			"icon": "fa fa-star",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "GoCardless Settings",
-					"description": _("GoCardless payment gateway settings"),
-				},
-				{
-					"type": "doctype",
-					"name": "GoCardless Mandate",
-					"description": _("GoCardless SEPA Mandate"),
-				}
-			]
-		},
-		{
-			"label": _("Settings"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Woocommerce Settings"
-				},
-				{
-					"type": "doctype",
-					"name": "Shopify Settings",
-					"description": _("Connect Shopify with ERPNext"),
-				},
-				{
-					"type": "doctype",
-					"name": "Amazon MWS Settings",
-					"description": _("Connect Amazon with ERPNext"),
-				},
-				{
-					"type": "doctype",
-					"name": "Plaid Settings",
-					"description": _("Connect your bank accounts to ERPNext"),
-				},
-				{
-					"type": "doctype",
-					"name": "Exotel Settings",
-					"description": _("Connect your Exotel Account to ERPNext and track call logs"),
-				}
-			]
-		}
-	]
diff --git a/erpnext/config/loan_management.py b/erpnext/config/loan_management.py
deleted file mode 100644
index a84f13a..0000000
--- a/erpnext/config/loan_management.py
+++ /dev/null
@@ -1,107 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-import frappe
-
-
-def get_data():
-	return [
-		{
-			"label": _("Loan"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Loan Type",
-					"description": _("Loan Type for interest and penalty rates"),
-				},
-				{
-					"type": "doctype",
-					"name": "Loan Application",
-					"description": _("Loan Applications from customers and employees."),
-				},
-				{
-					"type": "doctype",
-					"name": "Loan",
-					"description": _("Loans provided to customers and employees."),
-				},
-
-			]
-		},
-		{
-			"label": _("Loan Security"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Loan Security Type",
-				},
-				{
-					"type": "doctype",
-					"name": "Loan Security Price",
-				},
-				{
-					"type": "doctype",
-					"name": "Loan Security",
-				},
-				{
-					"type": "doctype",
-					"name": "Loan Security Pledge",
-				},
-				{
-					"type": "doctype",
-					"name": "Loan Security Unpledge",
-				},
-				{
-					"type": "doctype",
-					"name": "Loan Security Shortfall",
-				},
-			]
-		},
-		{
-			"label": _("Disbursement and Repayment"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Loan Disbursement",
-				},
-				{
-					"type": "doctype",
-					"name": "Loan Repayment",
-				},
-				{
-					"type": "doctype",
-					"name": "Loan Interest Accrual"
-				}
-			]
-		},
-		{
-			"label": _("Loan Processes"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Process Loan Security Shortfall",
-				},
-				{
-					"type": "doctype",
-					"name": "Process Loan Interest Accrual",
-				}
-			]
-		},
-		{
-			"label": _("Reports"),
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Loan Repayment and Closure",
-					"route": "#query-report/Loan Repayment and Closure",
-					"doctype": "Loan Repayment",
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Loan Security Status",
-					"route": "#query-report/Loan Security Status",
-					"doctype": "Loan Security Pledge",
-				}
-			]
-		}
-	]
\ No newline at end of file
diff --git a/erpnext/config/manufacturing.py b/erpnext/config/manufacturing.py
deleted file mode 100644
index 012f1ca..0000000
--- a/erpnext/config/manufacturing.py
+++ /dev/null
@@ -1,168 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Bill of Materials"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Item",
-					"description": _("All Products or Services."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "BOM",
-					"description": _("Bill of Materials (BOM)"),
-					"label": _("Bill of Materials"),
-					"onboard": 1,
-					"dependencies": ["Item"]
-				},
-				{
-					"type": "doctype",
-					"name": "BOM Browser",
-					"icon": "fa fa-sitemap",
-					"label": _("BOM Browser"),
-					"description": _("Tree of Bill of Materials"),
-					"link": "Tree/BOM",
-					"onboard": 1,
-					"dependencies": ["Item"]
-				},
-
-				{
-					"type": "doctype",
-					"name": "Workstation",
-					"description": _("Where manufacturing operations are carried."),
-				},
-				{
-					"type": "doctype",
-					"name": "Operation",
-					"description": _("Details of the operations carried out."),
-				},
-				{
-					"type": "doctype",
-					"name": "Routing"
-				}
-
-			]
-		},
-		{
-			"label": _("Production"),
-			"icon": "fa fa-star",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Work Order",
-					"description": _("Orders released for production."),
-					"onboard": 1,
-					"dependencies": ["Item", "BOM"]
-				},
-				{
-					"type": "doctype",
-					"name": "Production Plan",
-					"description": _("Generate Material Requests (MRP) and Work Orders."),
-					"onboard": 1,
-					"dependencies": ["Item", "BOM"]
-				},
-				{
-					"type": "doctype",
-					"name": "Stock Entry",
-					"onboard": 1,
-					"dependencies": ["Item"]
-				},
-				{
-					"type": "doctype",
-					"name": "Timesheet",
-					"description": _("Time Sheet for manufacturing."),
-					"onboard": 1,
-					"dependencies": ["Activity Type"]
-				},
-				{
-					"type": "doctype",
-					"name": "Job Card"
-				}
-			]
-		},
-		{
-			"label": _("Tools"),
-			"icon": "fa fa-wrench",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "BOM Update Tool",
-					"description": _("Replace BOM and update latest price in all BOMs"),
-				},
-				{
-					"type": "page",
-					"label": _("BOM Comparison Tool"),
-					"name": "bom-comparison-tool",
-					"description": _("Compare BOMs for changes in Raw Materials and Operations"),
-					"data_doctype": "BOM"
-				},
-			]
-		},
-		{
-			"label": _("Settings"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Manufacturing Settings",
-					"description": _("Global settings for all manufacturing processes."),
-				}
-			]
-		},
-		{
-			"label": _("Reports"),
-			"icon": "fa fa-list",
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Work Order Summary",
-					"doctype": "Work Order"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Issued Items Against Work Order",
-					"doctype": "Work Order"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Production Analytics",
-					"doctype": "Work Order"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "BOM Search",
-					"doctype": "BOM"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "BOM Stock Report",
-					"doctype": "BOM"
-				}
-			]
-		},
-		{
-			"label": _("Help"),
-			"icon": "fa fa-facetime-video",
-			"items": [
-				{
-					"type": "help",
-					"label": _("Bill of Materials"),
-					"youtube_id": "hDV0c1OeWLo"
-				},
-				{
-					"type": "help",
-					"label": _("Work Order"),
-					"youtube_id": "ZotgLyp2YFY"
-				},
-			]
-		}
-	]
diff --git a/erpnext/config/non_profit.py b/erpnext/config/non_profit.py
deleted file mode 100644
index 42ec9d3..0000000
--- a/erpnext/config/non_profit.py
+++ /dev/null
@@ -1,101 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Chapter"),
-			"icon": "fa fa-star",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Chapter",
-					"description": _("Chapter information."),
-					"onboard": 1,
-				}
-			]
-		},
-		{
-			"label": _("Membership"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Member",
-					"description": _("Member information."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Membership",
-					"description": _("Memebership Details"),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Membership Type",
-					"description": _("Memebership Type Details"),
-				},
-			]
-		},
-		{
-			"label": _("Volunteer"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Volunteer",
-					"description": _("Volunteer information."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Volunteer Type",
-					"description": _("Volunteer Type information."),
-				}
-			]
-		},
-		{
-			"label": _("Donor"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Donor",
-					"description": _("Donor information."),
-				},
-				{
-					"type": "doctype",
-					"name": "Donor Type",
-					"description": _("Donor Type information."),
-				}
-			]
-		},
-		{
-			"label": _("Loan Management"),
-			"icon": "icon-list",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Loan Type",
-					"description": _("Define various loan types")
-				},
-				{
-					"type": "doctype",
-					"name": "Loan Application",
-					"description": _("Loan Application")
-				},
-				{
-					"type": "doctype",
-					"name": "Loan"
-				},
-			]
-		},
-		{
-			"label": _("Grant Application"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Grant Application",
-					"description": _("Grant information."),
-				}
-			]
-		}
-	]
diff --git a/erpnext/config/projects.py b/erpnext/config/projects.py
index 47700d1..ab4db96 100644
--- a/erpnext/config/projects.py
+++ b/erpnext/config/projects.py
@@ -16,13 +16,13 @@
 				{
 					"type": "doctype",
 					"name": "Task",
-					"route": "#List/Task",
+					"route": "/app/List/Task",
 					"description": _("Project activity / task."),
 					"onboard": 1,
 				},
 				{
 					"type": "report",
-					"route": "#List/Task/Gantt",
+					"route": "/app/List/Task/Gantt",
 					"doctype": "Task",
 					"name": "Gantt Chart",
 					"description": _("Gantt chart of all tasks."),
@@ -97,5 +97,5 @@
 				},
 			]
 		},
-		
+
 	]
diff --git a/erpnext/config/quality_management.py b/erpnext/config/quality_management.py
deleted file mode 100644
index 35acdfa..0000000
--- a/erpnext/config/quality_management.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Goal and Procedure"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Quality Goal",
-					"description":_("Quality Goal."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Quality Procedure",
-					"description":_("Quality Procedure."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Quality Procedure",
-					"icon": "fa fa-sitemap",
-					"label": _("Tree of Procedures"),
-					"route": "#Tree/Quality Procedure",
-					"description": _("Tree of Quality Procedures."),
-				},
-			]
-		},
-		{
-			"label": _("Review and Action"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Quality Review",
-					"description":_("Quality Review"),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Quality Action",
-					"description":_("Quality Action"),
-				}
-			]
-		},
-		{
-			"label": _("Meeting"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Quality Meeting",
-					"description":_("Quality Meeting"),
-				}
-			]
-		},
-		{
-			"label": _("Feedback"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Quality Feedback",
-					"description":_("Quality Feedback"),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Quality Feedback Template",
-					"description":_("Quality Feedback Template"),
-				}
-			]
-		},
-	]
\ No newline at end of file
diff --git a/erpnext/config/retail.py b/erpnext/config/retail.py
deleted file mode 100644
index 738be7e..0000000
--- a/erpnext/config/retail.py
+++ /dev/null
@@ -1,48 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-            "label": _("Retail Operations"),
-            "items": [
-                {
-                    "type": "doctype",
-                    "name": "POS Profile",
-                    "label": _("Point-of-Sale Profile"),
-                    "description": _("Setup default values for POS Invoices"),
-					"onboard": 1,
-                },
-                {
-                    "type": "page",
-                    "name": "pos",
-                    "label": _("POS"),
-                    "description": _("Point of Sale"),
-					"onboard": 1,
-					"dependencies": ["POS Profile"]
-                },
-                {
-                    "type": "doctype",
-                    "name": "Cashier Closing",
-                    "description": _("Cashier Closing"),
-                },
-                {
-                    "type": "doctype",
-                    "name": "POS Settings",
-                    "description": _("Setup mode of POS (Online / Offline)")
-                },
-                {
-                    "type": "doctype",
-                    "name": "Loyalty Program",
-                    "label": _("Loyalty Program"),
-                    "description": _("To make Customer based incentive schemes.")
-                },
-                {
-                    "type": "doctype",
-                    "name": "Loyalty Point Entry",
-                    "label": _("Loyalty Point Entry"),
-                    "description": _("To view logs of Loyalty Points assigned to a Customer.")
-                }
-            ]
-        }
-	]
\ No newline at end of file
diff --git a/erpnext/config/selling.py b/erpnext/config/selling.py
deleted file mode 100644
index 5db4cc2..0000000
--- a/erpnext/config/selling.py
+++ /dev/null
@@ -1,320 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Sales"),
-			"icon": "fa fa-star",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Customer",
-					"description": _("Customer Database."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Quotation",
-					"description": _("Quotes to Leads or Customers."),
-					"onboard": 1,
-					"dependencies": ["Item", "Customer"],
-				},
-				{
-					"type": "doctype",
-					"name": "Sales Order",
-					"description": _("Confirmed orders from Customers."),
-					"onboard": 1,
-					"dependencies": ["Item", "Customer"],
-				},
-				{
-					"type": "doctype",
-					"name": "Sales Invoice",
-					"description": _("Invoices for Costumers."),
-					"onboard": 1,
-					"dependencies": ["Item", "Customer"],
-				},
-				{
-					"type": "doctype",
-					"name": "Blanket Order",
-					"description": _("Blanket Orders from Costumers."),
-					"onboard": 1,
-					"dependencies": ["Item", "Customer"],
-				},
-				{
-					"type": "doctype",
-					"name": "Sales Partner",
-					"description": _("Manage Sales Partners."),
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "doctype",
-					"label": _("Sales Person"),
-					"name": "Sales Person",
-					"icon": "fa fa-sitemap",
-					"link": "Tree/Sales Person",
-					"description": _("Manage Sales Person Tree."),
-					"dependencies": ["Item", "Customer"],
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Territory Target Variance (Item Group-Wise)",
-					"route": "#query-report/Territory Target Variance Item Group-Wise",
-					"doctype": "Territory",
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Sales Person Target Variance (Item Group-Wise)",
-					"route": "#query-report/Sales Person Target Variance Item Group-Wise",
-					"doctype": "Sales Person",
-					"dependencies": ["Sales Person"],
-				},
-			]
-		},
-		{
-			"label": _("Items and Pricing"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Item",
-					"description": _("All Products or Services."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Item Price",
-					"description": _("Multiple Item prices."),
-					"route": "#Report/Item Price",
-					"dependencies": ["Item", "Price List"],
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Price List",
-					"description": _("Price List master."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Item Group",
-					"icon": "fa fa-sitemap",
-					"label": _("Item Group"),
-					"link": "Tree/Item Group",
-					"description": _("Tree of Item Groups."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Product Bundle",
-					"description": _("Bundle items at time of sale."),
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "doctype",
-					"name": "Promotional Scheme",
-					"description": _("Rules for applying different promotional schemes.")
-				},
-				{
-					"type": "doctype",
-					"name": "Pricing Rule",
-					"description": _("Rules for applying pricing and discount."),
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "doctype",
-					"name": "Shipping Rule",
-					"description": _("Rules for adding shipping costs."),
-				},
-				{
-					"type": "doctype",
-					"name": "Coupon Code",
-					"description": _("Define coupon codes."),
-				}
-			]
-		},
-		{
-			"label": _("Settings"),
-			"icon": "fa fa-cog",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Selling Settings",
-					"description": _("Default settings for selling transactions."),
-					"settings": 1,
-				},
-				{
-					"type": "doctype",
-					"name":"Terms and Conditions",
-					"label": _("Terms and Conditions Template"),
-					"description": _("Template of terms or contract."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Sales Taxes and Charges Template",
-					"description": _("Tax template for selling transactions."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Lead Source",
-					"description": _("Track Leads by Lead Source.")
-				},
-				{
-					"type": "doctype",
-					"label": _("Customer Group"),
-					"name": "Customer Group",
-					"icon": "fa fa-sitemap",
-					"link": "Tree/Customer Group",
-					"description": _("Manage Customer Group Tree."),
-				},
-				{
-					"type": "doctype",
-					"name": "Contact",
-					"description": _("All Contacts."),
-				},
-				{
-					"type": "doctype",
-					"name": "Address",
-					"description": _("All Addresses."),
-				},
-				{
-					"type": "doctype",
-					"label": _("Territory"),
-					"name": "Territory",
-					"icon": "fa fa-sitemap",
-					"link": "Tree/Territory",
-					"description": _("Manage Territory Tree."),
-				},
-				{
-					"type": "doctype",
-					"name": "Campaign",
-					"description": _("Sales campaigns."),
-				},
-			]
-		},
-		{
-			"label": _("Key Reports"),
-			"icon": "fa fa-table",
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Sales Analytics",
-					"doctype": "Sales Order",
-					"onboard": 1,
-				},
-				{
-					"type": "page",
-					"name": "sales-funnel",
-					"label": _("Sales Funnel"),
-					"icon": "fa fa-bar-chart",
-					"onboard": 1,
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Customer Acquisition and Loyalty",
-					"doctype": "Customer",
-					"icon": "fa fa-bar-chart",
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Inactive Customers",
-					"doctype": "Sales Order"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Ordered Items To Be Delivered",
-					"doctype": "Sales Order"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Sales Person-wise Transaction Summary",
-					"doctype": "Sales Order"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Item-wise Sales History",
-					"doctype": "Item"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Quotation Trends",
-					"doctype": "Quotation"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Sales Order Trends",
-					"doctype": "Sales Order"
-				},
-			]
-		},
-		{
-			"label": _("Other Reports"),
-			"icon": "fa fa-list",
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Lead Details",
-					"doctype": "Lead"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Address And Contacts",
-					"label": _("Customer Addresses And Contacts"),
-					"doctype": "Address",
-					"route_options": {
-						"party_type": "Customer"
-					}
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "BOM Search",
-					"doctype": "BOM"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Available Stock for Packing Items",
-					"doctype": "Item",
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Pending SO Items For Purchase Request",
-					"doctype": "Sales Order"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Customer Credit Balance",
-					"doctype": "Customer"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Customers Without Any Sales Transactions",
-					"doctype": "Customer"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Sales Partners Commission",
-					"doctype": "Customer"
-				}
-			]
-		},
-		
-	]
diff --git a/erpnext/config/settings.py b/erpnext/config/settings.py
deleted file mode 100644
index 323683a..0000000
--- a/erpnext/config/settings.py
+++ /dev/null
@@ -1,117 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-from frappe.desk.moduleview import add_setup_section
-
-def get_data():
-	data = [
-		{
-			"label": _("Settings"),
-			"icon": "fa fa-wrench",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Global Defaults",
-					"label": _("ERPNext Settings"),
-					"description": _("Set Default Values like Company, Currency, Current Fiscal Year, etc."),
-					"hide_count": True,
-					"settings": 1,
-				}
-			]
-		},
-		{
-			"label": _("Printing"),
-			"icon": "fa fa-print",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Letter Head",
-					"description": _("Letter Heads for print templates."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Print Heading",
-					"description": _("Titles for print templates e.g. Proforma Invoice.")
-				},
-				{
-					"type": "doctype",
-					"name": "Address Template",
-					"description": _("Country wise default Address Templates")
-				},
-				{
-					"type": "doctype",
-					"name": "Terms and Conditions",
-					"description": _("Standard contract terms for Sales or Purchase.")
-				},
-			]
-		},
-		{
-			"label": _("Help"),
-			"items": [
-				{
-					"type": "help",
-					"name": _("Data Import and Export"),
-					"youtube_id": "6wiriRKPhmg"
-				},
-				{
-					"type": "help",
-					"label": _("Setting up Email"),
-					"youtube_id": "YFYe0DrB95o"
-				},
-				{
-					"type": "help",
-					"label": _("Printing and Branding"),
-					"youtube_id": "cKZHcx1znMc"
-				},
-				{
-					"type": "help",
-					"label": _("Users and Permissions"),
-					"youtube_id": "8Slw1hsTmUI"
-				},
-				{
-					"type": "help",
-					"label": _("Workflow"),
-					"youtube_id": "yObJUg9FxFs"
-				},
-			]
-		},
-		{
-			"label": _("Customize"),
-			"icon": "fa fa-glass",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Authorization Rule",
-					"description": _("Create rules to restrict transactions based on values.")
-				}
-			]
-		},
-		{
-			"label": _("Email"),
-			"icon": "fa fa-envelope",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Email Digest",
-					"description": _("Create and manage daily, weekly and monthly email digests.")
-				},
-				{
-					"type": "doctype",
-					"name": "SMS Settings",
-					"description": _("Setup SMS gateway settings")
-				},
-			]
-		}
-	]
-
-	for module, label, icon in (
-		("accounts", _("Accounting"), "fa fa-money"),
-		("stock", _("Stock"), "fa fa-truck"),
-		("selling", _("Selling"), "fa fa-tag"),
-		("buying", _("Buying"), "fa fa-shopping-cart"),
-		("hr", _("Human Resources"), "fa fa-group"),
-		("support", _("Support"), "fa fa-phone")):
-
-		add_setup_section(data, "erpnext", module, label, icon)
-
-	return data
diff --git a/erpnext/config/stock.py b/erpnext/config/stock.py
deleted file mode 100644
index dd35f5a..0000000
--- a/erpnext/config/stock.py
+++ /dev/null
@@ -1,361 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Stock Transactions"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Stock Entry",
-					"onboard": 1,
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "doctype",
-					"name": "Delivery Note",
-					"onboard": 1,
-					"dependencies": ["Item", "Customer"],
-				},
-				{
-					"type": "doctype",
-					"name": "Purchase Receipt",
-					"onboard": 1,
-					"dependencies": ["Item", "Supplier"],
-				},
-				{
-					"type": "doctype",
-					"name": "Material Request",
-					"onboard": 1,
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "doctype",
-					"name": "Pick List",
-					"onboard": 1,
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "doctype",
-					"name": "Delivery Trip"
-				},
-			]
-		},
-		{
-			"label": _("Stock Reports"),
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Stock Ledger",
-					"doctype": "Stock Ledger Entry",
-					"onboard": 1,
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Stock Balance",
-					"doctype": "Stock Ledger Entry",
-					"onboard": 1,
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Stock Projected Qty",
-					"doctype": "Item",
-					"onboard": 1,
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "page",
-					"name": "stock-balance",
-					"label": _("Stock Summary"),
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Stock Ageing",
-					"doctype": "Item",
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Item Price Stock",
-					"doctype": "Item",
-					"dependencies": ["Item"],
-				}
-			]
-		},
-		{
-			"label": _("Settings"),
-			"icon": "fa fa-cog",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Stock Settings",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Warehouse",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "UOM",
-					"label": _("Unit of Measure") + " (UOM)",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Brand",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Item Attribute",
-				},
-				{
-					"type": "doctype",
-					"name": "Item Variant Settings",
-				},
-			]
-		},
-		{
-			"label": _("Items and Pricing"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Item",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Product Bundle",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Item Group",
-					"icon": "fa fa-sitemap",
-					"label": _("Item Group"),
-					"link": "Tree/Item Group",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Price List",
-				},
-				{
-					"type": "doctype",
-					"name": "Item Price",
-				},
-				{
-					"type": "doctype",
-					"name": "Shipping Rule",
-				},
-				{
-					"type": "doctype",
-					"name": "Pricing Rule",
-				},
-				{
-					"type": "doctype",
-					"name": "Item Alternative",
-				},
-				{
-					"type": "doctype",
-					"name": "Item Manufacturer",
-				},
-				{
-					"type": "doctype",
-					"name": "Item Variant Settings",
-				},
-			]
-		},
-		{
-			"label": _("Serial No and Batch"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Serial No",
-					"onboard": 1,
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "doctype",
-					"name": "Batch",
-					"onboard": 1,
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "doctype",
-					"name": "Installation Note",
-					"dependencies": ["Item"],
-				},
-				{
-					"type": "report",
-					"name": "Serial No Service Contract Expiry",
-					"doctype": "Serial No"
-				},
-				{
-					"type": "report",
-					"name": "Serial No Status",
-					"doctype": "Serial No"
-				},
-				{
-					"type": "report",
-					"name": "Serial No Warranty Expiry",
-					"doctype": "Serial No"
-				},
-			]
-		},
-		{
-			"label": _("Tools"),
-			"icon": "fa fa-wrench",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Stock Reconciliation",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Landed Cost Voucher",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Packing Slip",
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Quality Inspection",
-				},
-				{
-					"type": "doctype",
-					"name": "Quality Inspection Template",
-				},
-				{
-					"type": "doctype",
-					"name": "Quick Stock Balance",
-				},
-			]
-		},
-		{
-			"label": _("Key Reports"),
-			"icon": "fa fa-table",
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": False,
-					"name": "Item-wise Price List Rate",
-					"doctype": "Item Price",
-					"onboard": 1,
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Stock Analytics",
-					"doctype": "Stock Entry",
-					"onboard": 1,
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Delivery Note Trends",
-					"doctype": "Delivery Note"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Purchase Receipt Trends",
-					"doctype": "Purchase Receipt"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Ordered Items To Be Delivered",
-					"doctype": "Delivery Note"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Purchase Order Items To Be Received",
-					"doctype": "Purchase Receipt"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Item Shortage Report",
-					"doctype": "Bin"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Batch-Wise Balance History",
-					"doctype": "Batch"
-				},
-			]
-		},
-		{
-			"label": _("Other Reports"),
-			"icon": "fa fa-list",
-			"items": [
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Requested Items To Be Transferred",
-					"doctype": "Material Request"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Batch Item Expiry Status",
-					"doctype": "Stock Ledger Entry"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Item Prices",
-					"doctype": "Price List"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Itemwise Recommended Reorder Level",
-					"doctype": "Item"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Item Variant Details",
-					"doctype": "Item"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Subcontracted Raw Materials To Be Transferred",
-					"doctype": "Purchase Order"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Subcontracted Item To Be Received",
-					"doctype": "Purchase Order"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Stock and Account Value Comparison",
-					"doctype": "Stock Ledger Entry"
-				}
-			]
-		},
-
-	]
diff --git a/erpnext/config/support.py b/erpnext/config/support.py
deleted file mode 100644
index 151c4f7..0000000
--- a/erpnext/config/support.py
+++ /dev/null
@@ -1,105 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Issues"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Issue",
-					"description": _("Support queries from customers."),
-					"onboard": 1,
-				},
-				{
-					"type": "doctype",
-					"name": "Issue Type",
-					"description": _("Issue Type."),
-				},
-				{
-					"type": "doctype",
-					"name": "Issue Priority",
-					"description": _("Issue Priority."),
-				}
-			]
-		},
-		{
-			"label": _("Warranty"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Warranty Claim",
-					"description": _("Warranty Claim against Serial No."),
-				},
-				{
-					"type": "doctype",
-					"name": "Serial No",
-					"description": _("Single unit of an Item."),
-				},
-			]
-		},
-		{
-			"label": _("Service Level Agreement"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Service Level",
-					"description": _("Service Level."),
-				},
-				{
-					"type": "doctype",
-					"name": "Service Level Agreement",
-					"description": _("Service Level Agreement."),
-				}
-			]
-		},
-		{
-			"label": _("Maintenance"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Maintenance Schedule",
-				},
-				{
-					"type": "doctype",
-					"name": "Maintenance Visit",
-				},
-			]
-		},
-		{
-			"label": _("Reports"),
-			"icon": "fa fa-list",
-			"items": [
-				{
-					"type": "page",
-					"name": "support-analytics",
-					"label": _("Support Analytics"),
-					"icon": "fa fa-bar-chart"
-				},
-				{
-					"type": "report",
-					"name": "Minutes to First Response for Issues",
-					"doctype": "Issue",
-					"is_query_report": True
-				},
-				{
-					"type": "report",
-					"name": "Support Hours",
-					"doctype": "Issue",
-					"is_query_report": True
-				},
-			]
-		},
-		{
-			"label": _("Settings"),
-			"icon": "fa fa-list",
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Support Settings",
-					"label": _("Support Settings"),
-				},
-			]
-		},
-	]
\ No newline at end of file
diff --git a/erpnext/config/website.py b/erpnext/config/website.py
deleted file mode 100644
index d31b057..0000000
--- a/erpnext/config/website.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from __future__ import unicode_literals
-from frappe import _
-
-def get_data():
-	return [
-		{
-			"label": _("Portal"),
-			"items": [
-				{
-					"type": "doctype",
-					"name": "Homepage",
-					"description": _("Settings for website homepage"),
-				},
-				{
-					"type": "doctype",
-					"name": "Homepage Section",
-					"description": _("Add cards or custom sections on homepage"),
-				},
-				{
-					"type": "doctype",
-					"name": "Products Settings",
-					"description": _("Settings for website product listing"),
-				},
-				{
-					"type": "doctype",
-					"name": "Shopping Cart Settings",
-					"label": _("Shopping Cart Settings"),
-					"description": _("Settings for online shopping cart such as shipping rules, price list etc."),
-					"hide_count": True
-				}
-			]
-		}
-	]
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 0f1aa23..933b4b2 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -22,6 +22,7 @@
 from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions
 from erpnext.stock.get_item_details import get_item_warehouse, _get_item_tax_template, get_item_tax_map
 from erpnext.stock.doctype.packed_item.packed_item import make_packing_list
+from erpnext.controllers.print_settings import set_print_templates_for_item_table, set_print_templates_for_taxes
 
 class AccountMissingError(frappe.ValidationError): pass
 
@@ -31,6 +32,19 @@
 	def __init__(self, *args, **kwargs):
 		super(AccountsController, self).__init__(*args, **kwargs)
 
+	def get_print_settings(self):
+		print_setting_fields = []
+		items_field = self.meta.get_field('items')
+
+		if items_field and items_field.fieldtype == 'Table':
+			print_setting_fields += ['compact_item_print', 'print_uom_after_quantity']
+
+		taxes_field = self.meta.get_field('taxes')
+		if taxes_field and taxes_field.fieldtype == 'Table':
+			print_setting_fields += ['print_taxes_with_zero_amount']
+
+		return print_setting_fields
+
 	@property
 	def company_currency(self):
 		if not hasattr(self, "__company_currency"):
@@ -148,7 +162,7 @@
 		elif self.doctype in ("Quotation", "Purchase Order", "Sales Order"):
 			self.validate_non_invoice_documents_schedule()
 
-	def before_print(self):
+	def before_print(self, settings=None):
 		if self.doctype in ['Purchase Order', 'Sales Order', 'Sales Invoice', 'Purchase Invoice',
 							'Supplier Quotation', 'Purchase Receipt', 'Delivery Note', 'Quotation']:
 			if self.get("group_same_items"):
@@ -161,6 +175,9 @@
 			else:
 				df.set("print_hide", 1)
 
+		set_print_templates_for_item_table(self, settings)
+		set_print_templates_for_taxes(self, settings)
+
 	def calculate_paid_amount(self):
 		if hasattr(self, "is_pos") or hasattr(self, "is_paid"):
 			is_paid = self.get("is_pos") or self.get("is_paid")
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 6edc020..adc6e01 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -20,16 +20,6 @@
 from erpnext.stock.utils import get_incoming_rate
 
 class BuyingController(StockController):
-	def __setup__(self):
-		if hasattr(self, "taxes"):
-			self.flags.print_taxes_with_zero_amount = cint(frappe.db.get_single_value("Print Settings",
-				 "print_taxes_with_zero_amount"))
-			self.flags.show_inclusive_tax_in_print = self.is_inclusive_tax()
-
-			self.print_templates = {
-				"total": "templates/print_formats/includes/total.html",
-				"taxes": "templates/print_formats/includes/taxes.html"
-			}
 
 	def get_feed(self):
 		if self.get("supplier_name"):
diff --git a/erpnext/controllers/print_settings.py b/erpnext/controllers/print_settings.py
index c41db25..e08c400 100644
--- a/erpnext/controllers/print_settings.py
+++ b/erpnext/controllers/print_settings.py
@@ -5,20 +5,34 @@
 import frappe
 from frappe.utils import cint
 
-def print_settings_for_item_table(doc):
-
+def set_print_templates_for_item_table(doc, settings):
 	doc.print_templates = {
-		"qty": "templates/print_formats/includes/item_table_qty.html"
+		"items": "templates/print_formats/includes/items.html",
 	}
-	doc.hide_in_print_layout = ["uom", "stock_uom"]
 
-	doc.flags.compact_item_print = cint(frappe.db.get_single_value("Print Settings", "compact_item_print"))
+	doc.child_print_templates = {
+		"items": {
+			"qty": "templates/print_formats/includes/item_table_qty.html",
+		}
+	}
 
-	if doc.flags.compact_item_print:
-		doc.print_templates["description"] = "templates/print_formats/includes/item_table_description.html"
-		doc.flags.compact_item_fields = ["description", "qty", "rate", "amount"]
+	if doc.meta.get_field("items"):
+		doc.meta.get_field("items").hide_in_print_layout = ["uom", "stock_uom"]
+
+	doc.flags.compact_item_fields = ["description", "qty", "rate", "amount"]
+
+	if settings.compact_item_print:
+		doc.child_print_templates["items"]["description"] =\
+			"templates/print_formats/includes/item_table_description.html"
 		doc.flags.format_columns = format_columns
 
+def set_print_templates_for_taxes(doc, settings):
+	doc.flags.show_inclusive_tax_in_print = doc.is_inclusive_tax()
+	doc.print_templates.update({
+		"total": "templates/print_formats/includes/total.html",
+		"taxes": "templates/print_formats/includes/taxes.html"
+	})
+
 def format_columns(display_columns, compact_fields):
 	compact_fields = compact_fields + ["image", "item_code", "item_name"]
 	final_columns = []
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 812021f..b5ad885 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -16,16 +16,6 @@
 from erpnext.controllers.sales_and_purchase_return import get_rate_for_return
 
 class SellingController(StockController):
-	def __setup__(self):
-		if hasattr(self, "taxes"):
-			self.flags.print_taxes_with_zero_amount = cint(frappe.db.get_single_value("Print Settings",
-				"print_taxes_with_zero_amount"))
-			self.flags.show_inclusive_tax_in_print = self.is_inclusive_tax()
-
-			self.print_templates = {
-				"total": "templates/print_formats/includes/total.html",
-				"taxes": "templates/print_formats/includes/taxes.html"
-			}
 
 	def get_feed(self):
 		return _("To {0} | {1} {2}").format(self.customer_name, self.currency,
@@ -191,7 +181,7 @@
 		for it in self.get("items"):
 			if not it.item_code:
 				continue
-			
+
 			last_purchase_rate, is_stock_item = frappe.get_cached_value("Item", it.item_code, ["last_purchase_rate", "is_stock_item"])
 			last_purchase_rate_in_sales_uom = last_purchase_rate * (it.conversion_factor or 1)
 			if flt(it.base_net_rate) < flt(last_purchase_rate_in_sales_uom):
diff --git a/erpnext/crm/desk_page/crm/crm.json b/erpnext/crm/desk_page/crm/crm.json
deleted file mode 100644
index d974beb..0000000
--- a/erpnext/crm/desk_page/crm/crm.json
+++ /dev/null
@@ -1,86 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Sales Pipeline",
-   "links": "[\n    {\n        \"description\": \"Database of potential customers.\",\n        \"label\": \"Lead\",\n        \"name\": \"Lead\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Potential opportunities for selling.\",\n        \"label\": \"Opportunity\",\n        \"name\": \"Opportunity\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Customer database.\",\n        \"label\": \"Customer\",\n        \"name\": \"Customer\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"All Contacts.\",\n        \"label\": \"Contact\",\n        \"name\": \"Contact\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Record of all communications of type email, phone, chat, visit, etc.\",\n        \"label\": \"Communication\",\n        \"name\": \"Communication\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Track Leads by Lead Source.\",\n        \"label\": \"Lead Source\",\n        \"name\": \"Lead Source\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Helps you keep tracks of Contracts based on Supplier, Customer and Employee\",\n        \"label\": \"Contract\",\n        \"name\": \"Contract\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Helps you manage appointments with your leads\",\n        \"label\": \"Appointment\",\n        \"name\": \"Appointment\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Newsletter\",\n        \"name\": \"Newsletter\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Lead\"\n        ],\n        \"doctype\": \"Lead\",\n        \"is_query_report\": true,\n        \"label\": \"Lead Details\",\n        \"name\": \"Lead Details\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"icon\": \"fa fa-bar-chart\",\n        \"label\": \"Sales Funnel\",\n        \"name\": \"sales-funnel\",\n        \"onboard\": 1,\n        \"type\": \"page\"\n    },\n    {\n        \"dependencies\": [\n            \"Lead\"\n        ],\n        \"doctype\": \"Lead\",\n        \"is_query_report\": true,\n        \"label\": \"Prospects Engaged But Not Converted\",\n        \"name\": \"Prospects Engaged But Not Converted\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Opportunity\"\n        ],\n        \"doctype\": \"Opportunity\",\n        \"is_query_report\": true,\n        \"label\": \"First Response Time for Opportunity\",\n        \"name\": \"First Response Time for Opportunity\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Inactive Customers\",\n        \"name\": \"Inactive Customers\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Lead\"\n        ],\n        \"doctype\": \"Lead\",\n        \"is_query_report\": true,\n        \"label\": \"Campaign Efficiency\",\n        \"name\": \"Campaign Efficiency\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Lead\"\n        ],\n        \"doctype\": \"Lead\",\n        \"is_query_report\": true,\n        \"label\": \"Lead Owner Efficiency\",\n        \"name\": \"Lead Owner Efficiency\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Maintenance",
-   "links": "[\n    {\n        \"description\": \"Plan for maintenance visits.\",\n        \"label\": \"Maintenance Schedule\",\n        \"name\": \"Maintenance Schedule\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Visit report for maintenance call.\",\n        \"label\": \"Maintenance Visit\",\n        \"name\": \"Maintenance Visit\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Warranty Claim against Serial No.\",\n        \"label\": \"Warranty Claim\",\n        \"name\": \"Warranty Claim\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Campaign",
-   "links": "[\n    {\n        \"description\": \"Sales campaigns.\",\n        \"label\": \"Campaign\",\n        \"name\": \"Campaign\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Sends Mails to lead or contact based on a Campaign schedule\",\n        \"label\": \"Email Campaign\",\n        \"name\": \"Email Campaign\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Create and Schedule social media posts\",\n        \"label\": \"Social Media Post\",\n        \"name\": \"Social Media Post\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Settings",
-   "links": "[\n    {\n        \"description\": \"Manage Customer Group Tree.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Customer Group\",\n        \"link\": \"Tree/Customer Group\",\n        \"name\": \"Customer Group\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Manage Territory Tree.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Territory\",\n        \"link\": \"Tree/Territory\",\n        \"name\": \"Territory\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Manage Sales Person Tree.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Sales Person\",\n        \"link\": \"Tree/Sales Person\",\n        \"name\": \"Sales Person\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Send mass SMS to your contacts\",\n        \"label\": \"SMS Center\",\n        \"name\": \"SMS Center\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Logs for maintaining sms delivery status\",\n        \"label\": \"SMS Log\",\n        \"name\": \"SMS Log\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Setup SMS gateway settings\",\n        \"label\": \"SMS Settings\",\n        \"name\": \"SMS Settings\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Email Group\",\n        \"name\": \"Email Group\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Twitter Settings\",\n        \"name\": \"Twitter Settings\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"LinkedIn Settings\",\n        \"name\": \"LinkedIn Settings\",\n        \"type\": \"doctype\"\n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [
-  {
-   "chart_name": "Territory Wise Sales"
-  }
- ],
- "creation": "2020-01-23 14:48:30.183272",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "CRM",
- "modified": "2020-08-11 18:55:18.238900",
- "modified_by": "Administrator",
- "module": "CRM",
- "name": "CRM",
- "onboarding": "CRM",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "color": "#ffe8cd",
-   "format": "{} Open",
-   "label": "Lead",
-   "link_to": "Lead",
-   "stats_filter": "{\"status\":\"Open\"}",
-   "type": "DocType"
-  },
-  {
-   "color": "#cef6d1",
-   "format": "{} Assigned",
-   "label": "Opportunity",
-   "link_to": "Opportunity",
-   "stats_filter": "{\"_assign\": [\"like\", '%' + frappe.session.user + '%']}",
-   "type": "DocType"
-  },
-  {
-   "label": "Customer",
-   "link_to": "Customer",
-   "type": "DocType"
-  },
-  {
-   "label": "Sales Analytics",
-   "link_to": "Sales Analytics",
-   "type": "Report"
-  },
-  {
-   "label": "Dashboard",
-   "link_to": "CRM",
-   "type": "Dashboard"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/crm/doctype/contract/contract_list.js b/erpnext/crm/doctype/contract/contract_list.js
index 2ef5900..a09d123 100644
--- a/erpnext/crm/doctype/contract/contract_list.js
+++ b/erpnext/crm/doctype/contract/contract_list.js
@@ -6,7 +6,7 @@
         } else if (doc.status == "Active") {
             return [__(doc.status), "green", "status,=," + doc.status];
         } else if (doc.status == "Inactive") {
-            return [__(doc.status), "darkgrey", "status,=," + doc.status];
+            return [__(doc.status), "gray", "status,=," + doc.status];
         }
     },
 };
\ No newline at end of file
diff --git a/erpnext/crm/workspace/crm/crm.json b/erpnext/crm/workspace/crm/crm.json
new file mode 100644
index 0000000..b4fb7d8
--- /dev/null
+++ b/erpnext/crm/workspace/crm/crm.json
@@ -0,0 +1,407 @@
+{
+ "category": "Modules",
+ "charts": [
+  {
+   "chart_name": "Territory Wise Sales"
+  }
+ ],
+ "creation": "2020-01-23 14:48:30.183272",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "crm",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "CRM",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sales Pipeline",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Lead",
+   "link_to": "Lead",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Opportunity",
+   "link_to": "Opportunity",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Customer",
+   "link_to": "Customer",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Contact",
+   "link_to": "Contact",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Communication",
+   "link_to": "Communication",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Lead Source",
+   "link_to": "Lead Source",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Contract",
+   "link_to": "Contract",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Appointment",
+   "link_to": "Appointment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Newsletter",
+   "link_to": "Newsletter",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Lead",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Lead Details",
+   "link_to": "Lead Details",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sales Funnel",
+   "link_to": "sales-funnel",
+   "link_type": "Page",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Lead",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Prospects Engaged But Not Converted",
+   "link_to": "Prospects Engaged But Not Converted",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Opportunity",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "First Response Time for Opportunity",
+   "link_to": "First Response Time for Opportunity",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Inactive Customers",
+   "link_to": "Inactive Customers",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Lead",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Campaign Efficiency",
+   "link_to": "Campaign Efficiency",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Lead",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Lead Owner Efficiency",
+   "link_to": "Lead Owner Efficiency",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Maintenance",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Maintenance Schedule",
+   "link_to": "Maintenance Schedule",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Maintenance Visit",
+   "link_to": "Maintenance Visit",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Warranty Claim",
+   "link_to": "Warranty Claim",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Campaign",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Campaign",
+   "link_to": "Campaign",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Email Campaign",
+   "link_to": "Email Campaign",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Social Media Post",
+   "link_to": "Social Media Post",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Customer Group",
+   "link_to": "Customer Group",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Territory",
+   "link_to": "Territory",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sales Person",
+   "link_to": "Sales Person",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "SMS Center",
+   "link_to": "SMS Center",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "SMS Log",
+   "link_to": "SMS Log",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "SMS Settings",
+   "link_to": "SMS Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Email Group",
+   "link_to": "Email Group",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Twitter Settings",
+   "link_to": "Twitter Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "LinkedIn Settings",
+   "link_to": "LinkedIn Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:36.871352",
+ "modified_by": "Administrator",
+ "module": "CRM",
+ "name": "CRM",
+ "onboarding": "CRM",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "color": "Blue",
+   "format": "{} Open",
+   "label": "Lead",
+   "link_to": "Lead",
+   "stats_filter": "{\"status\":\"Open\"}",
+   "type": "DocType"
+  },
+  {
+   "color": "Blue",
+   "format": "{} Assigned",
+   "label": "Opportunity",
+   "link_to": "Opportunity",
+   "stats_filter": "{\"_assign\": [\"like\", '%' + frappe.session.user + '%']}",
+   "type": "DocType"
+  },
+  {
+   "label": "Customer",
+   "link_to": "Customer",
+   "type": "DocType"
+  },
+  {
+   "label": "Sales Analytics",
+   "link_to": "Sales Analytics",
+   "type": "Report"
+  },
+  {
+   "label": "Dashboard",
+   "link_to": "CRM",
+   "type": "Dashboard"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/education/desk_page/education/education.json b/erpnext/education/desk_page/education/education.json
deleted file mode 100644
index 77ee8ec..0000000
--- a/erpnext/education/desk_page/education/education.json
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Student and Instructor",
-   "links": "[\n    {\n        \"label\": \"Student\",\n        \"name\": \"Student\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Instructor\",\n        \"name\": \"Instructor\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Guardian\",\n        \"name\": \"Guardian\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Student Group\",\n        \"name\": \"Student Group\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Student Log\",\n        \"name\": \"Student Log\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Masters",
-   "links": "[\n    {\n        \"label\": \"Program\",\n        \"name\": \"Program\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Course\",\n        \"name\": \"Course\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Topic\",\n        \"name\": \"Topic\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Room\",\n        \"name\": \"Room\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Content Masters",
-   "links": "[\n    {\n        \"label\": \"Article\",\n        \"name\": \"Article\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Video\",\n        \"name\": \"Video\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Quiz\",\n        \"name\": \"Quiz\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Settings",
-   "links": "[\n    {\n        \"label\": \"Education Settings\",\n        \"name\": \"Education Settings\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Student Category\",\n        \"name\": \"Student Category\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Student Batch Name\",\n        \"name\": \"Student Batch Name\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Grading Scale\",\n        \"name\": \"Grading Scale\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Academic Term\",\n        \"name\": \"Academic Term\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Academic Year\",\n        \"name\": \"Academic Year\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Admission",
-   "links": "[\n    {\n        \"label\": \"Student Applicant\",\n        \"name\": \"Student Applicant\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Student Admission\",\n        \"name\": \"Student Admission\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Program Enrollment\",\n        \"name\": \"Program Enrollment\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Course Enrollment\",\n        \"name\": \"Course Enrollment\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Fees",
-   "links": "[\n    {\n        \"label\": \"Fee Structure\",\n        \"name\": \"Fee Structure\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Fee Category\",\n        \"name\": \"Fee Category\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Fee Schedule\",\n        \"name\": \"Fee Schedule\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Fees\",\n        \"name\": \"Fees\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Fees\"\n        ],\n        \"doctype\": \"Fees\",\n        \"is_query_report\": true,\n        \"label\": \"Student Fee Collection Report\",\n        \"name\": \"Student Fee Collection\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Fees\"\n        ],\n        \"doctype\": \"Fees\",\n        \"is_query_report\": true,\n        \"label\": \"Program wise Fee Collection Report\",\n        \"name\": \"Program wise Fee Collection\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Schedule",
-   "links": "[\n    {\n        \"label\": \"Course Schedule\",\n        \"name\": \"Course Schedule\",\n        \"route\": \"#List/Course Schedule/Calendar\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Course Scheduling Tool\",\n        \"name\": \"Course Scheduling Tool\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Attendance",
-   "links": "[\n    {\n        \"label\": \"Student Attendance\",\n        \"name\": \"Student Attendance\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Student Leave Application\",\n        \"name\": \"Student Leave Application\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Student Attendance\"\n        ],\n        \"doctype\": \"Student Attendance\",\n        \"is_query_report\": true,\n        \"label\": \"Student Monthly Attendance Sheet\",\n        \"name\": \"Student Monthly Attendance Sheet\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Student Attendance\"\n        ],\n        \"doctype\": \"Student Attendance\",\n        \"is_query_report\": true,\n        \"label\": \"Absent Student Report\",\n        \"name\": \"Absent Student Report\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Student Attendance\"\n        ],\n        \"doctype\": \"Student Attendance\",\n        \"is_query_report\": true,\n        \"label\": \"Student Batch-Wise Attendance\",\n        \"name\": \"Student Batch-Wise Attendance\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "LMS Activity",
-   "links": "[\n    {\n        \"label\": \"Course Enrollment\",\n        \"name\": \"Course Enrollment\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Course Activity\",\n        \"name\": \"Course Activity\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Quiz Activity\",\n        \"name\": \"Quiz Activity\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Assessment",
-   "links": "[\n    {\n        \"label\": \"Assessment Plan\",\n        \"name\": \"Assessment Plan\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Assessment Group\",\n        \"link\": \"Tree/Assessment Group\",\n        \"name\": \"Assessment Group\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Assessment Result\",\n        \"name\": \"Assessment Result\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Assessment Criteria\",\n        \"name\": \"Assessment Criteria\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Assessment Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Assessment Result\"\n        ],\n        \"doctype\": \"Assessment Result\",\n        \"is_query_report\": true,\n        \"label\": \"Course wise Assessment Report\",\n        \"name\": \"Course wise Assessment Report\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Assessment Result\"\n        ],\n        \"doctype\": \"Assessment Result\",\n        \"is_query_report\": true,\n        \"label\": \"Final Assessment Grades\",\n        \"name\": \"Final Assessment Grades\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Assessment Plan\"\n        ],\n        \"doctype\": \"Assessment Plan\",\n        \"is_query_report\": true,\n        \"label\": \"Assessment Plan Status\",\n        \"name\": \"Assessment Plan Status\",\n        \"type\": \"report\"\n    },\n    {\n        \"label\": \"Student Report Generation Tool\",\n        \"name\": \"Student Report Generation Tool\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Tools",
-   "links": "[\n    {\n        \"label\": \"Student Attendance Tool\",\n        \"name\": \"Student Attendance Tool\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Assessment Result Tool\",\n        \"name\": \"Assessment Result Tool\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Student Group Creation Tool\",\n        \"name\": \"Student Group Creation Tool\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Program Enrollment Tool\",\n        \"name\": \"Program Enrollment Tool\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Course Scheduling Tool\",\n        \"name\": \"Course Scheduling Tool\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Other Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Program Enrollment\"\n        ],\n        \"doctype\": \"Program Enrollment\",\n        \"is_query_report\": true,\n        \"label\": \"Student and Guardian Contact Details\",\n        \"name\": \"Student and Guardian Contact Details\",\n        \"type\": \"report\"\n    }\n]"
-  }
- ],
- "category": "Domains",
- "charts": [
-  {
-   "chart_name": "Program Enrollments",
-   "label": "Program Enrollments"
-  }
- ],
- "creation": "2020-03-02 17:22:57.066401",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Education",
- "modified": "2020-07-27 19:35:18.832694",
- "modified_by": "Administrator",
- "module": "Education",
- "name": "Education",
- "onboarding": "Education",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "restrict_to_domain": "Education",
- "shortcuts": [
-  {
-   "color": "#cef6d1",
-   "format": "{} Active",
-   "label": "Student",
-   "link_to": "Student",
-   "stats_filter": "{\n    \"enabled\": 1\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "#cef6d1",
-   "format": "{} Active",
-   "label": "Instructor",
-   "link_to": "Instructor",
-   "stats_filter": "{\n    \"status\": \"Active\"\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "",
-   "format": "",
-   "label": "Program",
-   "link_to": "Program",
-   "stats_filter": "",
-   "type": "DocType"
-  },
-  {
-   "label": "Course",
-   "link_to": "Course",
-   "type": "DocType"
-  },
-  {
-   "color": "#ffe8cd",
-   "format": "{} Unpaid",
-   "label": "Fees",
-   "link_to": "Fees",
-   "stats_filter": "{\n    \"outstanding_amount\": [\"!=\", 0.0]\n}",
-   "type": "DocType"
-  },
-  {
-   "label": "Student Monthly Attendance Sheet",
-   "link_to": "Student Monthly Attendance Sheet",
-   "type": "Report"
-  },
-  {
-   "label": "Course Scheduling Tool",
-   "link_to": "Course Scheduling Tool",
-   "type": "DocType"
-  },
-  {
-   "label": "Student Attendance Tool",
-   "link_to": "Student Attendance Tool",
-   "type": "DocType"
-  },
-  {
-   "label": "Dashboard",
-   "link_to": "Education",
-   "type": "Dashboard"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/education/doctype/assessment_result_tool/assessment_result_tool.js b/erpnext/education/doctype/assessment_result_tool/assessment_result_tool.js
index 3cd4512..053f0c2 100644
--- a/erpnext/education/doctype/assessment_result_tool/assessment_result_tool.js
+++ b/erpnext/education/doctype/assessment_result_tool/assessment_result_tool.js
@@ -128,7 +128,7 @@
 						result_table.find(`span[data-student=${assessment_result.student}].total-score-grade`).html(assessment_result.grade);
 						let link_span = result_table.find(`span[data-student=${assessment_result.student}].total-result-link`);
 						$(link_span).css("display", "block");
-						$(link_span).find("a").attr("href", "#Form/Assessment Result/"+assessment_result.name);
+						$(link_span).find("a").attr("href", "/app/assessment-result/"+assessment_result.name);
 					}
 				});
 			}
diff --git a/erpnext/education/doctype/course_scheduling_tool/course_scheduling_tool.js b/erpnext/education/doctype/course_scheduling_tool/course_scheduling_tool.js
index 20503f9..4e2ccaa 100644
--- a/erpnext/education/doctype/course_scheduling_tool/course_scheduling_tool.js
+++ b/erpnext/education/doctype/course_scheduling_tool/course_scheduling_tool.js
@@ -25,7 +25,7 @@
 							<thead><tr><th>${__("Course")}</th><th>${__("Date")}</th></tr></thead>
 							<tbody>
 								${course_schedules.map(
-									c => `<tr><td><a href="#Form/Course Schedule/${c.name}">${c.name}</a></td>
+									c => `<tr><td><a href="/app/course-schedule/${c.name}">${c.name}</a></td>
 									<td>${c.schedule_date}</td></tr>`
 								).join('')}
 							</tbody>
diff --git a/erpnext/education/doctype/fee_schedule/fee_schedule.js b/erpnext/education/doctype/fee_schedule/fee_schedule.js
index 65b5fa6..0089957 100644
--- a/erpnext/education/doctype/fee_schedule/fee_schedule.js
+++ b/erpnext/education/doctype/fee_schedule/fee_schedule.js
@@ -48,7 +48,7 @@
 				frm.reload_doc();
 			}
 			if (data.progress) {
-				let progress_bar = $(cur_frm.dashboard.progress_area).find('.progress-bar');
+				let progress_bar = $(cur_frm.dashboard.progress_area.body).find('.progress-bar');
 				if (progress_bar) {
 					$(progress_bar).removeClass('progress-bar-danger').addClass('progress-bar-success progress-bar-striped');
 					$(progress_bar).css('width', data.progress+'%');
diff --git a/erpnext/education/doctype/program_enrollment/program_enrollment.py b/erpnext/education/doctype/program_enrollment/program_enrollment.py
index 886a7d8..d18c0f9 100644
--- a/erpnext/education/doctype/program_enrollment/program_enrollment.py
+++ b/erpnext/education/doctype/program_enrollment/program_enrollment.py
@@ -87,7 +87,7 @@
 				fees.submit()
 				fee_list.append(fees.name)
 		if fee_list:
-			fee_list = ["""<a href="#Form/Fees/%s" target="_blank">%s</a>""" % \
+			fee_list = ["""<a href="/app/Form/Fees/%s" target="_blank">%s</a>""" % \
 				(fee, fee) for fee in fee_list]
 			msgprint(_("Fee Records Created - {0}").format(comma_and(fee_list)))
 
diff --git a/erpnext/education/doctype/student_admission/templates/student_admission.html b/erpnext/education/doctype/student_admission/templates/student_admission.html
index 7ff3906..f9ddac0 100644
--- a/erpnext/education/doctype/student_admission/templates/student_admission.html
+++ b/erpnext/education/doctype/student_admission/templates/student_admission.html
@@ -21,7 +21,7 @@
 				{% elif frappe.utils.getdate(doc.admission_start_date) > today %}
 					blue"> Application will open
 				{% else %}
-					darkgrey
+					gray
 				{% endif  %}
 	        </span>
 		</div>
diff --git a/erpnext/education/doctype/student_admission/templates/student_admission_row.html b/erpnext/education/doctype/student_admission/templates/student_admission_row.html
index cf22436..99868d5 100644
--- a/erpnext/education/doctype/student_admission/templates/student_admission_row.html
+++ b/erpnext/education/doctype/student_admission/templates/student_admission_row.html
@@ -11,7 +11,7 @@
 				{% elif frappe.utils.getdate(doc.admission_start_date) > today %}
 					blue
 				{% else %}
-					darkgrey
+					gray
 				{% endif  %}
 				">{{ doc.title }}</span>
 			</div>
diff --git a/erpnext/education/workspace/education/education.json b/erpnext/education/workspace/education/education.json
new file mode 100644
index 0000000..bf74961
--- /dev/null
+++ b/erpnext/education/workspace/education/education.json
@@ -0,0 +1,701 @@
+{
+ "category": "Domains",
+ "charts": [
+  {
+   "chart_name": "Program Enrollments",
+   "label": "Program Enrollments"
+  }
+ ],
+ "creation": "2020-03-02 17:22:57.066401",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "education",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Education",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student and Instructor",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student",
+   "link_to": "Student",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Instructor",
+   "link_to": "Instructor",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Guardian",
+   "link_to": "Guardian",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student Group",
+   "link_to": "Student Group",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student Log",
+   "link_to": "Student Log",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Masters",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Program",
+   "link_to": "Program",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Course",
+   "link_to": "Course",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Topic",
+   "link_to": "Topic",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Room",
+   "link_to": "Room",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Content Masters",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Article",
+   "link_to": "Article",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Video",
+   "link_to": "Video",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quiz",
+   "link_to": "Quiz",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Education Settings",
+   "link_to": "Education Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student Category",
+   "link_to": "Student Category",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student Batch Name",
+   "link_to": "Student Batch Name",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Grading Scale",
+   "link_to": "Grading Scale",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Academic Term",
+   "link_to": "Academic Term",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Academic Year",
+   "link_to": "Academic Year",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Admission",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student Applicant",
+   "link_to": "Student Applicant",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student Admission",
+   "link_to": "Student Admission",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Program Enrollment",
+   "link_to": "Program Enrollment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Course Enrollment",
+   "link_to": "Course Enrollment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Fees",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Fee Structure",
+   "link_to": "Fee Structure",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Fee Category",
+   "link_to": "Fee Category",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Fee Schedule",
+   "link_to": "Fee Schedule",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Fees",
+   "link_to": "Fees",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Fees",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Student Fee Collection Report",
+   "link_to": "Student Fee Collection",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Fees",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Program wise Fee Collection Report",
+   "link_to": "Program wise Fee Collection",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Schedule",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Course Schedule",
+   "link_to": "Course Schedule",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Course Scheduling Tool",
+   "link_to": "Course Scheduling Tool",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Attendance",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student Attendance",
+   "link_to": "Student Attendance",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student Leave Application",
+   "link_to": "Student Leave Application",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Student Attendance",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Student Monthly Attendance Sheet",
+   "link_to": "Student Monthly Attendance Sheet",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Student Attendance",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Absent Student Report",
+   "link_to": "Absent Student Report",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Student Attendance",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Student Batch-Wise Attendance",
+   "link_to": "Student Batch-Wise Attendance",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "LMS Activity",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Course Enrollment",
+   "link_to": "Course Enrollment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Course Activity",
+   "link_to": "Course Activity",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quiz Activity",
+   "link_to": "Quiz Activity",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Assessment",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Assessment Plan",
+   "link_to": "Assessment Plan",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Assessment Group",
+   "link_to": "Assessment Group",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Assessment Result",
+   "link_to": "Assessment Result",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Assessment Criteria",
+   "link_to": "Assessment Criteria",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Assessment Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Assessment Result",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Course wise Assessment Report",
+   "link_to": "Course wise Assessment Report",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Assessment Result",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Final Assessment Grades",
+   "link_to": "Final Assessment Grades",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Assessment Plan",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Assessment Plan Status",
+   "link_to": "Assessment Plan Status",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student Report Generation Tool",
+   "link_to": "Student Report Generation Tool",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Tools",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student Attendance Tool",
+   "link_to": "Student Attendance Tool",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Assessment Result Tool",
+   "link_to": "Assessment Result Tool",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student Group Creation Tool",
+   "link_to": "Student Group Creation Tool",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Program Enrollment Tool",
+   "link_to": "Program Enrollment Tool",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Course Scheduling Tool",
+   "link_to": "Course Scheduling Tool",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Other Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Program Enrollment",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Student and Guardian Contact Details",
+   "link_to": "Student and Guardian Contact Details",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:37.448989",
+ "modified_by": "Administrator",
+ "module": "Education",
+ "name": "Education",
+ "onboarding": "Education",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Education",
+ "shortcuts": [
+  {
+   "color": "Grey",
+   "format": "{} Active",
+   "label": "Student",
+   "link_to": "Student",
+   "stats_filter": "{\n    \"enabled\": 1\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Grey",
+   "format": "{} Active",
+   "label": "Instructor",
+   "link_to": "Instructor",
+   "stats_filter": "{\n    \"status\": \"Active\"\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "",
+   "format": "",
+   "label": "Program",
+   "link_to": "Program",
+   "stats_filter": "",
+   "type": "DocType"
+  },
+  {
+   "label": "Course",
+   "link_to": "Course",
+   "type": "DocType"
+  },
+  {
+   "color": "Grey",
+   "format": "{} Unpaid",
+   "label": "Fees",
+   "link_to": "Fees",
+   "stats_filter": "{\n    \"outstanding_amount\": [\"!=\", 0.0]\n}",
+   "type": "DocType"
+  },
+  {
+   "label": "Student Monthly Attendance Sheet",
+   "link_to": "Student Monthly Attendance Sheet",
+   "type": "Report"
+  },
+  {
+   "label": "Course Scheduling Tool",
+   "link_to": "Course Scheduling Tool",
+   "type": "DocType"
+  },
+  {
+   "label": "Student Attendance Tool",
+   "link_to": "Student Attendance Tool",
+   "type": "DocType"
+  },
+  {
+   "label": "Dashboard",
+   "link_to": "Education",
+   "type": "Dashboard"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/erpnext_integrations/desk_page/erpnext_integrations/erpnext_integrations.json b/erpnext/erpnext_integrations/desk_page/erpnext_integrations/erpnext_integrations.json
deleted file mode 100644
index ea3b129..0000000
--- a/erpnext/erpnext_integrations/desk_page/erpnext_integrations/erpnext_integrations.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Marketplace",
-   "links": "[\n    {\n        \"description\": \"Woocommerce marketplace settings\",\n        \"label\": \"Woocommerce Settings\",\n        \"name\": \"Woocommerce Settings\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Amazon MWS settings\",\n        \"label\": \"Amazon MWS Settings\",\n        \"name\": \"Amazon MWS Settings\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Shopify settings\",\n        \"label\": \"Shopify Settings\",\n        \"name\": \"Shopify Settings\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Payments",
-   "links": "[\n    {\n        \"description\": \"GoCardless payment gateway settings\",\n        \"label\": \"GoCardless Settings\",\n        \"name\": \"GoCardless Settings\",\n        \"type\": \"doctype\"\n    }, {\n        \"description\": \"M-Pesa payment gateway settings\",\n        \"label\": \"M-Pesa Settings\",\n        \"name\": \"Mpesa Settings\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Settings",
-   "links": "[\n    {\n        \"description\": \"Plaid settings\",\n        \"label\": \"Plaid Settings\",\n        \"name\": \"Plaid Settings\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Exotel settings\",\n        \"label\": \"Exotel Settings\",\n        \"name\": \"Exotel Settings\",\n        \"type\": \"doctype\"\n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [],
- "creation": "2020-08-20 19:30:48.138801",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends": "Integrations",
- "extends_another_page": 1,
- "hide_custom": 1,
- "idx": 0,
- "is_standard": 1,
- "label": "ERPNext Integrations",
- "modified": "2020-10-29 19:54:46.228222",
- "modified_by": "Administrator",
- "module": "ERPNext Integrations",
- "name": "ERPNext Integrations",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": []
-}
\ No newline at end of file
diff --git a/erpnext/erpnext_integrations/desk_page/erpnext_integrations_settings/erpnext_integrations_settings.json b/erpnext/erpnext_integrations/desk_page/erpnext_integrations_settings/erpnext_integrations_settings.json
deleted file mode 100644
index 3bbc36a..0000000
--- a/erpnext/erpnext_integrations/desk_page/erpnext_integrations_settings/erpnext_integrations_settings.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Integrations Settings",
-   "links": "[\n\t{\n\t    \"type\": \"doctype\",\n\t\t\"name\": \"Woocommerce Settings\"\n\t},\n\t{\n\t    \"type\": \"doctype\",\n\t\t\"name\": \"Shopify Settings\",\n\t\t\"description\": \"Connect Shopify with ERPNext\"\n\t},\n\t{\n\t    \"type\": \"doctype\",\n\t\t\"name\": \"Amazon MWS Settings\",\n\t\t\"description\": \"Connect Amazon with ERPNext\"\n\t},\n\t{\n\t\t\"type\": \"doctype\",\n\t\t\"name\": \"Plaid Settings\",\n\t\t\"description\": \"Connect your bank accounts to ERPNext\"\n\t},\n    {\n\t\t\"type\": \"doctype\",\n\t\t\"name\": \"Exotel Settings\",\n\t\t\"description\": \"Connect your Exotel Account to ERPNext and track call logs\"\n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [],
- "creation": "2020-07-31 10:38:54.021237",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends": "Settings",
- "extends_another_page": 1,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "ERPNext Integrations Settings",
- "modified": "2020-07-31 10:44:39.374297",
- "modified_by": "Administrator",
- "module": "ERPNext Integrations",
- "name": "ERPNext Integrations Settings",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": []
-}
\ No newline at end of file
diff --git a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.js b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.js
index fd16d1e..5482b9c 100644
--- a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.js
+++ b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.js
@@ -23,10 +23,10 @@
 						frappe.msgprint({
 							message: __("An error has occurred during {0}. Check {1} for more details",
 								[
-									repl("<a href='#Form/Tally Migration/%(tally_document)s' class='variant-click'>%(tally_document)s</a>", {
+									repl("<a href='/app/tally-migration/%(tally_document)s' class='variant-click'>%(tally_document)s</a>", {
 										tally_document: frm.docname
 									}),
-									"<a href='#List/Error Log' class='variant-click'>Error Log</a>"
+									"<a href='/app/error-log' class='variant-click'>Error Log</a>"
 								]
 							),
 							title: __("Tally Migration Error"),
diff --git a/erpnext/erpnext_integrations/workspace/erpnext_integrations/erpnext_integrations.json b/erpnext/erpnext_integrations/workspace/erpnext_integrations/erpnext_integrations.json
new file mode 100644
index 0000000..4a5e54e
--- /dev/null
+++ b/erpnext/erpnext_integrations/workspace/erpnext_integrations/erpnext_integrations.json
@@ -0,0 +1,116 @@
+{
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-08-20 19:30:48.138801",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends": "Integrations",
+ "extends_another_page": 1,
+ "hide_custom": 1,
+ "idx": 0,
+ "is_standard": 1,
+ "label": "ERPNext Integrations",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Marketplace",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Woocommerce Settings",
+   "link_to": "Woocommerce Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Amazon MWS Settings",
+   "link_to": "Amazon MWS Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Shopify Settings",
+   "link_to": "Shopify Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payments",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "GoCardless Settings",
+   "link_to": "GoCardless Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "M-Pesa Settings",
+   "link_to": "Mpesa Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Plaid Settings",
+   "link_to": "Plaid Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Exotel Settings",
+   "link_to": "Exotel Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:35.846528",
+ "modified_by": "Administrator",
+ "module": "ERPNext Integrations",
+ "name": "ERPNext Integrations",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": []
+}
\ No newline at end of file
diff --git a/erpnext/erpnext_integrations/workspace/erpnext_integrations_settings/erpnext_integrations_settings.json b/erpnext/erpnext_integrations/workspace/erpnext_integrations_settings/erpnext_integrations_settings.json
new file mode 100644
index 0000000..d258d57
--- /dev/null
+++ b/erpnext/erpnext_integrations/workspace/erpnext_integrations_settings/erpnext_integrations_settings.json
@@ -0,0 +1,82 @@
+{
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-07-31 10:38:54.021237",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends": "Settings",
+ "extends_another_page": 1,
+ "hide_custom": 0,
+ "idx": 0,
+ "is_standard": 1,
+ "label": "ERPNext Integrations Settings",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Integrations Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Woocommerce Settings",
+   "link_to": "Woocommerce Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Shopify Settings",
+   "link_to": "Shopify Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Amazon MWS Settings",
+   "link_to": "Amazon MWS Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Plaid Settings",
+   "link_to": "Plaid Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Exotel Settings",
+   "link_to": "Exotel Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:34.732552",
+ "modified_by": "Administrator",
+ "module": "ERPNext Integrations",
+ "name": "ERPNext Integrations Settings",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": []
+}
\ No newline at end of file
diff --git a/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js b/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js
index 1d4411d..ff51646 100644
--- a/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js
+++ b/erpnext/healthcare/doctype/clinical_procedure/clinical_procedure.js
@@ -85,7 +85,7 @@
 								callback: function(r) {
 									if (r.message) {
 										frappe.show_alert({
-											message: __('Stock Entry {0} created', ['<a class="bold" href="#Form/Stock Entry/'+ r.message + '">' + r.message + '</a>']),
+											message: __('Stock Entry {0} created', ['<a class="bold" href="/app/stock-entry/'+ r.message + '">' + r.message + '</a>']),
 											indicator: 'green'
 										});
 									}
diff --git a/erpnext/healthcare/doctype/exercise_type/exercise_type.js b/erpnext/healthcare/doctype/exercise_type/exercise_type.js
index 68db047..b49b00e 100644
--- a/erpnext/healthcare/doctype/exercise_type/exercise_type.js
+++ b/erpnext/healthcare/doctype/exercise_type/exercise_type.js
@@ -71,7 +71,7 @@
 
 		$('.btn-del').on('click', function() {
 			let id = $(this).attr('data-id');
-			$('#card-'+id).addClass("zoomOutDelete");
+			$('#card-'+id).addClass("zoom-out");
 
 			setTimeout(() => {
 				// not using grid_rows[id].remove because
diff --git a/erpnext/healthcare/doctype/healthcare_service_unit/healthcare_service_unit_tree.js b/erpnext/healthcare/doctype/healthcare_service_unit/healthcare_service_unit_tree.js
index a03b579..bfb0ba1 100644
--- a/erpnext/healthcare/doctype/healthcare_service_unit/healthcare_service_unit_tree.js
+++ b/erpnext/healthcare/doctype/healthcare_service_unit/healthcare_service_unit_tree.js
@@ -13,19 +13,19 @@
 	ignore_fields:["parent_healthcare_service_unit"],
 	onrender: function(node) {
 		if (node.data.occupied_out_of_vacant!==undefined){
-			$('<span class="balance-area pull-right text-muted small">'
+			$('<span class="balance-area pull-right">'
 				+ " " + node.data.occupied_out_of_vacant
 				+ '</span>').insertBefore(node.$ul);
 		}
 		if (node.data && node.data.inpatient_occupancy!==undefined) {
 			if (node.data.inpatient_occupancy == 1){
 				if (node.data.occupancy_status == "Occupied"){
-					$('<span class="balance-area pull-right small">'
+					$('<span class="balance-area pull-right">'
 						+ " " + node.data.occupancy_status
 						+ '</span>').insertBefore(node.$ul);
 				}
 				if (node.data.occupancy_status == "Vacant"){
-					$('<span class="balance-area pull-right text-muted small">'
+					$('<span class="balance-area pull-right">'
 						+ " " + node.data.occupancy_status
 						+ '</span>').insertBefore(node.$ul);
 				}
diff --git a/erpnext/healthcare/doctype/inpatient_record/inpatient_record.py b/erpnext/healthcare/doctype/inpatient_record/inpatient_record.py
index dc549a6..88d7f0b 100644
--- a/erpnext/healthcare/doctype/inpatient_record/inpatient_record.py
+++ b/erpnext/healthcare/doctype/inpatient_record/inpatient_record.py
@@ -50,7 +50,7 @@
 
 		if ip_record:
 			msg = _(("Already {0} Patient {1} with Inpatient Record ").format(ip_record[0].status, self.patient) \
-				+ """ <b><a href="#Form/Inpatient Record/{0}">{0}</a></b>""".format(ip_record[0].name))
+				+ """ <b><a href="/app/Form/Inpatient Record/{0}">{0}</a></b>""".format(ip_record[0].name))
 			frappe.throw(msg)
 
 	def admit(self, service_unit, check_in, expected_discharge=None):
diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py
index dc820cb..13b019b 100755
--- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py
+++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.py
@@ -63,7 +63,7 @@
 
 		if overlaps:
 			overlapping_details = _('Appointment overlaps with ')
-			overlapping_details += "<b><a href='#Form/Patient Appointment/{0}'>{0}</a></b><br>".format(overlaps[0][0])
+			overlapping_details += "<b><a href='/app/Form/Patient Appointment/{0}'>{0}</a></b><br>".format(overlaps[0][0])
 			overlapping_details += _('{0} has appointment scheduled with {1} at {2} having {3} minute(s) duration.').format(
 				overlaps[0][1], overlaps[0][2], overlaps[0][3], overlaps[0][4])
 			frappe.throw(overlapping_details, title=_('Appointments Overlapping'))
@@ -75,7 +75,7 @@
 		if frappe.db.get_single_value('Healthcare Settings', 'automate_appointment_invoicing'):
 			if not frappe.db.get_value('Patient', self.patient, 'customer'):
 				msg = _("Please set a Customer linked to the Patient")
-				msg +=  " <b><a href='#Form/Patient/{0}'>{0}</a></b>".format(self.patient)
+				msg +=  " <b><a href='/app/Form/Patient/{0}'>{0}</a></b>".format(self.patient)
 				frappe.throw(msg, title=_('Customer Not Found'))
 
 	def update_prescription_details(self):
diff --git a/erpnext/healthcare/utils.py b/erpnext/healthcare/utils.py
index 6a499aa..a3e7070 100644
--- a/erpnext/healthcare/utils.py
+++ b/erpnext/healthcare/utils.py
@@ -32,7 +32,7 @@
 def validate_customer_created(patient):
 	if not frappe.db.get_value('Patient', patient.name, 'customer'):
 		msg = _("Please set a Customer linked to the Patient")
-		msg +=  " <b><a href='#Form/Patient/{0}'>{0}</a></b>".format(patient.name)
+		msg +=  " <b><a href='/app/Form/Patient/{0}'>{0}</a></b>".format(patient.name)
 		frappe.throw(msg, title=_('Customer Not Found'))
 
 
@@ -175,7 +175,7 @@
 			service_item = get_healthcare_service_item('clinical_procedure_consumable_item')
 			if not service_item:
 				msg = _('Please Configure Clinical Procedure Consumable Item in ')
-				msg += '''<b><a href='#Form/Healthcare Settings'>Healthcare Settings</a></b>'''
+				msg += '''<b><a href='/app/Form/Healthcare Settings'>Healthcare Settings</a></b>'''
 				frappe.throw(msg, title=_('Missing Configuration'))
 
 			clinical_procedures_to_invoice.append({
@@ -330,7 +330,7 @@
 		service_item_label = _('Inpatient Visit Charge Item')
 
 	msg = _(('Please Configure {0} in ').format(service_item_label) \
-		+ '''<b><a href='#Form/Healthcare Settings'>Healthcare Settings</a></b>''')
+		+ '''<b><a href='/app/Form/Healthcare Settings'>Healthcare Settings</a></b>''')
 	frappe.throw(msg, title=_('Missing Configuration'))
 
 
@@ -340,7 +340,7 @@
 		charge_name = _('Inpatient Visit Charge')
 
 	msg = _(('Please Configure {0} for Healthcare Practitioner').format(charge_name) \
-		+ ''' <b><a href='#Form/Healthcare Practitioner/{0}'>{0}</a></b>'''.format(practitioner))
+		+ ''' <b><a href='/app/Form/Healthcare Practitioner/{0}'>{0}</a></b>'''.format(practitioner))
 	frappe.throw(msg, title=_('Missing Configuration'))
 
 
@@ -660,6 +660,6 @@
 		><div class='col-md-12 col-sm-12'>" \
 		+ section_html + html +'</div></div>'
 	if doc_html:
-		doc_html = "<div class='small'><div class='col-md-12 text-right'><a class='btn btn-default btn-xs' href='#Form/%s/%s'></a></div>" %(doctype, docname) + doc_html + '</div>'
+		doc_html = "<div class='small'><div class='col-md-12 text-right'><a class='btn btn-default btn-xs' href='/app/Form/%s/%s'></a></div>" %(doctype, docname) + doc_html + '</div>'
 
 	return {'html': doc_html}
diff --git a/erpnext/healthcare/workspace/healthcare/healthcare.json b/erpnext/healthcare/workspace/healthcare/healthcare.json
new file mode 100644
index 0000000..b93dda2
--- /dev/null
+++ b/erpnext/healthcare/workspace/healthcare/healthcare.json
@@ -0,0 +1,536 @@
+{
+ "category": "Domains",
+ "charts": [
+  {
+   "chart_name": "Patient Appointments",
+   "label": "Patient Appointments"
+  }
+ ],
+ "charts_label": "",
+ "creation": "2020-03-02 17:23:17.919682",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "healthcare",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Healthcare",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Masters",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Patient",
+   "link_to": "Patient",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Healthcare Practitioner",
+   "link_to": "Healthcare Practitioner",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Practitioner Schedule",
+   "link_to": "Practitioner Schedule",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Medical Department",
+   "link_to": "Medical Department",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Healthcare Service Unit Type",
+   "link_to": "Healthcare Service Unit Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Healthcare Service Unit",
+   "link_to": "Healthcare Service Unit",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Medical Code Standard",
+   "link_to": "Medical Code Standard",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Medical Code",
+   "link_to": "Medical Code",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Consultation Setup",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Appointment Type",
+   "link_to": "Appointment Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Clinical Procedure Template",
+   "link_to": "Clinical Procedure Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Prescription Dosage",
+   "link_to": "Prescription Dosage",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Prescription Duration",
+   "link_to": "Prescription Duration",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Antibiotic",
+   "link_to": "Antibiotic",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Consultation",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Patient Appointment",
+   "link_to": "Patient Appointment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Clinical Procedure",
+   "link_to": "Clinical Procedure",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Patient Encounter",
+   "link_to": "Patient Encounter",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Vital Signs",
+   "link_to": "Vital Signs",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Complaint",
+   "link_to": "Complaint",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Diagnosis",
+   "link_to": "Diagnosis",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Fee Validity",
+   "link_to": "Fee Validity",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Healthcare Settings",
+   "link_to": "Healthcare Settings",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Laboratory Setup",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Lab Test Template",
+   "link_to": "Lab Test Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Lab Test Sample",
+   "link_to": "Lab Test Sample",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Lab Test UOM",
+   "link_to": "Lab Test UOM",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sensitivity",
+   "link_to": "Sensitivity",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Laboratory",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Lab Test",
+   "link_to": "Lab Test",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sample Collection",
+   "link_to": "Sample Collection",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Dosage Form",
+   "link_to": "Dosage Form",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Rehabilitation and Physiotherapy",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Exercise Type",
+   "link_to": "Exercise Type",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Therapy Type",
+   "link_to": "Therapy Type",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Therapy Plan",
+   "link_to": "Therapy Plan",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Therapy Session",
+   "link_to": "Therapy Session",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Patient Assessment Template",
+   "link_to": "Patient Assessment Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Patient Assessment",
+   "link_to": "Patient Assessment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Records and History",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Patient History",
+   "link_to": "patient_history",
+   "link_type": "Page",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Patient Progress",
+   "link_to": "patient-progress",
+   "link_type": "Page",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Patient Medical Record",
+   "link_to": "Patient Medical Record",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Inpatient Record",
+   "link_to": "Inpatient Record",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Patient Appointment Analytics",
+   "link_to": "Patient Appointment Analytics",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Lab Test Report",
+   "link_to": "Lab Test Report",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:34.841396",
+ "modified_by": "Administrator",
+ "module": "Healthcare",
+ "name": "Healthcare",
+ "onboarding": "Healthcare",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Healthcare",
+ "shortcuts": [
+  {
+   "color": "Orange",
+   "format": "{} Open",
+   "label": "Patient Appointment",
+   "link_to": "Patient Appointment",
+   "stats_filter": "{\n    \"status\": \"Open\",\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%']\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Orange",
+   "format": "{} Active",
+   "label": "Patient",
+   "link_to": "Patient",
+   "stats_filter": "{\n    \"status\": \"Active\"\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Green",
+   "format": "{} Vacant",
+   "label": "Healthcare Service Unit",
+   "link_to": "Healthcare Service Unit",
+   "stats_filter": "{\n    \"occupancy_status\": \"Vacant\",\n    \"is_group\": 0,\n    \"company\": [\"like\", \"%\" + frappe.defaults.get_global_default(\"company\") + \"%\"]\n}",
+   "type": "DocType"
+  },
+  {
+   "label": "Healthcare Practitioner",
+   "link_to": "Healthcare Practitioner",
+   "type": "DocType"
+  },
+  {
+   "label": "Patient History",
+   "link_to": "patient_history",
+   "type": "Page"
+  },
+  {
+   "label": "Dashboard",
+   "link_to": "Healthcare",
+   "type": "Dashboard"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index a2d9d86..5430221 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -10,7 +10,7 @@
 app_email = "info@erpnext.com"
 app_license = "GNU General Public License (v3)"
 source_link = "https://github.com/frappe/erpnext"
-app_logo_url = '/assets/erpnext/images/erp-icon.svg'
+app_logo_url = "/assets/erpnext/images/erpnext-logo.svg"
 
 
 develop_version = '13.x.x-develop'
@@ -46,6 +46,7 @@
 get_help_messages = "erpnext.utilities.activation.get_help_messages"
 leaderboards = "erpnext.startup.leaderboard.get_leaderboards"
 filters_config = "erpnext.startup.filters.get_filters_config"
+additional_print_settings = "erpnext.controllers.print_settings.get_print_settings"
 
 on_session_creation = [
 	"erpnext.portal.utils.create_customer_or_supplier",
@@ -78,7 +79,7 @@
 
 website_context = {
 	"favicon": 	"/assets/erpnext/images/favicon.png",
-	"splash_image": "/assets/erpnext/images/erp-icon.svg"
+	"splash_image": "/assets/erpnext/images/erpnext-logo.svg"
 }
 
 website_route_rules = [
diff --git a/erpnext/hr/desk_page/hr/hr.json b/erpnext/hr/desk_page/hr/hr.json
deleted file mode 100644
index 895cf72..0000000
--- a/erpnext/hr/desk_page/hr/hr.json
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Employee",
-   "links": "[\n    {\n        \"label\": \"Employee\",\n        \"name\": \"Employee\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Employment Type\",\n        \"name\": \"Employment Type\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Branch\",\n        \"name\": \"Branch\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Department\",\n        \"name\": \"Department\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Designation\",\n        \"name\": \"Designation\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Employee Grade\",\n        \"name\": \"Employee Grade\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Employee Group\",\n        \"name\": \"Employee Group\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Employee Health Insurance\",\n        \"name\": \"Employee Health Insurance\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Employee Lifecycle",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Job Applicant\"\n        ],\n        \"label\": \"Employee Onboarding\",\n        \"name\": \"Employee Onboarding\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Employee Skill Map\",\n        \"name\": \"Employee Skill Map\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Employee Promotion\",\n        \"name\": \"Employee Promotion\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Employee Transfer\",\n        \"name\": \"Employee Transfer\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Employee Separation\",\n        \"name\": \"Employee Separation\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Employee Onboarding Template\",\n        \"name\": \"Employee Onboarding Template\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Employee Separation Template\",\n        \"name\": \"Employee Separation Template\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Shift Management",
-   "links": "[\n    {\n        \"label\": \"Shift Type\",\n        \"name\": \"Shift Type\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Shift Request\",\n        \"name\": \"Shift Request\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Shift Assignment\",\n        \"name\": \"Shift Assignment\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Leaves",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Leave Application\",\n        \"name\": \"Leave Application\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Leave Allocation\",\n        \"name\": \"Leave Allocation\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Leave Type\"\n        ],\n        \"label\": \"Leave Policy\",\n        \"name\": \"Leave Policy\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Leave Period\",\n        \"name\": \"Leave Period\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Leave Type\",\n        \"name\": \"Leave Type\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Holiday List\",\n        \"name\": \"Holiday List\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Compensatory Leave Request\",\n        \"name\": \"Compensatory Leave Request\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Leave Encashment\",\n        \"name\": \"Leave Encashment\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Leave Block List\",\n        \"name\": \"Leave Block List\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Leave Application\"\n        ],\n        \"doctype\": \"Leave Application\",\n        \"is_query_report\": true,\n        \"label\": \"Employee Leave Balance\",\n        \"name\": \"Employee Leave Balance\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Attendance",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"hide_count\": true,\n        \"label\": \"Employee Attendance Tool\",\n        \"name\": \"Employee Attendance Tool\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Attendance\",\n        \"name\": \"Attendance\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Attendance Request\",\n        \"name\": \"Attendance Request\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"hide_count\": true,\n        \"label\": \"Upload Attendance\",\n        \"name\": \"Upload Attendance\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"hide_count\": true,\n        \"label\": \"Employee Checkin\",\n        \"name\": \"Employee Checkin\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Attendance\"\n        ],\n        \"doctype\": \"Attendance\",\n        \"is_query_report\": true,\n        \"label\": \"Monthly Attendance Sheet\",\n        \"name\": \"Monthly Attendance Sheet\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Expense Claims",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Expense Claim\",\n        \"name\": \"Expense Claim\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"label\": \"Employee Advance\",\n        \"name\": \"Employee Advance\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Settings",
-   "links": "[\n    {\n        \"label\": \"HR Settings\",\n        \"name\": \"HR Settings\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Daily Work Summary Group\",\n        \"name\": \"Daily Work Summary Group\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Team Updates\",\n        \"name\": \"team-updates\",\n        \"type\": \"page\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Fleet Management",
-   "links": "[\n    {\n        \"label\": \"Vehicle\",\n        \"name\": \"Vehicle\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Vehicle Log\",\n        \"name\": \"Vehicle Log\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Vehicle\"\n        ],\n        \"doctype\": \"Vehicle\",\n        \"is_query_report\": true,\n        \"label\": \"Vehicle Expenses\",\n        \"name\": \"Vehicle Expenses\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Recruitment",
-   "links": "[\n    {\n        \"label\": \"Job Opening\",\n        \"name\": \"Job Opening\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Job Applicant\",\n        \"name\": \"Job Applicant\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Job Offer\",\n        \"name\": \"Job Offer\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Staffing Plan\",\n        \"name\": \"Staffing Plan\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Training",
-   "links": "[\n    {\n        \"label\": \"Training Program\",\n        \"name\": \"Training Program\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Training Event\",\n        \"name\": \"Training Event\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Training Result\",\n        \"name\": \"Training Result\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Training Feedback\",\n        \"name\": \"Training Feedback\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"doctype\": \"Employee\",\n        \"is_query_report\": true,\n        \"label\": \"Employee Birthday\",\n        \"name\": \"Employee Birthday\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"doctype\": \"Employee\",\n        \"is_query_report\": true,\n        \"label\": \"Employees working on a holiday\",\n        \"name\": \"Employees working on a holiday\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"doctype\": \"Employee\",\n        \"is_query_report\": true,\n        \"label\": \"Department Analytics\",\n        \"name\": \"Department Analytics\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Performance",
-   "links": "[\n    {\n        \"label\": \"Appraisal\",\n        \"name\": \"Appraisal\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Appraisal Template\",\n        \"name\": \"Appraisal Template\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Energy Point Rule\",\n        \"name\": \"Energy Point Rule\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Energy Point Log\",\n        \"name\": \"Energy Point Log\",\n        \"type\": \"doctype\"\n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [
-  {
-   "chart_name": "Attendance Count",
-   "label": "Attendance Count"
-  }
- ],
- "creation": "2020-03-02 15:48:58.322521",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "HR",
- "modified": "2020-08-11 17:04:38.655417",
- "modified_by": "Administrator",
- "module": "HR",
- "name": "HR",
- "onboarding": "Human Resource",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "color": "#cef6d1",
-   "format": "{} Active",
-   "label": "Employee",
-   "link_to": "Employee",
-   "stats_filter": "{\"status\":\"Active\"}",
-   "type": "DocType"
-  },
-  {
-   "color": "#ffe8cd",
-   "format": "{} Open",
-   "label": "Leave Application",
-   "link_to": "Leave Application",
-   "stats_filter": "{\"status\":\"Open\"}",
-   "type": "DocType"
-  },
-  {
-   "label": "Attendance",
-   "link_to": "Attendance",
-   "stats_filter": "",
-   "type": "DocType"
-  },
-  {
-   "label": "Job Applicant",
-   "link_to": "Job Applicant",
-   "type": "DocType"
-  },
-  {
-   "label": "Monthly Attendance Sheet",
-   "link_to": "Monthly Attendance Sheet",
-   "type": "Report"
-  },
-  {
-   "format": "{} Open",
-   "label": "Dashboard",
-   "link_to": "Human Resource",
-   "stats_filter": "{\n    \"status\": \"Open\"\n}",
-   "type": "Dashboard"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index 0fde3a1..c00de69 100755
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -278,63 +278,71 @@
 	if int(frappe.db.get_single_value("HR Settings", "stop_birthday_reminders") or 0):
 		return
 
-	birthdays = get_employees_who_are_born_today()
+	employees_born_today = get_employees_who_are_born_today()
 
-	if birthdays:
-		employee_list = frappe.get_all('Employee',
-			fields=['name','employee_name'],
-			filters={'status': 'Active',
-				'company': birthdays[0]['company']
-		 	}
-		)
-		employee_emails = get_employee_emails(employee_list)
-		birthday_names = [name["employee_name"] for name in birthdays]
-		birthday_emails = [email["user_id"] or email["personal_email"] or email["company_email"] for email in birthdays]
+	for company, birthday_persons in employees_born_today.items():
+		employee_emails = get_all_employee_emails(company)
+		birthday_person_emails = [get_employee_email(doc) for doc in birthday_persons]
+		recipients = list(set(employee_emails) - set(birthday_person_emails))
 
-		birthdays.append({'company_email': '','employee_name': '','personal_email': '','user_id': ''})
+		reminder_text, message = get_birthday_reminder_text_and_message(birthday_persons)
+		send_birthday_reminder(recipients, reminder_text, birthday_persons, message)
 
-		for e in birthdays:
-			if e['company_email'] or e['personal_email'] or e['user_id']:
-				if len(birthday_names) == 1:
-					continue
-				recipients = e['company_email'] or e['personal_email'] or e['user_id']
+		if len(birthday_persons) > 1:
+			# special email for people sharing birthdays
+			for person in birthday_persons:
+				person_email = person["user_id"] or person["personal_email"] or person["company_email"]
+				others = [d for d in birthday_persons if d != person]
+				reminder_text, message = get_birthday_reminder_text_and_message(others)
+				send_birthday_reminder(person_email, reminder_text, others, message)
 
+def get_employee_email(employee_doc):
+	return employee_doc["user_id"] or employee_doc["personal_email"] or employee_doc["company_email"]
 
-			else:
-				recipients = list(set(employee_emails) - set(birthday_emails))
-
-			frappe.sendmail(recipients=recipients,
-				subject=_("Birthday Reminder"),
-				message=get_birthday_reminder_message(e, birthday_names),
-				header=['Birthday Reminder', 'green'],
-			)
-
-def get_birthday_reminder_message(employee, employee_names):
-	"""Get employee birthday reminder message"""
-	pattern = "</Li><Br><Li>"
-	message = pattern.join(filter(lambda u: u not in (employee['employee_name']), employee_names))
-	message = message.title()
-
-	if pattern not in message:
-		message = "Today is {0}'s birthday \U0001F603".format(message)
-
+def get_birthday_reminder_text_and_message(birthday_persons):
+	if len(birthday_persons) == 1:
+		birthday_person_text = birthday_persons[0]['name']
 	else:
-		message = "Today your colleagues are celebrating their birthdays \U0001F382<br><ul><strong><li> " + message +"</li></strong></ul>"
+		# converts ["Jim", "Rim", "Dim"] to Jim, Rim & Dim
+		person_names = [d['name'] for d in birthday_persons]
+		last_person = person_names[-1]
+		birthday_person_text = ", ".join(person_names[:-1])
+		birthday_person_text += " & {}".format(last_person)
 
-	return message
+	reminder_text = "Today is {0}'s birthday 🎉".format(birthday_person_text)
+	message = "A friendly reminder of an important date for our team. Everyone, let’s congratulate {0} their birthday.".format(birthday_person_text)
 
+	return reminder_text, message
 
-def get_employees_who_are_born_today():
-	"""Get Employee properties whose birthday is today."""
-	return frappe.db.get_values("Employee",
-		fieldname=["name", "personal_email", "company", "company_email", "user_id", "employee_name"],
-		filters={
-			"date_of_birth": ("like", "%{}".format(format_datetime(getdate(), "-MM-dd"))),
-			"status": "Active",
-		},
-		as_dict=True
+def send_birthday_reminder(recipients, reminder_text, birthday_persons, message):
+	frappe.sendmail(
+		recipients=recipients,
+		subject=_("Birthday Reminder"),
+		template="birthday_reminder",
+		args=dict(
+			reminder_text=reminder_text,
+			birthday_persons=birthday_persons,
+			message=message,
+		),
+		header=_("Birthday Reminder 🎂")
 	)
 
+def get_employees_who_are_born_today():
+	"""Get all employee born today & group them based on their company"""
+	from collections import defaultdict
+	employees_born_today = frappe.db.get_all("Employee",
+		fields=["personal_email", "company", "company_email", "user_id", "employee_name as name", "image"],
+		filters={
+			"date_of_birth": ("like", "{}".format(format_datetime(getdate(), "-MM-dd"))),
+			"status": "Active",
+		})
+
+	grouped_employees = defaultdict(lambda: [])
+
+	for employee_doc in employees_born_today:
+		grouped_employees[employee_doc.get('company')].append(employee_doc)
+
+	return grouped_employees
 
 def get_holiday_list_for_employee(employee, raise_exception=True):
 	if employee:
@@ -404,14 +412,21 @@
 	user.insert()
 	return user.name
 
-def get_employee_emails(employee_list):
+def get_all_employee_emails(company):
 	'''Returns list of employee emails either based on user_id or company_email'''
+	employee_list = frappe.get_all('Employee',
+		fields=['name','employee_name'],
+		filters={
+			'status': 'Active',
+			'company': company
+		}
+	)
 	employee_emails = []
 	for employee in employee_list:
 		if not employee:
 			continue
-		user, company_email, personal_email = frappe.db.get_value('Employee', employee,
-											['user_id', 'company_email', 'personal_email'])
+		user, company_email, personal_email = frappe.db.get_value('Employee',
+			employee, ['user_id', 'company_email', 'personal_email'])
 		email = user or company_email or personal_email
 		if email:
 			employee_emails.append(email)
diff --git a/erpnext/hr/doctype/employee/employee_list.js b/erpnext/hr/doctype/employee/employee_list.js
index 7a66d12..4483703 100644
--- a/erpnext/hr/doctype/employee/employee_list.js
+++ b/erpnext/hr/doctype/employee/employee_list.js
@@ -3,7 +3,7 @@
 	filters: [["status","=", "Active"]],
 	get_indicator: function(doc) {
 		var indicator = [__(doc.status), frappe.utils.guess_colour(doc.status), "status,=," + doc.status];
-		indicator[1] = {"Active": "green", "Temporary Leave": "red", "Left": "darkgrey"}[doc.status];
+		indicator[1] = {"Active": "green", "Temporary Leave": "red", "Left": "gray"}[doc.status];
 		return indicator;
 	}
 };
diff --git a/erpnext/hr/doctype/employee_transfer/employee_transfer.py b/erpnext/hr/doctype/employee_transfer/employee_transfer.py
index c730e02..37d616f 100644
--- a/erpnext/hr/doctype/employee_transfer/employee_transfer.py
+++ b/erpnext/hr/doctype/employee_transfer/employee_transfer.py
@@ -50,7 +50,7 @@
 		employee = frappe.get_doc("Employee", self.employee)
 		if self.create_new_employee_id:
 			if self.new_employee_id:
-				frappe.throw(_("Please delete the Employee <a href='#Form/Employee/{0}'>{0}</a>\
+				frappe.throw(_("Please delete the Employee <a href='/app/Form/Employee/{0}'>{0}</a>\
 					to cancel this document").format(self.new_employee_id))
 			#mark the employee as active
 			employee.status = "Active"
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.py b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
index a09cd2e..5e3822e 100755
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation.py
+++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
@@ -92,7 +92,7 @@
 			frappe.msgprint(_("{0} already allocated for Employee {1} for period {2} to {3}")
 				.format(self.leave_type, self.employee, formatdate(self.from_date), formatdate(self.to_date)))
 
-			frappe.throw(_('Reference') + ': <a href="#Form/Leave Allocation/{0}">{0}</a>'
+			frappe.throw(_('Reference') + ': <a href="/app/Form/Leave Allocation/{0}">{0}</a>'
 				.format(leave_allocation[0][0]), OverlapError)
 
 	def validate_back_dated_allocation(self):
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation_list.js b/erpnext/hr/doctype/leave_allocation/leave_allocation_list.js
index 93f7b83..3ab176f 100644
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation_list.js
+++ b/erpnext/hr/doctype/leave_allocation/leave_allocation_list.js
@@ -5,7 +5,7 @@
 frappe.listview_settings['Leave Allocation'] = {
 	get_indicator: function(doc) {
 		if(doc.status==="Expired") {
-			return [__("Expired"), "darkgrey", "expired, =, 1"];
+			return [__("Expired"), "gray", "expired, =, 1"];
 		}
 	},
 };
diff --git a/erpnext/hr/doctype/leave_application/leave_application.js b/erpnext/hr/doctype/leave_application/leave_application.js
index d62e418..9ccb915 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.js
+++ b/erpnext/hr/doctype/leave_application/leave_application.js
@@ -75,7 +75,8 @@
 			frm.dashboard.add_section(
 				frappe.render_template('leave_application_dashboard', {
 					data: leave_details
-				})
+				}),
+				__("Allocated Leaves")
 			);
 			frm.dashboard.show();
 			let allowed_leave_types =  Object.keys(leave_details);
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index 4f3e462..132c3bd 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -245,7 +245,7 @@
 	def throw_overlap_error(self, d):
 		msg = _("Employee {0} has already applied for {1} between {2} and {3} : ").format(self.employee,
 			d['leave_type'], formatdate(d['from_date']), formatdate(d['to_date'])) \
-			+ """ <b><a href="#Form/Leave Application/{0}">{0}</a></b>""".format(d["name"])
+			+ """ <b><a href="/app/Form/Leave Application/{0}">{0}</a></b>""".format(d["name"])
 		frappe.throw(msg, OverlapError)
 
 	def get_total_leaves_on_half_day(self):
diff --git a/erpnext/hr/doctype/leave_application/leave_application_dashboard.html b/erpnext/hr/doctype/leave_application/leave_application_dashboard.html
index d30e3b9..6324b04 100644
--- a/erpnext/hr/doctype/leave_application/leave_application_dashboard.html
+++ b/erpnext/hr/doctype/leave_application/leave_application_dashboard.html
@@ -1,6 +1,5 @@
 
 {% if not jQuery.isEmptyObject(data) %}
-<h5 style="margin-top: 20px;"> {{ __("Allocated Leaves") }} </h5>
 <table class="table table-bordered small">
 	<thead>
 		<tr>
diff --git a/erpnext/hr/doctype/shift_request/shift_request.py b/erpnext/hr/doctype/shift_request/shift_request.py
index 1c2801b..473193d 100644
--- a/erpnext/hr/doctype/shift_request/shift_request.py
+++ b/erpnext/hr/doctype/shift_request/shift_request.py
@@ -87,5 +87,5 @@
 	def throw_overlap_error(self, d):
 		msg = _("Employee {0} has already applied for {1} between {2} and {3} : ").format(self.employee,
 			d['shift_type'], formatdate(d['from_date']), formatdate(d['to_date'])) \
-			+ """ <b><a href="#Form/Shift Request/{0}">{0}</a></b>""".format(d["name"])
+			+ """ <b><a href="/app/Form/Shift Request/{0}">{0}</a></b>""".format(d["name"])
 		frappe.throw(msg, OverlapError)
\ No newline at end of file
diff --git a/erpnext/hr/page/team_updates/team_updates.js b/erpnext/hr/page/team_updates/team_updates.js
index da1f531..29780b8 100644
--- a/erpnext/hr/page/team_updates/team_updates.js
+++ b/erpnext/hr/page/team_updates/team_updates.js
@@ -41,7 +41,7 @@
 						me.add_row(d);
 					});
 				} else {
-					frappe.show_alert({message:__('No more updates'), indicator:'darkgrey'});
+					frappe.show_alert({message:__('No more updates'), indicator:'gray'});
 					me.more.parent().addClass('hidden');
 				}
 			}
diff --git a/erpnext/hr/utils.py b/erpnext/hr/utils.py
index d700e7f..e2aa7a4 100644
--- a/erpnext/hr/utils.py
+++ b/erpnext/hr/utils.py
@@ -211,7 +211,7 @@
 def throw_overlap_error(doc, exists_for, overlap_doc, from_date, to_date):
 	msg = _("A {0} exists between {1} and {2} (").format(doc.doctype,
 		formatdate(from_date), formatdate(to_date)) \
-		+ """ <b><a href="#Form/{0}/{1}">{1}</a></b>""".format(doc.doctype, overlap_doc) \
+		+ """ <b><a href="/app/Form/{0}/{1}">{1}</a></b>""".format(doc.doctype, overlap_doc) \
 		+ _(") for {0}").format(exists_for)
 	frappe.throw(msg)
 
diff --git a/erpnext/hr/workspace/hr/hr.json b/erpnext/hr/workspace/hr/hr.json
new file mode 100644
index 0000000..7f1af84
--- /dev/null
+++ b/erpnext/hr/workspace/hr/hr.json
@@ -0,0 +1,946 @@
+{
+ "category": "Modules",
+ "charts": [
+  {
+   "chart_name": "Outgoing Salary",
+   "label": "Outgoing Salary"
+  }
+ ],
+ "creation": "2020-03-02 15:48:58.322521",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "hr",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "HR",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee",
+   "link_to": "Employee",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employment Type",
+   "link_to": "Employment Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Branch",
+   "link_to": "Branch",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Department",
+   "link_to": "Department",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Designation",
+   "link_to": "Designation",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Grade",
+   "link_to": "Employee Grade",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Group",
+   "link_to": "Employee Group",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Health Insurance",
+   "link_to": "Employee Health Insurance",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Lifecycle",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Job Applicant",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Onboarding",
+   "link_to": "Employee Onboarding",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Skill Map",
+   "link_to": "Employee Skill Map",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Promotion",
+   "link_to": "Employee Promotion",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Transfer",
+   "link_to": "Employee Transfer",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Separation",
+   "link_to": "Employee Separation",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Onboarding Template",
+   "link_to": "Employee Onboarding Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Separation Template",
+   "link_to": "Employee Separation Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Shift Management",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Shift Type",
+   "link_to": "Shift Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Shift Request",
+   "link_to": "Shift Request",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Shift Assignment",
+   "link_to": "Shift Assignment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Leaves",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Leave Application",
+   "link_to": "Leave Application",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Leave Allocation",
+   "link_to": "Leave Allocation",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Leave Type",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Leave Policy",
+   "link_to": "Leave Policy",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Leave Period",
+   "link_to": "Leave Period",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Leave Type",
+   "link_to": "Leave Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Holiday List",
+   "link_to": "Holiday List",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Compensatory Leave Request",
+   "link_to": "Compensatory Leave Request",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Leave Encashment",
+   "link_to": "Leave Encashment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Leave Block List",
+   "link_to": "Leave Block List",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Leave Application",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Employee Leave Balance",
+   "link_to": "Employee Leave Balance",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payroll",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Salary Structure",
+   "link_to": "Salary Structure",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Salary Structure, Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Salary Structure Assignment",
+   "link_to": "Salary Structure Assignment",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payroll Entry",
+   "link_to": "Payroll Entry",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Salary Slip",
+   "link_to": "Salary Slip",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payroll Period",
+   "link_to": "Payroll Period",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Income Tax Slab",
+   "link_to": "Income Tax Slab",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Salary Component",
+   "link_to": "Salary Component",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Additional Salary",
+   "link_to": "Additional Salary",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Retention Bonus",
+   "link_to": "Retention Bonus",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Incentive",
+   "link_to": "Employee Incentive",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Salary Slip",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Salary Register",
+   "link_to": "Salary Register",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Attendance",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Attendance Tool",
+   "link_to": "Employee Attendance Tool",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Attendance",
+   "link_to": "Attendance",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Attendance Request",
+   "link_to": "Attendance Request",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Upload Attendance",
+   "link_to": "Upload Attendance",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Checkin",
+   "link_to": "Employee Checkin",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Attendance",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Monthly Attendance Sheet",
+   "link_to": "Monthly Attendance Sheet",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Expense Claims",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Expense Claim",
+   "link_to": "Expense Claim",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Advance",
+   "link_to": "Employee Advance",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "HR Settings",
+   "link_to": "HR Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Daily Work Summary Group",
+   "link_to": "Daily Work Summary Group",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Team Updates",
+   "link_to": "team-updates",
+   "link_type": "Page",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Fleet Management",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Vehicle",
+   "link_to": "Vehicle",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Vehicle Log",
+   "link_to": "Vehicle Log",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Vehicle",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Vehicle Expenses",
+   "link_to": "Vehicle Expenses",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Recruitment",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Job Opening",
+   "link_to": "Job Opening",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Job Applicant",
+   "link_to": "Job Applicant",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Job Offer",
+   "link_to": "Job Offer",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Staffing Plan",
+   "link_to": "Staffing Plan",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loans",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Application",
+   "link_to": "Loan Application",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan",
+   "link_to": "Loan",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Type",
+   "link_to": "Loan Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Training",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Training Program",
+   "link_to": "Training Program",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Training Event",
+   "link_to": "Training Event",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Training Result",
+   "link_to": "Training Result",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Training Feedback",
+   "link_to": "Training Feedback",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Employee Birthday",
+   "link_to": "Employee Birthday",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Employees working on a holiday",
+   "link_to": "Employees working on a holiday",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Performance",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Appraisal",
+   "link_to": "Appraisal",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Appraisal Template",
+   "link_to": "Appraisal Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Energy Point Rule",
+   "link_to": "Energy Point Rule",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Energy Point Log",
+   "link_to": "Energy Point Log",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Tax and Benefits",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Tax Exemption Declaration",
+   "link_to": "Employee Tax Exemption Declaration",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Tax Exemption Proof Submission",
+   "link_to": "Employee Tax Exemption Proof Submission",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee, Payroll Period",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Other Income",
+   "link_to": "Employee Other Income",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Benefit Application",
+   "link_to": "Employee Benefit Application",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Benefit Claim",
+   "link_to": "Employee Benefit Claim",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Tax Exemption Category",
+   "link_to": "Employee Tax Exemption Category",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Tax Exemption Sub Category",
+   "link_to": "Employee Tax Exemption Sub Category",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:38.941001",
+ "modified_by": "Administrator",
+ "module": "HR",
+ "name": "HR",
+ "onboarding": "Human Resource",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "color": "Green",
+   "format": "{} Active",
+   "label": "Employee",
+   "link_to": "Employee",
+   "stats_filter": "{\"status\":\"Active\"}",
+   "type": "DocType"
+  },
+  {
+   "color": "Yellow",
+   "format": "{} Open",
+   "label": "Leave Application",
+   "link_to": "Leave Application",
+   "stats_filter": "{\"status\":\"Open\"}",
+   "type": "DocType"
+  },
+  {
+   "label": "Attendance",
+   "link_to": "Attendance",
+   "stats_filter": "",
+   "type": "DocType"
+  },
+  {
+   "label": "Job Applicant",
+   "link_to": "Job Applicant",
+   "type": "DocType"
+  },
+  {
+   "label": "Monthly Attendance Sheet",
+   "link_to": "Monthly Attendance Sheet",
+   "type": "Report"
+  },
+  {
+   "format": "{} Open",
+   "label": "Dashboard",
+   "link_to": "Human Resource",
+   "stats_filter": "{\n    \"status\": \"Open\"\n}",
+   "type": "Dashboard"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/loan_management/desk_page/loan/loan.json b/erpnext/loan_management/desk_page/loan/loan.json
deleted file mode 100644
index 75036bd..0000000
--- a/erpnext/loan_management/desk_page/loan/loan.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Loan",
-   "links": "[\n    {\n        \"description\": \"Loan Type for interest and penalty rates\",\n        \"label\": \"Loan Type\",\n        \"name\": \"Loan Type\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Loan Applications from customers and employees.\",\n        \"label\": \"Loan Application\",\n        \"name\": \"Loan Application\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Loans provided to customers and employees.\",\n        \"label\": \"Loan\",\n        \"name\": \"Loan\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Loan Processes",
-   "links": "[\n    {\n        \"label\": \"Process Loan Security Shortfall\",\n        \"name\": \"Process Loan Security Shortfall\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Process Loan Interest Accrual\",\n        \"name\": \"Process Loan Interest Accrual\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Disbursement and Repayment",
-   "links": "[\n    {\n        \"label\": \"Loan Disbursement\",\n        \"name\": \"Loan Disbursement\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Loan Repayment\",\n        \"name\": \"Loan Repayment\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Loan Write Off\",\n        \"name\": \"Loan Write Off\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Loan Interest Accrual\",\n        \"name\": \"Loan Interest Accrual\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Loan Security",
-   "links": "[\n    {\n        \"label\": \"Loan Security Type\",\n        \"name\": \"Loan Security Type\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Loan Security Price\",\n        \"name\": \"Loan Security Price\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Loan Security\",\n        \"name\": \"Loan Security\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Loan Security Pledge\",\n        \"name\": \"Loan Security Pledge\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Loan Security Unpledge\",\n        \"name\": \"Loan Security Unpledge\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Loan Security Shortfall\",\n        \"name\": \"Loan Security Shortfall\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Reports",
-   "links": "[\n    {\n        \"doctype\": \"Loan Repayment\",\n        \"is_query_report\": true,\n        \"label\": \"Loan Repayment and Closure\",\n        \"name\": \"Loan Repayment and Closure\",\n        \"route\": \"#query-report/Loan Repayment and Closure\",\n        \"type\": \"report\"\n    },\n    {\n        \"doctype\": \"Loan Security Pledge\",\n        \"is_query_report\": true,\n        \"label\": \"Loan Security Status\",\n        \"name\": \"Loan Security Status\",\n        \"route\": \"#query-report/Loan Security Status\",\n        \"type\": \"report\"\n    },\n    {\n        \"doctype\": \"Loan Interest Accrual\",\n        \"is_query_report\": true,\n        \"label\": \"Loan Interest Report\",\n        \"name\": \"Loan Interest Report\",\n        \"route\": \"#query-report/Loan Interest Report\",\n        \"type\": \"report\"\n    },\n    {\n        \"doctype\": \"Loan Security\",\n        \"is_query_report\": true,\n        \"label\": \"Loan Security Exposure\",\n        \"name\": \"Loan Security Exposure\",\n        \"route\": \"#query-report/Loan Security Exposure\",\n        \"type\": \"report\"\n    },\n    {\n        \"doctype\": \"Loan Security\",\n        \"is_query_report\": true,\n        \"label\": \"Applicant-Wise Loan Security Exposure\",\n        \"name\": \"Applicant-Wise Loan Security Exposure\",\n        \"route\": \"#query-report/Applicant-Wise Loan Security Exposure\",\n        \"type\": \"report\"\n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [],
- "creation": "2020-03-12 16:35:55.299820",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Loan",
- "modified": "2021-01-17 07:21:22.092184",
- "modified_by": "Administrator",
- "module": "Loan Management",
- "name": "Loan",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "color": "#ffe8cd",
-   "format": "{} Open",
-   "label": "Loan Application",
-   "link_to": "Loan Application",
-   "stats_filter": "{ \"status\": \"Open\" }",
-   "type": "DocType"
-  },
-  {
-   "label": "Loan",
-   "link_to": "Loan",
-   "type": "DocType"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/loan_management/workspace/loan_management/loan_management.json b/erpnext/loan_management/workspace/loan_management/loan_management.json
new file mode 100644
index 0000000..2e8b5bf
--- /dev/null
+++ b/erpnext/loan_management/workspace/loan_management/loan_management.json
@@ -0,0 +1,244 @@
+{
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-03-12 16:35:55.299820",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "loan",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Loan Management",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Type",
+   "link_to": "Loan Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Application",
+   "link_to": "Loan Application",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan",
+   "link_to": "Loan",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Processes",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Process Loan Security Shortfall",
+   "link_to": "Process Loan Security Shortfall",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Process Loan Interest Accrual",
+   "link_to": "Process Loan Interest Accrual",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Disbursement and Repayment",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Disbursement",
+   "link_to": "Loan Disbursement",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Repayment",
+   "link_to": "Loan Repayment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Write Off",
+   "link_to": "Loan Write Off",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Interest Accrual",
+   "link_to": "Loan Interest Accrual",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Security",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Security Type",
+   "link_to": "Loan Security Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Security Price",
+   "link_to": "Loan Security Price",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Security",
+   "link_to": "Loan Security",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Security Pledge",
+   "link_to": "Loan Security Pledge",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Security Unpledge",
+   "link_to": "Loan Security Unpledge",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Security Shortfall",
+   "link_to": "Loan Security Shortfall",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Loan Repayment and Closure",
+   "link_to": "Loan Repayment and Closure",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Loan Security Status",
+   "link_to": "Loan Security Status",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2021-01-12 11:27:56.079724",
+ "modified_by": "Administrator",
+ "module": "Loan Management",
+ "name": "Loan Management",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "color": "Green",
+   "format": "{} Open",
+   "label": "Loan Application",
+   "link_to": "Loan Application",
+   "stats_filter": "{ \"status\": \"Open\" }",
+   "type": "DocType"
+  },
+  {
+   "label": "Loan",
+   "link_to": "Loan",
+   "type": "DocType"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/manufacturing/desk_page/manufacturing/manufacturing.json b/erpnext/manufacturing/desk_page/manufacturing/manufacturing.json
deleted file mode 100644
index 8d11294..0000000
--- a/erpnext/manufacturing/desk_page/manufacturing/manufacturing.json
+++ /dev/null
@@ -1,124 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Production",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"BOM\"\n        ],\n        \"description\": \"Orders released for production.\",\n        \"label\": \"Work Order\",\n        \"name\": \"Work Order\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"BOM\"\n        ],\n        \"description\": \"Generate Material Requests (MRP) and Work Orders.\",\n        \"label\": \"Production Plan\",\n        \"name\": \"Production Plan\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"label\": \"Stock Entry\",\n        \"name\": \"Stock Entry\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Job Card\",\n        \"name\": \"Job Card\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Downtime Entry\",\n        \"name\": \"Downtime Entry\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Bill of Materials",
-   "links": "[\n    {\n        \"description\": \"All Products or Services.\",\n        \"label\": \"Item\",\n        \"name\": \"Item\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"description\": \"Bill of Materials (BOM)\",\n        \"label\": \"Bill of Materials\",\n        \"name\": \"BOM\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Where manufacturing operations are carried.\",\n        \"label\": \"Workstation\",\n        \"name\": \"Workstation\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Details of the operations carried out.\",\n        \"label\": \"Operation\",\n        \"name\": \"Operation\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Routing\",\n        \"name\": \"Routing\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Reports",
-   "links": "[{\n\t\"dependencies\": [\"Work Order\"],\n\t\"name\": \"Production Planning Report\",\n\t\"is_query_report\": true,\n\t\"type\": \"report\",\n\t\"doctype\": \"Work Order\",\n\t\"label\": \"Production Planning Report\"\n}, {\n\t\"dependencies\": [\"Work Order\"],\n\t\"name\": \"Work Order Summary\",\n\t\"is_query_report\": true,\n\t\"type\": \"report\",\n\t\"doctype\": \"Work Order\",\n\t\"label\": \"Work Order Summary\"\n}, {\n\t\"dependencies\": [\"Quality Inspection\"],\n\t\"name\": \"Quality Inspection Summary\",\n\t\"is_query_report\": true,\n\t\"type\": \"report\",\n\t\"doctype\": \"Quality Inspection\",\n\t\"label\": \"Quality Inspection Summary\"\n}, {\n\t\"dependencies\": [\"Downtime Entry\"],\n\t\"name\": \"Downtime Analysis\",\n\t\"is_query_report\": true,\n\t\"type\": \"report\",\n\t\"doctype\": \"Downtime Entry\",\n\t\"label\": \"Downtime Analysis\"\n}, {\n\t\"dependencies\": [\"Job Card\"],\n\t\"name\": \"Job Card Summary\",\n\t\"is_query_report\": true,\n\t\"type\": \"report\",\n\t\"doctype\": \"Job Card\",\n\t\"label\": \"Job Card Summary\"\n}, {\n\t\"dependencies\": [\"BOM\"],\n\t\"name\": \"BOM Search\",\n\t\"is_query_report\": true,\n\t\"type\": \"report\",\n\t\"doctype\": \"BOM\",\n\t\"label\": \"BOM Search\"\n}, {\n\t\"dependencies\": [\"BOM\"],\n\t\"name\": \"BOM Stock Report\",\n\t\"is_query_report\": true,\n\t\"type\": \"report\",\n\t\"doctype\": \"BOM\",\n\t\"label\": \"BOM Stock Report\"\n}, {\n\t\"dependencies\": [\"Work Order\"],\n\t\"name\": \"Production Analytics\",\n\t\"is_query_report\": true,\n\t\"type\": \"report\",\n\t\"doctype\": \"Work Order\",\n\t\"label\": \"Production Analytics\"\n}, {\n\t\"dependencies\": [\"BOM\"],\n\t\"name\": \"BOM Operations Time\",\n\t\"is_query_report\": true,\n\t\"type\": \"report\",\n\t\"doctype\": \"BOM\",\n\t\"label\": \"BOM Operations Time\"\n}]"
-  },
-  {
-   "hidden": 0,
-   "label": "Tools",
-   "links": "[\n    {\n        \"description\": \"Replace BOM and update latest price in all BOMs\",\n        \"label\": \"BOM Update Tool\",\n        \"name\": \"BOM Update Tool\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"data_doctype\": \"BOM\",\n        \"description\": \"Compare BOMs for changes in Raw Materials and Operations\",\n        \"label\": \"BOM Comparison Tool\",\n        \"name\": \"bom-comparison-tool\",\n        \"type\": \"page\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Settings",
-   "links": "[\n    {\n        \"description\": \"Global settings for all manufacturing processes.\",\n        \"label\": \"Manufacturing Settings\",\n        \"name\": \"Manufacturing Settings\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Help",
-   "links": "[\n    {\n        \"label\": \"Work Order\",\n        \"name\": \"Work Order\",\n        \"type\": \"help\",\n        \"youtube_id\": \"ZotgLyp2YFY\"\n    }\n]"
-  }
- ],
- "category": "Domains",
- "charts": [
-  {
-   "chart_name": "Produced Quantity"
-  }
- ],
- "creation": "2020-03-02 17:11:37.032604",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Manufacturing",
- "modified": "2020-05-28 13:54:02.048419",
- "modified_by": "Administrator",
- "module": "Manufacturing",
- "name": "Manufacturing",
- "onboarding": "Manufacturing",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "restrict_to_domain": "Manufacturing",
- "shortcuts": [
-  {
-   "color": "#cef6d1",
-   "format": "{} Active",
-   "label": "Item",
-   "link_to": "Item",
-   "restrict_to_domain": "Manufacturing",
-   "stats_filter": "{\n    \"disabled\": 0\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "#cef6d1",
-   "format": "{} Active",
-   "label": "BOM",
-   "link_to": "BOM",
-   "restrict_to_domain": "Manufacturing",
-   "stats_filter": "{\n    \"is_active\": 1\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "#ffe8cd",
-   "format": "{} Open",
-   "label": "Work Order",
-   "link_to": "Work Order",
-   "restrict_to_domain": "Manufacturing",
-   "stats_filter": "{ \n    \"status\": [\"in\", \n        [\"Draft\", \"Not Started\", \"In Process\"]\n    ]\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "#ffe8cd",
-   "format": "{} Open",
-   "label": "Production Plan",
-   "link_to": "Production Plan",
-   "restrict_to_domain": "Manufacturing",
-   "stats_filter": "{ \n    \"status\": [\"not in\", [\"Completed\"]]\n}",
-   "type": "DocType"
-  },
-  {
-   "label": "Forecasting",
-   "link_to": "Exponential Smoothing Forecasting",
-   "type": "Report"
-  },
-  {
-   "label": "Work Order Summary",
-   "link_to": "Work Order Summary",
-   "restrict_to_domain": "Manufacturing",
-   "type": "Report"
-  },
-  {
-   "label": "BOM Stock Report",
-   "link_to": "BOM Stock Report",
-   "type": "Report"
-  },
-  {
-   "label": "Production Planning Report",
-   "link_to": "Production Planning Report",
-   "type": "Report"
-  },
-  {
-    "label": "Dashboard",
-    "link_to": "Manufacturing",
-    "restrict_to_domain": "Manufacturing",
-    "type": "Dashboard"
-   } 
- ]
-}
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js
index 15affd8..fbfd801 100644
--- a/erpnext/manufacturing/doctype/bom/bom.js
+++ b/erpnext/manufacturing/doctype/bom/bom.js
@@ -134,7 +134,7 @@
 			frm.set_intro(__('This is a Template BOM and will be used to make the work order for {0} of the item {1}',
 				[
 					`<a class="variants-intro">variants</a>`,
-					`<a href="#Form/Item/${frm.doc.item}">${frm.doc.item}</a>`,
+					`<a href="/app/item/${frm.doc.item}">${frm.doc.item}</a>`,
 				]), true);
 
 			frm.$wrapper.find(".variants-intro").on("click", () => {
diff --git a/erpnext/manufacturing/doctype/bom/bom_item_preview.html b/erpnext/manufacturing/doctype/bom/bom_item_preview.html
index c782f7b..6cd5f8c 100644
--- a/erpnext/manufacturing/doctype/bom/bom_item_preview.html
+++ b/erpnext/manufacturing/doctype/bom/bom_item_preview.html
@@ -12,11 +12,11 @@
 	<hr style="margin: 15px -15px;">
 	<p>
 		{% if data.value %}
-		<a style="margin-right: 7px; margin-bottom: 7px" class="btn btn-default btn-xs" href="#Form/BOM/{{ data.value }}">
+		<a style="margin-right: 7px; margin-bottom: 7px" class="btn btn-default btn-xs" href="/app/Form/BOM/{{ data.value }}">
 			{{ __("Open BOM {0}", [data.value.bold()]) }}</a>
 		{% endif %}
 		{% if data.item_code %}
-		<a class="btn btn-default btn-xs" href="#Form/Item/{{ data.item_code }}">
+		<a class="btn btn-default btn-xs" href="/app/Form/Item/{{ data.item_code }}">
 			{{ __("Open Item {0}", [data.item_code.bold()]) }}</a>
 		{% endif %}
 	</p>
diff --git a/erpnext/manufacturing/doctype/bom/bom_list.js b/erpnext/manufacturing/doctype/bom/bom_list.js
index 94cb466..4b5887f 100644
--- a/erpnext/manufacturing/doctype/bom/bom_list.js
+++ b/erpnext/manufacturing/doctype/bom/bom_list.js
@@ -8,7 +8,7 @@
 		} else if(doc.is_active) {
 			return [__("Active"), "blue", "is_active,=,Yes"];
 		} else if(!doc.is_active) {
-			return [__("Not active"), "darkgrey", "is_active,=,No"];
+			return [__("Not active"), "gray", "is_active,=,No"];
 		}
 	}
 };
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py
index 3833e86..8f9dd05 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan.py
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py
@@ -319,7 +319,7 @@
 		frappe.flags.mute_messages = False
 
 		if wo_list:
-			wo_list = ["""<a href="#Form/Work Order/%s" target="_blank">%s</a>""" % \
+			wo_list = ["""<a href="/app/Form/Work Order/%s" target="_blank">%s</a>""" % \
 				(p, p) for p in wo_list]
 			msgprint(_("{0} created").format(comma_and(wo_list)))
 		else :
@@ -423,7 +423,7 @@
 		frappe.flags.mute_messages = False
 
 		if material_request_list:
-			material_request_list = ["""<a href="#Form/Material Request/{0}">{1}</a>""".format(m.name, m.name) \
+			material_request_list = ["""<a href="/app/Form/Material Request/{0}">{1}</a>""".format(m.name, m.name) \
 				for m in material_request_list]
 			msgprint(_("{0} created").format(comma_and(material_request_list)))
 		else :
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan_list.js b/erpnext/manufacturing/doctype/production_plan/production_plan_list.js
index 165b66f..c2e3e6d 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan_list.js
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan_list.js
@@ -1,16 +1,16 @@
 frappe.listview_settings['Production Plan'] = {
 	add_fields: ["status"],
 	filters: [["status", "!=", "Closed"]],
-	get_indicator: function(doc) {
-		if(doc.status==="Submitted") {
+	get_indicator: function (doc) {
+		if (doc.status === "Submitted") {
 			return [__("Not Started"), "orange", "status,=,Submitted"];
 		} else {
 			return [__(doc.status), {
 				"Draft": "red",
 				"In Process": "orange",
 				"Completed": "green",
-				"Material Requested": "darkgrey",
-				"Cancelled": "darkgrey",
+				"Material Requested": "yellow",
+				"Cancelled": "gray",
 				"Closed": "grey"
 			}[doc.status], "status,=," + doc.status];
 		}
diff --git a/erpnext/manufacturing/doctype/work_order/work_order_list.js b/erpnext/manufacturing/doctype/work_order/work_order_list.js
index 8d18395..81c23bb 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order_list.js
+++ b/erpnext/manufacturing/doctype/work_order/work_order_list.js
@@ -12,7 +12,7 @@
 				"Not Started": "red",
 				"In Process": "orange",
 				"Completed": "green",
-				"Cancelled": "darkgrey"
+				"Cancelled": "gray"
 			}[doc.status], "status,=," + doc.status];
 		}
 	}
diff --git a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
index 8cd0164..7beecac 100644
--- a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
+++ b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
@@ -27,9 +27,9 @@
 		value = default_formatter(value, row, column, data);
 		if (column.id == "item") {
 			if (data["enough_parts_to_build"] > 0) {
-				value = `<a style='color:green' href="#Form/Item/${data['item']}" data-doctype="Item">${data['item']}</a>`;
+				value = `<a style='color:green' href="/app/item/${data['item']}" data-doctype="Item">${data['item']}</a>`;
 			} else {
-				value = `<a style='color:red' href="#Form/Item/${data['item']}" data-doctype="Item">${data['item']}</a>`;
+				value = `<a style='color:red' href="/app/item/${data['item']}" data-doctype="Item">${data['item']}</a>`;
 			}
 		}
 		return value
diff --git a/erpnext/manufacturing/workspace/manufacturing/manufacturing.json b/erpnext/manufacturing/workspace/manufacturing/manufacturing.json
new file mode 100644
index 0000000..a355203
--- /dev/null
+++ b/erpnext/manufacturing/workspace/manufacturing/manufacturing.json
@@ -0,0 +1,350 @@
+{
+ "category": "Domains",
+ "charts": [
+  {
+   "chart_name": "Produced Quantity"
+  }
+ ],
+ "creation": "2020-03-02 17:11:37.032604",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "organization",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Manufacturing",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Production",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Item, BOM",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Work Order",
+   "link_to": "Work Order",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, BOM",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Production Plan",
+   "link_to": "Production Plan",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Stock Entry",
+   "link_to": "Stock Entry",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Job Card",
+   "link_to": "Job Card",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Downtime Entry",
+   "link_to": "Downtime Entry",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Bill of Materials",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item",
+   "link_to": "Item",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Bill of Materials",
+   "link_to": "BOM",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Workstation",
+   "link_to": "Workstation",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Operation",
+   "link_to": "Operation",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Routing",
+   "link_to": "Routing",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Work Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Production Planning Report",
+   "link_to": "Production Planning Report",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Work Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Work Order Summary",
+   "link_to": "Work Order Summary",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Quality Inspection",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Quality Inspection Summary",
+   "link_to": "Quality Inspection Summary",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Downtime Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Downtime Analysis",
+   "link_to": "Downtime Analysis",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Job Card",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Job Card Summary",
+   "link_to": "Job Card Summary",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "BOM",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "BOM Search",
+   "link_to": "BOM Search",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "BOM",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "BOM Stock Report",
+   "link_to": "BOM Stock Report",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Work Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Production Analytics",
+   "link_to": "Production Analytics",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "BOM",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "BOM Operations Time",
+   "link_to": "BOM Operations Time",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Tools",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "BOM Update Tool",
+   "link_to": "BOM Update Tool",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "BOM Comparison Tool",
+   "link_to": "bom-comparison-tool",
+   "link_type": "Page",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Manufacturing Settings",
+   "link_to": "Manufacturing Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:39.365928",
+ "modified_by": "Administrator",
+ "module": "Manufacturing",
+ "name": "Manufacturing",
+ "onboarding": "Manufacturing",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Manufacturing",
+ "shortcuts": [
+  {
+   "color": "Green",
+   "format": "{} Active",
+   "label": "Item",
+   "link_to": "Item",
+   "restrict_to_domain": "Manufacturing",
+   "stats_filter": "{\n    \"disabled\": 0\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Green",
+   "format": "{} Active",
+   "label": "BOM",
+   "link_to": "BOM",
+   "restrict_to_domain": "Manufacturing",
+   "stats_filter": "{\n    \"is_active\": 1\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Yellow",
+   "format": "{} Open",
+   "label": "Work Order",
+   "link_to": "Work Order",
+   "restrict_to_domain": "Manufacturing",
+   "stats_filter": "{ \n    \"status\": [\"in\", \n        [\"Draft\", \"Not Started\", \"In Process\"]\n    ]\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Yellow",
+   "format": "{} Open",
+   "label": "Production Plan",
+   "link_to": "Production Plan",
+   "restrict_to_domain": "Manufacturing",
+   "stats_filter": "{ \n    \"status\": [\"not in\", [\"Completed\"]]\n}",
+   "type": "DocType"
+  },
+  {
+   "label": "Forecasting",
+   "link_to": "Exponential Smoothing Forecasting",
+   "type": "Report"
+  },
+  {
+   "label": "Work Order Summary",
+   "link_to": "Work Order Summary",
+   "restrict_to_domain": "Manufacturing",
+   "type": "Report"
+  },
+  {
+   "label": "BOM Stock Report",
+   "link_to": "BOM Stock Report",
+   "type": "Report"
+  },
+  {
+   "label": "Production Planning Report",
+   "link_to": "Production Planning Report",
+   "type": "Report"
+  },
+  {
+   "label": "Dashboard",
+   "link_to": "Manufacturing",
+   "restrict_to_domain": "Manufacturing",
+   "type": "Dashboard"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/non_profit/desk_page/non_profit/non_profit.json b/erpnext/non_profit/desk_page/non_profit/non_profit.json
deleted file mode 100644
index ebe6194..0000000
--- a/erpnext/non_profit/desk_page/non_profit/non_profit.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Loan Management",
-   "links": "[\n    {\n        \"description\": \"Define various loan types\",\n        \"label\": \"Loan Type\",\n        \"name\": \"Loan Type\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Loan Application\",\n        \"label\": \"Loan Application\",\n        \"name\": \"Loan Application\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Loan\",\n        \"name\": \"Loan\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Grant Application",
-   "links": "[\n    {\n        \"description\": \"Grant information.\",\n        \"label\": \"Grant Application\",\n        \"name\": \"Grant Application\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Membership",
-   "links": "[\n    {\n        \"description\": \"Member information.\",\n        \"label\": \"Member\",\n        \"name\": \"Member\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Membership Details\",\n        \"label\": \"Membership\",\n        \"name\": \"Membership\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Membership Type Details\",\n        \"label\": \"Membership Type\",\n        \"name\": \"Membership Type\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Billing and Gateway Settings\",\n        \"label\": \"Membership Settings\",\n        \"name\": \"Membership Settings\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Volunteer",
-   "links": "[\n    {\n        \"description\": \"Volunteer information.\",\n        \"label\": \"Volunteer\",\n        \"name\": \"Volunteer\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Volunteer Type information.\",\n        \"label\": \"Volunteer Type\",\n        \"name\": \"Volunteer Type\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Chapter",
-   "links": "[\n    {\n        \"description\": \"Chapter information.\",\n        \"label\": \"Chapter\",\n        \"name\": \"Chapter\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Donor",
-   "links": "[\n    {\n        \"description\": \"Donor information.\",\n        \"label\": \"Donor\",\n        \"name\": \"Donor\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Donor Type information.\",\n        \"label\": \"Donor Type\",\n        \"name\": \"Donor Type\",\n        \"type\": \"doctype\"\n    }\n]"
-  }
- ],
- "category": "Domains",
- "charts": [],
- "creation": "2020-03-02 17:23:47.811421",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Non Profit",
- "modified": "2020-04-13 13:41:52.373705",
- "modified_by": "Administrator",
- "module": "Non Profit",
- "name": "Non Profit",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "restrict_to_domain": "Non Profit",
- "shortcuts": [
-  {
-   "label": "Member",
-   "link_to": "Member",
-   "type": "DocType"
-  },
-  {
-   "label": "Membership Settings",
-   "link_to": "Membership Settings",
-   "type": "DocType"
-  },
-  {
-   "label": "Membership",
-   "link_to": "Membership",
-   "type": "DocType"
-  },
-  {
-   "label": "Chapter",
-   "link_to": "Chapter",
-   "type": "DocType"
-  },
-  {
-   "label": "Chapter Member",
-   "link_to": "Chapter Member",
-   "type": "DocType"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/non_profit/workspace/non_profit/non_profit.json b/erpnext/non_profit/workspace/non_profit/non_profit.json
new file mode 100644
index 0000000..da2a514
--- /dev/null
+++ b/erpnext/non_profit/workspace/non_profit/non_profit.json
@@ -0,0 +1,224 @@
+{
+ "category": "Domains",
+ "charts": [],
+ "creation": "2020-03-02 17:23:47.811421",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "non-profit",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Non Profit",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Management",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Type",
+   "link_to": "Loan Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan Application",
+   "link_to": "Loan Application",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loan",
+   "link_to": "Loan",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Grant Application",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Grant Application",
+   "link_to": "Grant Application",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Membership",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Member",
+   "link_to": "Member",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Membership",
+   "link_to": "Membership",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Membership Type",
+   "link_to": "Membership Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Membership Settings",
+   "link_to": "Membership Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Volunteer",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Volunteer",
+   "link_to": "Volunteer",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Volunteer Type",
+   "link_to": "Volunteer Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Chapter",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Chapter",
+   "link_to": "Chapter",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Donor",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Donor",
+   "link_to": "Donor",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Donor Type",
+   "link_to": "Donor Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:38.351409",
+ "modified_by": "Administrator",
+ "module": "Non Profit",
+ "name": "Non Profit",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Non Profit",
+ "shortcuts": [
+  {
+   "label": "Member",
+   "link_to": "Member",
+   "type": "DocType"
+  },
+  {
+   "label": "Membership Settings",
+   "link_to": "Membership Settings",
+   "type": "DocType"
+  },
+  {
+   "label": "Membership",
+   "link_to": "Membership",
+   "type": "DocType"
+  },
+  {
+   "label": "Chapter",
+   "link_to": "Chapter",
+   "type": "DocType"
+  },
+  {
+   "label": "Chapter Member",
+   "link_to": "Chapter Member",
+   "type": "DocType"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 7b2428e..d970eb2 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -730,6 +730,7 @@
 erpnext.patches.v13_0.rename_issue_doctype_fields
 erpnext.patches.v13_0.change_default_pos_print_format
 erpnext.patches.v13_0.set_youtube_video_id
+erpnext.patches.v13_0.set_app_name
 erpnext.patches.v13_0.print_uom_after_quantity_patch
 erpnext.patches.v13_0.set_payment_channel_in_payment_gateway_account
 erpnext.patches.v13_0.create_healthcare_custom_fields_in_stock_entry_detail
@@ -742,6 +743,7 @@
 erpnext.patches.v13_0.create_leave_policy_assignment_based_on_employee_current_leave_policy
 erpnext.patches.v13_0.add_po_to_global_search
 erpnext.patches.v13_0.update_returned_qty_in_pr_dn
+execute:frappe.rename_doc("Workspace", "Loan", "Loan Management", ignore_if_exists=True)
 erpnext.patches.v13_0.update_project_template_tasks
 erpnext.patches.v13_0.set_company_in_leave_ledger_entry
 erpnext.patches.v13_0.convert_qi_parameter_to_link_field
diff --git a/erpnext/patches/v13_0/set_app_name.py b/erpnext/patches/v13_0/set_app_name.py
new file mode 100644
index 0000000..0c78b65
--- /dev/null
+++ b/erpnext/patches/v13_0/set_app_name.py
@@ -0,0 +1,8 @@
+import frappe
+from frappe import _
+
+def execute():
+    frappe.reload_doctype("System Settings")
+    settings = frappe.get_doc("System Settings")
+    settings.app_name = _("ERPNext")
+    settings.save()
\ No newline at end of file
diff --git a/erpnext/payroll/desk_page/payroll/payroll.json b/erpnext/payroll/desk_page/payroll/payroll.json
deleted file mode 100644
index 285e3b3..0000000
--- a/erpnext/payroll/desk_page/payroll/payroll.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Payroll",
-   "links": "[\n    {\n        \"label\": \"Salary Component\",\n        \"name\": \"Salary Component\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n        \n    },\n    {\n        \"label\": \"Salary Structure\",\n        \"name\": \"Salary Structure\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Salary Structure Assignment\",\n        \"name\": \"Salary Structure Assignment\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Payroll Entry\",\n        \"name\": \"Payroll Entry\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Salary Slip\",\n        \"name\": \"Salary Slip\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Taxation",
-   "links": "[\n    {\n        \"label\": \"Payroll Period\",\n        \"name\": \"Payroll Period\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n        \n    },\n    {\n        \"label\": \"Income Tax Slab\",\n        \"name\": \"Income Tax Slab\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n        \n    },\n    {\n        \"label\": \"Employee Other Income\",\n        \"name\": \"Employee Other Income\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n        \n    },\n    {\n        \"label\": \"Employee Tax Exemption Declaration\",\n        \"name\": \"Employee Tax Exemption Declaration\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n        \n    },\n    {\n        \"label\": \"Employee Tax Exemption Proof Submission\",\n        \"name\": \"Employee Tax Exemption Proof Submission\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n        \n    },\n    {\n        \"label\": \"Employee Tax Exemption Category\",\n        \"name\": \"Employee Tax Exemption Category\",\n        \"type\": \"doctype\"\n        \n    },\n    {\n        \"label\": \"Employee Tax Exemption Sub Category\",\n        \"name\": \"Employee Tax Exemption Sub Category\",\n        \"type\": \"doctype\"\n        \n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Compensations",
-   "links": "[\n    {\n        \"label\": \"Additional Salary\",\n        \"name\": \"Additional Salary\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n        \n    },\n    {\n        \"label\": \"Retention Bonus\",\n        \"name\": \"Retention Bonus\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Employee Incentive\",\n        \"name\": \"Employee Incentive\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Employee Benefit Application\",\n        \"name\": \"Employee Benefit Application\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Employee Benefit Claim\",\n        \"name\": \"Employee Benefit Claim\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Salary Slip\"\n        ],\n        \"doctype\": \"Salary Slip\",\n        \"is_query_report\": true,\n        \"label\": \"Salary Register\",\n        \"name\": \"Salary Register\",\n        \"type\": \"report\"\n        \n    },\n    {\n        \"dependencies\": [\n            \"Salary Slip\"\n        ],\n        \"doctype\": \"Salary Slip\",\n        \"label\": \"Salary Payments Based On Payment Mode\",\n        \"is_query_report\": true,\n        \"name\": \"Salary Payments Based On Payment Mode\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Salary Slip\"\n        ],\n        \"doctype\": \"Salary Slip\",\n        \"label\": \"Salary Payments via ECS\",\n        \"is_query_report\": true,\n        \"name\": \"Salary Payments via ECS\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Salary Slip\"\n        ],\n        \"doctype\": \"Salary Slip\",\n        \"label\": \"Income Tax Deductions\",\n        \"is_query_report\": true,\n        \"name\": \"Income Tax Deductions\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Salary Slip\"\n        ],\n        \"doctype\": \"Salary Slip\",\n        \"label\": \"Professional Tax Deductions\",\n        \"is_query_report\": true,\n        \"name\": \"Professional Tax Deductions\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Salary Slip\"\n        ],\n        \"doctype\": \"Salary Slip\",\n        \"label\": \"Provident Fund Deductions\",\n        \"is_query_report\": true,\n        \"name\": \"Provident Fund Deductions\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Payroll Entry\"\n        ],\n        \"doctype\": \"Payroll Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Bank Remittance\",\n        \"name\": \"Bank Remittance\",\n        \"type\": \"report\"\n        \n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [
-  {
-   "chart_name": "Outgoing Salary",
-   "label": "Outgoing Salary"
-  }
- ],
- "creation": "2020-05-27 19:54:23.405607",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Payroll",
- "modified": "2020-08-10 19:38:45.976209",
- "modified_by": "Administrator",
- "module": "Payroll",
- "name": "Payroll",
- "onboarding": "Payroll",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "label": "Salary Structure",
-   "link_to": "Salary Structure",
-   "type": "DocType"
-  },
-  {
-   "label": "Payroll Entry",
-   "link_to": "Payroll Entry",
-   "type": "DocType"
-  },
-  {
-   "color": "",
-   "format": "{} Pending",
-   "label": "Salary Slip",
-   "link_to": "Salary Slip",
-   "stats_filter": "{\"status\": \"Draft\"}",
-   "type": "DocType"
-  },
-  {
-   "label": "Income Tax Slab",
-   "link_to": "Income Tax Slab",
-   "type": "DocType"
-  },
-  {
-   "label": "Salary Register",
-   "link_to": "Salary Register",
-   "type": "Report"
-  },
-  {
-   "label": "Dashboard",
-   "link_to": "Payroll",
-   "type": "Dashboard"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/payroll/doctype/payroll_period/payroll_period.py b/erpnext/payroll/doctype/payroll_period/payroll_period.py
index 46f6cd8..ef3a6cc 100644
--- a/erpnext/payroll/doctype/payroll_period/payroll_period.py
+++ b/erpnext/payroll/doctype/payroll_period/payroll_period.py
@@ -41,7 +41,7 @@
 		if overlap_doc:
 			msg = _("A {0} exists between {1} and {2} (").format(self.doctype,
 				formatdate(self.start_date), formatdate(self.end_date)) \
-				+ """ <b><a href="#Form/{0}/{1}">{1}</a></b>""".format(self.doctype, overlap_doc[0].name) \
+				+ """ <b><a href="/app/Form/{0}/{1}">{1}</a></b>""".format(self.doctype, overlap_doc[0].name) \
 				+ _(") for {0}").format(self.company)
 			frappe.throw(msg)
 
diff --git a/erpnext/payroll/workspace/payroll/payroll.json b/erpnext/payroll/workspace/payroll/payroll.json
new file mode 100644
index 0000000..8149730
--- /dev/null
+++ b/erpnext/payroll/workspace/payroll/payroll.json
@@ -0,0 +1,333 @@
+{
+ "category": "Modules",
+ "charts": [
+  {
+   "chart_name": "Outgoing Salary",
+   "label": "Outgoing Salary"
+  }
+ ],
+ "creation": "2020-05-27 19:54:23.405607",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "money-coins-1",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Payroll",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payroll",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Salary Component",
+   "link_to": "Salary Component",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Salary Structure",
+   "link_to": "Salary Structure",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Salary Structure Assignment",
+   "link_to": "Salary Structure Assignment",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payroll Entry",
+   "link_to": "Payroll Entry",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Salary Slip",
+   "link_to": "Salary Slip",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Taxation",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Payroll Period",
+   "link_to": "Payroll Period",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Income Tax Slab",
+   "link_to": "Income Tax Slab",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Other Income",
+   "link_to": "Employee Other Income",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Tax Exemption Declaration",
+   "link_to": "Employee Tax Exemption Declaration",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Tax Exemption Proof Submission",
+   "link_to": "Employee Tax Exemption Proof Submission",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Tax Exemption Category",
+   "link_to": "Employee Tax Exemption Category",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Tax Exemption Sub Category",
+   "link_to": "Employee Tax Exemption Sub Category",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Compensations",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Additional Salary",
+   "link_to": "Additional Salary",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Retention Bonus",
+   "link_to": "Retention Bonus",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Incentive",
+   "link_to": "Employee Incentive",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Benefit Application",
+   "link_to": "Employee Benefit Application",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Benefit Claim",
+   "link_to": "Employee Benefit Claim",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Salary Slip",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Salary Register",
+   "link_to": "Salary Register",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Salary Slip",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Salary Payments Based On Payment Mode",
+   "link_to": "Salary Payments Based On Payment Mode",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Salary Slip",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Salary Payments via ECS",
+   "link_to": "Salary Payments via ECS",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Salary Slip",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Income Tax Deductions",
+   "link_to": "Income Tax Deductions",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Salary Slip",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Professional Tax Deductions",
+   "link_to": "Professional Tax Deductions",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Salary Slip",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Provident Fund Deductions",
+   "link_to": "Provident Fund Deductions",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Payroll Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Bank Remittance",
+   "link_to": "Bank Remittance",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:37.205628",
+ "modified_by": "Administrator",
+ "module": "Payroll",
+ "name": "Payroll",
+ "onboarding": "Payroll",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "label": "Salary Structure",
+   "link_to": "Salary Structure",
+   "type": "DocType"
+  },
+  {
+   "label": "Payroll Entry",
+   "link_to": "Payroll Entry",
+   "type": "DocType"
+  },
+  {
+   "color": "",
+   "format": "{} Pending",
+   "label": "Salary Slip",
+   "link_to": "Salary Slip",
+   "stats_filter": "{\"status\": \"Draft\"}",
+   "type": "DocType"
+  },
+  {
+   "label": "Income Tax Slab",
+   "link_to": "Income Tax Slab",
+   "type": "DocType"
+  },
+  {
+   "label": "Salary Register",
+   "link_to": "Salary Register",
+   "type": "Report"
+  },
+  {
+   "label": "Dashboard",
+   "link_to": "Payroll",
+   "type": "Dashboard"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/projects/desk_page/projects/projects.json b/erpnext/projects/desk_page/projects/projects.json
deleted file mode 100644
index e24cf30..0000000
--- a/erpnext/projects/desk_page/projects/projects.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Projects",
-   "links": "[\n    {\n        \"description\": \"Project master.\",\n        \"label\": \"Project\",\n        \"name\": \"Project\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Project activity / task.\",\n        \"label\": \"Task\",\n        \"name\": \"Task\",\n        \"onboard\": 1,\n        \"route\": \"#List/Task\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Make project from a template.\",\n        \"label\": \"Project Template\",\n        \"name\": \"Project Template\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Define Project type.\",\n        \"label\": \"Project Type\",\n        \"name\": \"Project Type\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Project\"\n        ],\n        \"description\": \"Project Update.\",\n        \"label\": \"Project Update\",\n        \"name\": \"Project Update\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Time Tracking",
-   "links": "[\n    {\n        \"description\": \"Timesheet for tasks.\",\n        \"label\": \"Timesheet\",\n        \"name\": \"Timesheet\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Types of activities for Time Logs\",\n        \"label\": \"Activity Type\",\n        \"name\": \"Activity Type\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Activity Type\"\n        ],\n        \"description\": \"Cost of various activities\",\n        \"label\": \"Activity Cost\",\n        \"name\": \"Activity Cost\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Timesheet\"\n        ],\n        \"doctype\": \"Timesheet\",\n        \"is_query_report\": true,\n        \"label\": \"Daily Timesheet Summary\",\n        \"name\": \"Daily Timesheet Summary\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Project\"\n        ],\n        \"doctype\": \"Project\",\n        \"is_query_report\": true,\n        \"label\": \"Project wise Stock Tracking\",\n        \"name\": \"Project wise Stock Tracking\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Project\"\n        ],\n        \"doctype\": \"Project\",\n        \"is_query_report\": true,\n        \"label\": \"Project Billing Summary\",\n        \"name\": \"Project Billing Summary\",\n        \"type\": \"report\"\n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [
-  {
-   "chart_name": "Project Summary",
-   "label": "Open Projects"
-  }
- ],
- "creation": "2020-03-02 15:46:04.874669",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Projects",
- "modified": "2020-05-28 13:38:19.934937",
- "modified_by": "Administrator",
- "module": "Projects",
- "name": "Projects",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "color": "#cef6d1",
-   "format": "{} Assigned",
-   "label": "Task",
-   "link_to": "Task",
-   "stats_filter": "{\n    \"_assign\": [\"like\", '%' + frappe.session.user + '%'],\n    \"status\": \"Open\"\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "#ffe8cd",
-   "format": "{} Open",
-   "label": "Project",
-   "link_to": "Project",
-   "stats_filter": "{\n    \"status\": \"Open\"\n}",
-   "type": "DocType"
-  },
-  {
-   "label": "Timesheet",
-   "link_to": "Timesheet",
-   "type": "DocType"
-  },
-  {
-   "label": "Project Billing Summary",
-   "link_to": "Project Billing Summary",
-   "type": "Report"
-  },
-  {
-   "label": "Dashboard",
-   "link_to": "Project",
-   "type": "Dashboard"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 60f85b0..8ba0b6c 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -27,7 +27,7 @@
 
 		self.update_costing()
 
-	def before_print(self):
+	def before_print(self, settings=None):
 		self.onload()
 
 
diff --git a/erpnext/projects/doctype/task/task_list.js b/erpnext/projects/doctype/task/task_list.js
index 39734ee..98d2bbc 100644
--- a/erpnext/projects/doctype/task/task_list.js
+++ b/erpnext/projects/doctype/task/task_list.js
@@ -27,7 +27,7 @@
 	},
 	gantt_custom_popup_html: function(ganttobj, task) {
 		var html = `<h5><a style="text-decoration:underline"\
-			href="#Form/Task/${ganttobj.id}""> ${ganttobj.name} </a></h5>`;
+			href="/app/task/${ganttobj.id}""> ${ganttobj.name} </a></h5>`;
 
 		if(task.project) html += `<p>Project: ${task.project}</p>`;
 		html += `<p>Progress: ${ganttobj.progress}</p>`;
diff --git a/erpnext/projects/workspace/projects/projects.json b/erpnext/projects/workspace/projects/projects.json
new file mode 100644
index 0000000..dbbd7e1
--- /dev/null
+++ b/erpnext/projects/workspace/projects/projects.json
@@ -0,0 +1,193 @@
+{
+ "category": "Modules",
+ "charts": [
+  {
+   "chart_name": "Project Summary",
+   "label": "Open Projects"
+  }
+ ],
+ "creation": "2020-03-02 15:46:04.874669",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "project",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Projects",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Projects",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Project",
+   "link_to": "Project",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Task",
+   "link_to": "Task",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Project Template",
+   "link_to": "Project Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Project Type",
+   "link_to": "Project Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Project",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Project Update",
+   "link_to": "Project Update",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Time Tracking",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Timesheet",
+   "link_to": "Timesheet",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Activity Type",
+   "link_to": "Activity Type",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Activity Type",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Activity Cost",
+   "link_to": "Activity Cost",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Timesheet",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Daily Timesheet Summary",
+   "link_to": "Daily Timesheet Summary",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Project",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Project wise Stock Tracking",
+   "link_to": "Project wise Stock Tracking",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Project",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Project Billing Summary",
+   "link_to": "Project Billing Summary",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:37.856224",
+ "modified_by": "Administrator",
+ "module": "Projects",
+ "name": "Projects",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "color": "Blue",
+   "format": "{} Assigned",
+   "label": "Task",
+   "link_to": "Task",
+   "stats_filter": "{\n    \"_assign\": [\"like\", '%' + frappe.session.user + '%'],\n    \"status\": \"Open\"\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Blue",
+   "format": "{} Open",
+   "label": "Project",
+   "link_to": "Project",
+   "stats_filter": "{\n    \"status\": \"Open\"\n}",
+   "type": "DocType"
+  },
+  {
+   "label": "Timesheet",
+   "link_to": "Timesheet",
+   "type": "DocType"
+  },
+  {
+   "label": "Project Billing Summary",
+   "link_to": "Project Billing Summary",
+   "type": "Report"
+  },
+  {
+   "label": "Dashboard",
+   "link_to": "Project",
+   "type": "Dashboard"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/public/build.json b/erpnext/public/build.json
index 2f15cbc..d30bc8c 100644
--- a/erpnext/public/build.json
+++ b/erpnext/public/build.json
@@ -2,7 +2,8 @@
 	"css/erpnext.css": [
 		"public/less/erpnext.less",
 		"public/less/hub.less",
-		"public/less/call_popup.less"
+		"public/less/call_popup.less",
+		"public/scss/point-of-sale.scss"
 	],
 	"css/marketplace.css": [
 		"public/less/hub.less"
@@ -27,16 +28,6 @@
 		"public/js/payment/payments.js",
 		"public/js/controllers/taxes_and_totals.js",
 		"public/js/controllers/transaction.js",
-		"public/js/pos/pos.html",
-		"public/js/pos/pos_bill_item.html",
-		"public/js/pos/pos_bill_item_new.html",
-		"public/js/pos/pos_selected_item.html",
-		"public/js/pos/pos_item.html",
-		"public/js/pos/pos_tax_row.html",
-		"public/js/pos/customer_toolbar.html",
-		"public/js/pos/pos_invoice_list.html",
-		"public/js/payment/pos_payment.html",
-		"public/js/payment/payment_details.html",
 		"public/js/templates/item_selector.html",
 		"public/js/templates/employees_to_mark_attendance.html",
 		"public/js/utils/item_selector.js",
@@ -56,5 +47,15 @@
 		"stock/dashboard/item_dashboard.html",
 		"stock/dashboard/item_dashboard_list.html",
 		"stock/dashboard/item_dashboard.js"
+	],
+	"js/point-of-sale.min.js": [
+		"selling/page/point_of_sale/pos_item_selector.js",
+		"selling/page/point_of_sale/pos_item_cart.js",
+		"selling/page/point_of_sale/pos_item_details.js",
+		"selling/page/point_of_sale/pos_number_pad.js",
+		"selling/page/point_of_sale/pos_payment.js",
+		"selling/page/point_of_sale/pos_past_order_list.js",
+		"selling/page/point_of_sale/pos_past_order_summary.js",
+		"selling/page/point_of_sale/pos_controller.js"
 	]
 }
diff --git a/erpnext/public/css/pos.css b/erpnext/public/css/pos.css
deleted file mode 100644
index 47f5771..0000000
--- a/erpnext/public/css/pos.css
+++ /dev/null
@@ -1,217 +0,0 @@
-[data-route="point-of-sale"] .layout-main-section { border: none;  font-size: 12px; }
-[data-route="point-of-sale"] .layout-main-section-wrapper { margin-bottom: 0; }
-[data-route="point-of-sale"] .pos-items-wrapper { max-height: calc(100vh - 210px); }
-:root { --border-color: #d1d8dd;  --text-color: #8d99a6;  --primary: #5e64ff; }
-[data-route="point-of-sale"] .flex { display: flex; }
-[data-route="point-of-sale"] .grid { display: grid; }
-[data-route="point-of-sale"] .absolute { position: absolute; }
-[data-route="point-of-sale"] .relative { position: relative; }
-[data-route="point-of-sale"] .abs-center { top: 50%; left: 50%; transform: translate(-50%, -50%); }
-[data-route="point-of-sale"] .inline { display: inline; }
-[data-route="point-of-sale"] .float-right { float: right; }
-[data-route="point-of-sale"] .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
-[data-route="point-of-sale"] .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
-[data-route="point-of-sale"] .grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
-[data-route="point-of-sale"] .grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
-[data-route="point-of-sale"] .grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
-[data-route="point-of-sale"] .grid-cols-10 { grid-template-columns: repeat(10, minmax(0, 1fr)); }
-[data-route="point-of-sale"] .gap-2 { grid-gap: 0.5rem;  gap: 0.5rem; }
-[data-route="point-of-sale"] .gap-4 { grid-gap: 1rem;  gap: 1rem; }
-[data-route="point-of-sale"] .gap-6 { grid-gap: 1.25rem;  gap: 1.25rem; }
-[data-route="point-of-sale"] .gap-8 { grid-gap: 1.5rem;  gap: 1.5rem; }
-[data-route="point-of-sale"] .row-gap-2 { grid-row-gap: 0.5rem;  row-gap: 0.5rem; }
-[data-route="point-of-sale"] .col-gap-4 { grid-column-gap: 1rem;  column-gap: 1rem; }
-[data-route="point-of-sale"] .col-span-2 { grid-column: span 2 / span 2; }
-[data-route="point-of-sale"] .col-span-3 { grid-column: span 3 / span 3; }
-[data-route="point-of-sale"] .col-span-4 { grid-column: span 4 / span 4; }
-[data-route="point-of-sale"] .col-span-6 { grid-column: span 6 / span 6; }
-[data-route="point-of-sale"] .col-span-10 { grid-column: span 10 / span 10; }
-[data-route="point-of-sale"] .row-span-2 { grid-row: span 2 / span 2; }
-[data-route="point-of-sale"] .grid-auto-row { grid-auto-rows: 5.5rem; }
-[data-route="point-of-sale"] .d-none { display: none; }
-[data-route="point-of-sale"] .flex-wrap { flex-wrap: wrap; }
-[data-route="point-of-sale"] .flex-row { flex-direction: row; }
-[data-route="point-of-sale"] .flex-col { flex-direction: column; }
-[data-route="point-of-sale"] .flex-row-rev { flex-direction: row-reverse; }
-[data-route="point-of-sale"] .flex-col-rev { flex-direction: column-reverse; }
-[data-route="point-of-sale"] .flex-1 { flex: 1 1 0%; }
-[data-route="point-of-sale"] .items-center { align-items: center; }
-[data-route="point-of-sale"] .items-end { align-items: flex-end; }
-[data-route="point-of-sale"] .f-grow-1 { flex-grow: 1; }
-[data-route="point-of-sale"] .f-grow-2 { flex-grow: 2; }
-[data-route="point-of-sale"] .f-grow-3 { flex-grow: 3; }
-[data-route="point-of-sale"] .f-grow-4 { flex-grow: 4; }
-[data-route="point-of-sale"] .f-shrink-0 { flex-shrink: 0; }
-[data-route="point-of-sale"] .f-shrink-1 { flex-shrink: 1; }
-[data-route="point-of-sale"] .f-shrink-2 { flex-shrink: 2; }
-[data-route="point-of-sale"] .f-shrink-3 { flex-shrink: 3; }
-[data-route="point-of-sale"] .shadow { box-shadow: 0 0px 3px 0 rgba(0, 0, 0, 0.2), 0 1px 2px 0 rgba(0, 0, 0, 0.06); }
-[data-route="point-of-sale"] .shadow-sm { box-shadow: 0 0.5px 3px 0 rgba(0, 0, 0, 0.125); }
-[data-route="point-of-sale"] .shadow-inner { box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.1); }
-[data-route="point-of-sale"] .rounded { border-radius: 0.3rem; }
-[data-route="point-of-sale"] .rounded-b { border-bottom-left-radius: 0.3rem;  border-bottom-right-radius: 0.3rem; }
-[data-route="point-of-sale"] .p-8 { padding: 2rem; }
-[data-route="point-of-sale"] .p-16 { padding: 4rem; }
-[data-route="point-of-sale"] .p-32 { padding: 8rem; }
-[data-route="point-of-sale"] .p-6 { padding: 1.5rem; }
-[data-route="point-of-sale"] .p-4 { padding: 1rem; }
-[data-route="point-of-sale"] .p-3 { padding: 0.75rem; }
-[data-route="point-of-sale"] .p-2 { padding: 0.5rem; }
-[data-route="point-of-sale"] .m-8 { margin: 2rem; }
-[data-route="point-of-sale"] .p-1 { padding: 0.25rem; }
-[data-route="point-of-sale"] .pr-0 { padding-right: 0rem; }
-[data-route="point-of-sale"] .pl-0 { padding-left: 0rem; }
-[data-route="point-of-sale"] .pt-0 { padding-top: 0rem; }
-[data-route="point-of-sale"] .pb-0 { padding-bottom: 0rem; }
-[data-route="point-of-sale"] .mr-0 { margin-right: 0rem; }
-[data-route="point-of-sale"] .ml-0 { margin-left: 0rem; }
-[data-route="point-of-sale"] .mt-0 { margin-top: 0rem; }
-[data-route="point-of-sale"] .mb-0 { margin-bottom: 0rem; }
-[data-route="point-of-sale"] .pr-2 { padding-right: 0.5rem; }
-[data-route="point-of-sale"] .pl-2 { padding-left: 0.5rem; }
-[data-route="point-of-sale"] .pt-2 { padding-top: 0.5rem; }
-[data-route="point-of-sale"] .pb-2 { padding-bottom: 0.5rem; }
-[data-route="point-of-sale"] .pr-3 { padding-right: 0.75rem; }
-[data-route="point-of-sale"] .pl-3 { padding-left: 0.75rem; }
-[data-route="point-of-sale"] .pt-3 { padding-top: 0.75rem; }
-[data-route="point-of-sale"] .pb-3 { padding-bottom: 0.75rem; }
-[data-route="point-of-sale"] .pr-4 { padding-right: 1rem; }
-[data-route="point-of-sale"] .pl-4 { padding-left: 1rem; }
-[data-route="point-of-sale"] .pt-4 { padding-top: 1rem; }
-[data-route="point-of-sale"] .pb-4 { padding-bottom: 1rem; }
-[data-route="point-of-sale"] .mr-4 { margin-right: 1rem; }
-[data-route="point-of-sale"] .ml-4 { margin-left: 1rem; }
-[data-route="point-of-sale"] .mt-4 { margin-top: 1rem; }
-[data-route="point-of-sale"] .mb-4 { margin-bottom: 1rem; }
-[data-route="point-of-sale"] .mr-2 { margin-right: 0.5rem; }
-[data-route="point-of-sale"] .ml-2 { margin-left: 0.5rem; }
-[data-route="point-of-sale"] .mt-2 { margin-top: 0.5rem; }
-[data-route="point-of-sale"] .mb-2 { margin-bottom: 0.5rem; }
-[data-route="point-of-sale"] .mr-1 { margin-right: 0.25rem; }
-[data-route="point-of-sale"] .ml-1 { margin-left: 0.25rem; }
-[data-route="point-of-sale"] .mt-1 { margin-top: 0.25rem; }
-[data-route="point-of-sale"] .mb-1 { margin-bottom: 0.25rem; }
-[data-route="point-of-sale"] .mr-auto { margin-right: auto; }
-[data-route="point-of-sale"] .ml-auto { margin-left: auto; }
-[data-route="point-of-sale"] .mt-auto { margin-top: auto; }
-[data-route="point-of-sale"] .mb-auto { margin-bottom: auto; }
-[data-route="point-of-sale"] .pr-6 { padding-right: 1.5rem; }
-[data-route="point-of-sale"] .pl-6 { padding-left: 1.5rem; }
-[data-route="point-of-sale"] .pt-6 { padding-top: 1.5rem; }
-[data-route="point-of-sale"] .pb-6 { padding-bottom: 1.5rem; }
-[data-route="point-of-sale"] .mr-6 { margin-right: 1.5rem; }
-[data-route="point-of-sale"] .ml-6 { margin-left: 1.5rem; }
-[data-route="point-of-sale"] .mt-6 { margin-top: 1.5rem; }
-[data-route="point-of-sale"] .mb-6 { margin-bottom: 1.5rem; }
-[data-route="point-of-sale"] .mr-8 { margin-right: 2rem; }
-[data-route="point-of-sale"] .ml-8 { margin-left: 2rem; }
-[data-route="point-of-sale"] .mt-8 { margin-top: 2rem; }
-[data-route="point-of-sale"] .mb-8 { margin-bottom: 2rem; }
-[data-route="point-of-sale"] .pr-8 { padding-right: 2rem; }
-[data-route="point-of-sale"] .pl-8 { padding-left: 2rem; }
-[data-route="point-of-sale"] .pt-8 { padding-top: 2rem; }
-[data-route="point-of-sale"] .pb-8 { padding-bottom: 2rem; }
-[data-route="point-of-sale"] .pr-16 { padding-right: 4rem; }
-[data-route="point-of-sale"] .pl-16 { padding-left: 4rem; }
-[data-route="point-of-sale"] .pt-16 { padding-top: 4rem; }
-[data-route="point-of-sale"] .pb-16 { padding-bottom: 4rem; }
-[data-route="point-of-sale"] .w-full { width: 100%; }
-[data-route="point-of-sale"] .h-full { height: 100%; }
-[data-route="point-of-sale"] .w-quarter { width: 25%; }
-[data-route="point-of-sale"] .w-half { width: 50%; }
-[data-route="point-of-sale"] .w-66 { width: 66.66%; }
-[data-route="point-of-sale"] .w-33 { width: 33.33%; }
-[data-route="point-of-sale"] .w-60 { width: 60%; }
-[data-route="point-of-sale"] .w-40 { width: 40%; }
-[data-route="point-of-sale"] .w-fit { width: fit-content; }
-[data-route="point-of-sale"] .w-6 { width: 2rem; }
-[data-route="point-of-sale"] .h-6 { min-height: 2rem; height: 2rem; }
-[data-route="point-of-sale"] .w-8 { width: 2.5rem; }
-[data-route="point-of-sale"] .h-8 { min-height: 2.5rem; height: 2.5rem; }
-[data-route="point-of-sale"] .w-10 { width: 3rem; }
-[data-route="point-of-sale"] .h-10 { min-height:3rem; height: 3rem; }
-[data-route="point-of-sale"] .h-12 { min-height: 3.3rem; height: 3.3rem; }
-[data-route="point-of-sale"] .w-12 { width: 3.3rem; }
-[data-route="point-of-sale"] .h-14 { min-height: 4.2rem; height: 4.2rem; }
-[data-route="point-of-sale"] .h-16 { min-height: 4.6rem; height: 4.6rem; }
-[data-route="point-of-sale"] .h-18 { min-height: 5rem; height: 5rem; }
-[data-route="point-of-sale"] .w-18 { width: 5.4rem; }
-[data-route="point-of-sale"] .w-24 { width: 7.2rem; }
-[data-route="point-of-sale"] .w-26 { width: 8.4rem; }
-[data-route="point-of-sale"] .h-24 { min-height: 7.2rem; height: 7.2rem; }
-[data-route="point-of-sale"] .h-32 { min-height: 9.6rem; height: 9.6rem; }
-[data-route="point-of-sale"] .w-46 { width: 15rem; }
-[data-route="point-of-sale"] .h-46 { min-height:15rem; height: 15rem; }
-[data-route="point-of-sale"] .h-100 { height: 100vh; }
-[data-route="point-of-sale"] .mx-h-70 { max-height: 67rem; }
-[data-route="point-of-sale"] .border-grey-300 { border-color: #e2e8f0; }
-[data-route="point-of-sale"] .border-grey { border: 1px solid #d1d8dd; }
-[data-route="point-of-sale"] .border-white { border: 1px solid #fff; }
-[data-route="point-of-sale"] .border-b-grey { border-bottom: 1px solid #d1d8dd; }
-[data-route="point-of-sale"] .border-t-grey { border-top: 1px solid #d1d8dd; }
-[data-route="point-of-sale"] .border-r-grey { border-right: 1px solid #d1d8dd; }
-[data-route="point-of-sale"] .text-dark-grey { color: #5f5f5f; }
-[data-route="point-of-sale"] .text-grey { color: #8d99a6; }
-[data-route="point-of-sale"] .text-grey-100 { color: #d1d8dd; }
-[data-route="point-of-sale"] .text-grey-200 { color: #a0aec0; }
-[data-route="point-of-sale"] .bg-green-200 { background-color: #c6f6d5; }
-[data-route="point-of-sale"] .text-bold { font-weight: bold; }
-[data-route="point-of-sale"] .italic { font-style: italic; }
-[data-route="point-of-sale"] .font-weight-450 { font-weight: 450; }
-[data-route="point-of-sale"] .justify-around { justify-content: space-around; }
-[data-route="point-of-sale"] .justify-between { justify-content: space-between; }
-[data-route="point-of-sale"] .justify-center { justify-content: center; }
-[data-route="point-of-sale"] .justify-end { justify-content: flex-end; }
-[data-route="point-of-sale"] .bg-white { background-color: white; }
-[data-route="point-of-sale"] .bg-light-grey { background-color: #f0f4f7; }
-[data-route="point-of-sale"] .bg-grey-100 { background-color: #f7fafc; }
-[data-route="point-of-sale"] .bg-grey-200 { background-color: #edf2f7; }
-[data-route="point-of-sale"] .bg-grey { background-color: #f4f5f6; }
-[data-route="point-of-sale"] .text-center { text-align: center; }
-[data-route="point-of-sale"] .text-right { text-align: right; }
-[data-route="point-of-sale"] .text-sm { font-size: 1rem; }
-[data-route="point-of-sale"] .text-md-0 { font-size: 1.25rem; }
-[data-route="point-of-sale"] .text-md { font-size: 1.4rem; }
-[data-route="point-of-sale"] .text-lg { font-size: 1.6rem; }
-[data-route="point-of-sale"] .text-xl { font-size: 2.2rem; }
-[data-route="point-of-sale"] .text-2xl { font-size: 2.8rem; }
-[data-route="point-of-sale"] .text-2-5xl { font-size: 3rem; }
-[data-route="point-of-sale"] .text-3xl { font-size: 3.8rem; }
-[data-route="point-of-sale"] .text-6xl { font-size: 4.8rem; }
-[data-route="point-of-sale"] .line-through { text-decoration: line-through; }
-[data-route="point-of-sale"] .text-primary { color: #5e64ff; }
-[data-route="point-of-sale"] .text-white { color: #fff; }
-[data-route="point-of-sale"] .text-green-500 { color: #48bb78; }
-[data-route="point-of-sale"] .bg-primary { background-color: #5e64ff; }
-[data-route="point-of-sale"] .border-primary { border-color: #5e64ff; }
-[data-route="point-of-sale"] .text-danger { color: #e53e3e; }
-[data-route="point-of-sale"] .scroll-x { overflow-x: scroll;overflow-y: hidden; }
-[data-route="point-of-sale"] .scroll-y { overflow-y: scroll;overflow-x: hidden; }
-[data-route="point-of-sale"] .overflow-hidden { overflow: hidden; }
-[data-route="point-of-sale"] .whitespace-nowrap { white-space: nowrap; }
-[data-route="point-of-sale"] .sticky { position: sticky;  top: -1px; }
-[data-route="point-of-sale"] .bg-white { background-color: #fff; }
-[data-route="point-of-sale"] .bg-selected { background-color: #fffdf4; }
-[data-route="point-of-sale"] .border-dashed { border-width:1px; border-style: dashed; }
-[data-route="point-of-sale"] .z-100 { z-index: 100; }
-
-[data-route="point-of-sale"] .frappe-control { margin: 0 !important;  width: 100%; }
-[data-route="point-of-sale"] .form-control { font-size: 12px; }
-[data-route="point-of-sale"] .form-group { margin: 0 !important; }
-[data-route="point-of-sale"] .pointer { cursor: pointer; }
-[data-route="point-of-sale"] .no-select { user-select: none; }
-[data-route="point-of-sale"] .item-wrapper:hover { transform: scale(1.02, 1.02); }
-[data-route="point-of-sale"] .hover-underline:hover { text-decoration: underline; }
-[data-route="point-of-sale"] .item-wrapper { transition: scale 0.2s ease-in-out; }
-[data-route="point-of-sale"] .cart-items-section .cart-item-wrapper:not(:first-child) { border-top: none; }
-[data-route="point-of-sale"] .customer-transactions .invoice-wrapper:not(:first-child) { border-top: none; }
-
-[data-route="point-of-sale"] .payment-summary-wrapper:last-child { border-bottom: none; }
-[data-route="point-of-sale"] .item-summary-wrapper:last-child { border-bottom: none; }
-[data-route="point-of-sale"] .total-summary-wrapper:last-child { border-bottom: none; }
-[data-route="point-of-sale"] .invoices-container .invoice-wrapper:last-child { border-bottom: none; }
-[data-route="point-of-sale"] .new-btn { background-color: #5e64ff; color: white; border: none;}
-[data-route="point-of-sale"] .summary-btns:last-child { margin-right: 0px; }
-[data-route="point-of-sale"] ::-webkit-scrollbar { width: 1px }
-
-[data-route="point-of-sale"] .indicator.grey::before { background-color: #8d99a6; }
\ No newline at end of file
diff --git a/erpnext/public/images/erpnext-logo.svg b/erpnext/public/images/erpnext-logo.svg
new file mode 100644
index 0000000..a3ac3bb
--- /dev/null
+++ b/erpnext/public/images/erpnext-logo.svg
@@ -0,0 +1,5 @@
+<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0 12C0 5.37258 5.37258 0 12 0H88C94.6274 0 100 5.37258 100 12V88C100 94.6274 94.6274 100 88 100H12C5.37258 100 0 94.6274 0 88V12Z" fill="#0089FF"/>
+<path d="M65.7097 32.9462H67.3871V24H33V32.9462H43.9032H65.7097Z" fill="white"/>
+<path d="M43.9032 66.2151V53.914H65.7097V44.9677H43.9032H33V75.1613H67.6667V66.2151H43.9032Z" fill="white"/>
+</svg>
\ No newline at end of file
diff --git a/erpnext/public/images/erpnext_logo.svg b/erpnext/public/images/erpnext_logo.svg
new file mode 100644
index 0000000..af3a849
--- /dev/null
+++ b/erpnext/public/images/erpnext_logo.svg
@@ -0,0 +1,4 @@
+<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
+	<path d="M5.45455 0H30.5454C33.5673 0 36 2.43272 36 5.45454V30.5455C36 33.5673 33.5673 36 30.5454 36H5.45455C2.43276 36 0 33.5673 0 30.5455V5.45454C0 2.43272 2.43276 0 5.45455 0Z" fill="#2996F1"/>
+	<path d="M12.277 8.99994C12.1637 8.99994 12.0532 9.01145 11.9465 9.03318C11.8398 9.0549 11.7368 9.08691 11.6389 9.12821C11.5899 9.14885 11.5423 9.17189 11.4959 9.19703C11.4031 9.24729 11.3158 9.30622 11.2351 9.37281C10.8717 9.67247 10.6406 10.1264 10.6406 10.6363V10.736V25.2641V25.3636C10.6406 26.2701 11.3704 26.9999 12.277 26.9999H23.7215C24.6281 26.9999 25.3579 26.2701 25.3579 25.3636V25.2641C25.3579 24.3575 24.6281 23.6277 23.7215 23.6277H14.0131V19.5519H21.2316C22.1381 19.5519 22.868 18.8221 22.868 17.9156V17.8161C22.868 16.9095 22.1381 16.1797 21.2316 16.1797H14.0131V12.3724H23.7215C24.6281 12.3724 25.3579 11.6426 25.3579 10.736V10.6363C25.3579 9.72976 24.6281 8.99994 23.7215 8.99994H12.277Z" fill="white"/>
+</svg>
\ No newline at end of file
diff --git a/erpnext/public/js/call_popup/call_popup.js b/erpnext/public/js/call_popup/call_popup.js
index aeb3b38..be1745e 100644
--- a/erpnext/public/js/call_popup/call_popup.js
+++ b/erpnext/public/js/call_popup/call_popup.js
@@ -85,7 +85,7 @@
 								<br>
 								<a
 									class="text-small text-muted"
-									href="#Form/Call Log/${this.call_log.name}">
+									href="/app/call-log/${this.call_log.name}">
 									${__('View call log')}
 								</a>
 							`,
@@ -167,7 +167,7 @@
 				const issue_field = this.dialog.get_field("last_issue");
 				issue_field.set_value(issue.subject);
 				issue_field.$wrapper.append(`
-					<a class="text-medium" href="#List/Issue?customer=${issue.customer}">
+					<a class="text-medium" href="/app/issue?customer=${issue.customer}">
 						${__('View all issues from {0}', [issue.customer])}
 					</a>
 				`);
diff --git a/erpnext/public/js/communication.js b/erpnext/public/js/communication.js
index 26e5ab8..7ce8b09 100644
--- a/erpnext/public/js/communication.js
+++ b/erpnext/public/js/communication.js
@@ -84,7 +84,7 @@
 						frm.reload_doc();
 						frappe.show_alert({
 							message: __("Opportunity {0} created",
-								['<a href="#Form/Opportunity/'+r.message+'">' + r.message + '</a>']),
+								['<a href="/app/opportunity/'+r.message+'">' + r.message + '</a>']),
 							indicator: 'green'
 						});
 					}
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index f144c29..12f178c 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -440,9 +440,10 @@
 				method: "erpnext.controllers.accounts_controller.get_default_taxes_and_charges",
 				args: {
 					"master_doctype": taxes_and_charges_field.options,
-					"tax_template": me.frm.doc.taxes_and_charges,
+					"tax_template": me.frm.doc.taxes_and_charges || "",
 					"company": me.frm.doc.company
 				},
+				debounce: 2000,
 				callback: function(r) {
 					if(!r.exc && r.message) {
 						frappe.run_serially([
diff --git a/erpnext/public/js/education/assessment_result_tool.html b/erpnext/public/js/education/assessment_result_tool.html
index 9fc17f7..b591010 100644
--- a/erpnext/public/js/education/assessment_result_tool.html
+++ b/erpnext/public/js/education/assessment_result_tool.html
@@ -19,7 +19,7 @@
 	</thead>
 	<tbody>
 		{% for s in students %}
-		<tr 
+		<tr
 			{% if(s.assessment_details && s.docstatus && s.docstatus == 1) { %} class="text-muted" {% } %}
 			data-student="{{s.student}}">
 
@@ -29,7 +29,7 @@
 			<td>
 				<span data-student="{{s.student}}" data-criteria="{{c.assessment_criteria}}" class="student-result-grade badge" >
 					{% if(s.assessment_details) { %}
-						{{s.assessment_details[c.assessment_criteria][1]}} 
+						{{s.assessment_details[c.assessment_criteria][1]}}
 					{% } %}
 				</span>
 				<input type="number" class="student-result-data" style="width:70%; float:right;"
@@ -61,7 +61,7 @@
 				{% } %}
 				</span>
 				<span data-student="{{s.student}}" class="total-result-link" style="width: 10%; display:{% if(!s.assessment_details) { %}None{% } %}; float:right;">
-					<a class="btn-open no-decoration" title="Open Link" href="#Form/Assessment Result/{% if(s.assessment_details) { %}{{s.name}}{% } %}">
+					<a class="btn-open no-decoration" title="Open Link" href="/app/Form/Assessment Result/{% if(s.assessment_details) { %}{{s.name}}{% } %}">
 						<i class="octicon octicon-arrow-right"></i>
 					</a>
 				</span>
diff --git a/erpnext/public/js/financial_statements.js b/erpnext/public/js/financial_statements.js
index 459c01b..b2f7afe 100644
--- a/erpnext/public/js/financial_statements.js
+++ b/erpnext/public/js/financial_statements.js
@@ -57,18 +57,22 @@
 			});
 		});
 
-		report.page.add_inner_button(__("Balance Sheet"), function() {
+		const views_menu = report.page.add_custom_button_group(__('Financial Statements'));
+
+		report.page.add_custom_menu_item(views_menu, __("Balance Sheet"), function() {
 			var filters = report.get_values();
 			frappe.set_route('query-report', 'Balance Sheet', {company: filters.company});
-		}, __('Financial Statements'));
-		report.page.add_inner_button(__("Profit and Loss"), function() {
+		});
+
+		report.page.add_custom_menu_item(views_menu, __("Profit and Loss"), function() {
 			var filters = report.get_values();
 			frappe.set_route('query-report', 'Profit and Loss Statement', {company: filters.company});
-		}, __('Financial Statements'));
-		report.page.add_inner_button(__("Cash Flow Statement"), function() {
+		});
+
+		report.page.add_custom_menu_item(views_menu, __("Cash Flow Statement"), function() {
 			var filters = report.get_values();
 			frappe.set_route('query-report', 'Cash Flow', {company: filters.company});
-		}, __('Financial Statements'));
+		});
 	}
 };
 
diff --git a/erpnext/public/js/help_links.js b/erpnext/public/js/help_links.js
index 66ff464..472c537 100644
--- a/erpnext/public/js/help_links.js
+++ b/erpnext/public/js/help_links.js
@@ -2,13 +2,13 @@
 
 const docsUrl = 'https://erpnext.com/docs/';
 
-frappe.help.help_links['Form/Rename Tool'] = [
+frappe.help.help_links['rename tool'] = [
 	{ label: 'Bulk Rename', url: docsUrl + 'user/manual/en/setting-up/data/bulk-rename' },
 ]
 
 //Setup
 
-frappe.help.help_links['List/User'] = [
+frappe.help.help_links['user'] = [
 	{ label: 'New User', url: docsUrl + 'user/manual/en/setting-up/users-and-permissions/adding-users' },
 	{ label: 'Rename User', url: docsUrl + 'user/manual/en/setting-up/articles/rename-user' },
 ]
@@ -21,7 +21,7 @@
 	{ label: 'Password', url: docsUrl + 'user/manual/en/setting-up/articles/change-password' },
 ]
 
-frappe.help.help_links['Form/System Settings'] = [
+frappe.help.help_links['system-settings'] = [
 	{ label: 'Naming Series', url: docsUrl + 'user/manual/en/setting-up/settings/system-settings' },
 ]
 
@@ -30,64 +30,60 @@
 	{ label: 'Overwriting Data from Data Import Tool', url: docsUrl + 'user/manual/en/setting-up/articles/overwriting-data-from-data-import-tool' },
 ]
 
-frappe.help.help_links['module_setup'] = [
-	{ label: 'Role Permissions Manager', url: docsUrl + 'user/manual/en/setting-up/users-and-permissions/role-based-permissions' },
-]
-
-frappe.help.help_links['Form/Naming Series'] = [
+frappe.help.help_links['naming-series'] = [
 	{ label: 'Naming Series', url: docsUrl + 'user/manual/en/setting-up/settings/naming-series' },
 	{ label: 'Setting the Current Value for Naming Series', url: docsUrl + 'user/manual/en/setting-up/articles/naming-series-current-value' },
 ]
 
-frappe.help.help_links['Form/Global Defaults'] = [
+frappe.help.help_links['global-defaults'] = [
 	{ label: 'Global Settings', url: docsUrl + 'user/manual/en/setting-up/settings/global-defaults' },
 ]
 
-frappe.help.help_links['Form/Email Digest'] = [
+frappe.help.help_links['email-digest'] = [
 	{ label: 'Email Digest', url: docsUrl + 'user/manual/en/setting-up/email/email-digest' },
 ]
 
-frappe.help.help_links['List/Print Heading'] = [
+frappe.help.help_links['print-heading'] = [
 	{ label: 'Print Heading', url: docsUrl + 'user/manual/en/setting-up/print/print-headings' },
 ]
 
-frappe.help.help_links['List/Letter Head'] = [
+frappe.help.help_links['letter-head'] = [
 	{ label: 'Letter Head', url: docsUrl + 'user/manual/en/setting-up/print/letter-head' },
 ]
 
-frappe.help.help_links['List/Address Template'] = [
+frappe.help.help_links['address-template'] = [
 	{ label: 'Address Template', url: docsUrl + 'user/manual/en/setting-up/print/address-template' },
 ]
 
-frappe.help.help_links['List/Terms and Conditions'] = [
+frappe.help.help_links['terms-and-conditions'] = [
 	{ label: 'Terms and Conditions', url: docsUrl + 'user/manual/en/setting-up/print/terms-and-conditions' },
 ]
 
-frappe.help.help_links['List/Cheque Print Template'] = [
+frappe.help.help_links['cheque-print-template'] = [
 	{ label: 'Cheque Print Template', url: docsUrl + 'user/manual/en/setting-up/print/cheque-print-template' },
 ]
 
-frappe.help.help_links['List/Email Account'] = [
+frappe.help.help_links['email-account'] = [
 	{ label: 'Email Account', url: docsUrl + 'user/manual/en/setting-up/email/email-account' },
 ]
 
-frappe.help.help_links['List/Notification'] = [
+frappe.help.help_links['notification'] = [
 	{ label: 'Notification', url: docsUrl + 'user/manual/en/setting-up/email/notifications' },
 ]
 
-frappe.help.help_links['Form/Notification'] = [
+frappe.help.help_links['notification'] = [
 	{ label: 'Notification', url: docsUrl + 'user/manual/en/setting-up/email/notifications' },
 ]
 
-frappe.help.help_links['List/Email Digest'] = [
+frappe.help.help_links['email-digest'] = [
 	{ label: 'Email Digest', url: docsUrl + 'user/manual/en/setting-up/email/email-digest' },
 ]
 
-frappe.help.help_links['List/Auto Email Report'] = [
+frappe.help.help_links['auto-email-report'] = [
 	{ label: 'Auto Email Reports', url: docsUrl + 'user/manual/en/setting-up/email/email-reports' },
 ]
 
-frappe.help.help_links['Form/Print Settings'] = [
+frappe.help.help_links['print-settings'] = [
 	{ label: 'Print Settings', url: docsUrl + 'user/manual/en/setting-up/print/print-settings' },
 ]
 
@@ -95,66 +91,60 @@
 	{ label: 'Print Format Builder', url: docsUrl + 'user/manual/en/setting-up/print/print-settings' },
 ]
 
-frappe.help.help_links['List/Print Heading'] = [
+frappe.help.help_links['print-heading'] = [
 	{ label: 'Print Heading', url: docsUrl + 'user/manual/en/setting-up/print/print-headings' },
 ]
 
 //setup-integrations
 
-frappe.help.help_links['Form/PayPal Settings'] = [
+frappe.help.help_links['paypal-settings'] = [
 	{ label: 'PayPal Settings', url: docsUrl + 'user/manual/en/setting-up/integrations/paypal-integration' },
 ]
 
-frappe.help.help_links['Form/Razorpay Settings'] = [
+frappe.help.help_links['razorpay-settings'] = [
 	{ label: 'Razorpay Settings', url: docsUrl + 'user/manual/en/setting-up/integrations/razorpay-integration' },
 ]
 
-frappe.help.help_links['Form/Dropbox Settings'] = [
+frappe.help.help_links['dropbox-settings'] = [
 	{ label: 'Dropbox Settings', url: docsUrl + 'user/manual/en/setting-up/integrations/dropbox-backup' },
 ]
 
-frappe.help.help_links['Form/LDAP Settings'] = [
+frappe.help.help_links['ldap-settings'] = [
 	{ label: 'LDAP Settings', url: docsUrl + 'user/manual/en/setting-up/integrations/ldap-integration' },
 ]
 
-frappe.help.help_links['Form/Stripe Settings'] = [
+frappe.help.help_links['stripe-settings'] = [
 	{ label: 'Stripe Settings', url: docsUrl + 'user/manual/en/setting-up/integrations/stripe-integration' },
 ]
 
 //Sales
 
-frappe.help.help_links['Form/Quotation'] = [
+frappe.help.help_links['quotation'] = [
 	{ label: 'Quotation', url: docsUrl + 'user/manual/en/selling/quotation' },
 	{ label: 'Applying Discount', url: docsUrl + 'user/manual/en/selling/articles/applying-discount' },
 	{ label: 'Sales Person', url: docsUrl + 'user/manual/en/selling/articles/sales-persons-in-the-sales-transactions' },
 	{ label: 'Applying Margin', url: docsUrl + 'user/manual/en/selling/articles/adding-margin' },
 ]
 
-frappe.help.help_links['List/Customer'] = [
+frappe.help.help_links['customer'] = [
 	{ label: 'Customer', url: docsUrl + 'user/manual/en/CRM/customer' },
 	{ label: 'Credit Limit', url: docsUrl + 'user/manual/en/accounts/credit-limit' },
 ]
 
-frappe.help.help_links['Form/Customer'] = [
+frappe.help.help_links['customer'] = [
 	{ label: 'Customer', url: docsUrl + 'user/manual/en/CRM/customer' },
 	{ label: 'Credit Limit', url: docsUrl + 'user/manual/en/accounts/credit-limit' },
 ]
 
-frappe.help.help_links['List/Sales Taxes and Charges Template'] = [
+frappe.help.help_links['sales-taxes-and-charges-template'] = [
 	{ label: 'Setting Up Taxes', url: docsUrl + 'user/manual/en/setting-up/setting-up-taxes' },
 ]
 
-frappe.help.help_links['Form/Sales Taxes and Charges Template'] = [
+frappe.help.help_links['sales-taxes-and-charges-template'] = [
 	{ label: 'Setting Up Taxes', url: docsUrl + 'user/manual/en/setting-up/setting-up-taxes' },
 ]
 
-frappe.help.help_links['List/Sales Order'] = [
-	{ label: 'Sales Order', url: docsUrl + 'user/manual/en/selling/sales-order' },
-	{ label: 'Recurring Sales Order', url: docsUrl + 'user/manual/en/accounts/recurring-orders-and-invoices' },
-	{ label: 'Applying Discount', url: docsUrl + 'user/manual/en/selling/articles/applying-discount' },
-]
-
-frappe.help.help_links['Form/Sales Order'] = [
+frappe.help.help_links['sales-order'] = [
 	{ label: 'Sales Order', url: docsUrl + 'user/manual/en/selling/sales-order' },
 	{ label: 'Recurring Sales Order', url: docsUrl + 'user/manual/en/accounts/recurring-orders-and-invoices' },
 	{ label: 'Applying Discount', url: docsUrl + 'user/manual/en/selling/articles/applying-discount' },
@@ -164,43 +154,34 @@
 	{ label: 'Applying Margin', url: docsUrl + 'user/manual/en/selling/articles/adding-margin' },
 ]
 
-frappe.help.help_links['Form/Product Bundle'] = [
+frappe.help.help_links['product-bundle'] = [
 	{ label: 'Product Bundle', url: docsUrl + 'user/manual/en/selling/setup/product-bundle' },
 ]
 
-frappe.help.help_links['Form/Selling Settings'] = [
+frappe.help.help_links['selling-settings'] = [
 	{ label: 'Selling Settings', url: docsUrl + 'user/manual/en/selling/setup/selling-settings' },
 ]
 
 //Buying
 
-frappe.help.help_links['List/Supplier'] = [
+frappe.help.help_links['supplier'] = [
 	{ label: 'Supplier', url: docsUrl + 'user/manual/en/buying/supplier' },
 ]
 
-frappe.help.help_links['Form/Supplier'] = [
-	{ label: 'Supplier', url: docsUrl + 'user/manual/en/buying/supplier' },
-]
-
-frappe.help.help_links['Form/Request for Quotation'] = [
+frappe.help.help_links['request-for-quotation'] = [
 	{ label: 'Request for Quotation', url: docsUrl + 'user/manual/en/buying/request-for-quotation' },
 	{ label: 'RFQ Video', url: docsUrl + 'user/videos/learn/request-for-quotation.html' },
 ]
 
-frappe.help.help_links['Form/Supplier Quotation'] = [
+frappe.help.help_links['supplier-quotation'] = [
 	{ label: 'Supplier Quotation', url: docsUrl + 'user/manual/en/buying/supplier-quotation' },
 ]
 
-frappe.help.help_links['Form/Buying Settings'] = [
+frappe.help.help_links['buying-settings'] = [
 	{ label: 'Buying Settings', url: docsUrl + 'user/manual/en/buying/setup/buying-settings' },
 ]
 
-frappe.help.help_links['List/Purchase Order'] = [
-	{ label: 'Purchase Order', url: docsUrl + 'user/manual/en/buying/purchase-order' },
-	{ label: 'Recurring Purchase Order', url: docsUrl + 'user/manual/en/accounts/recurring-orders-and-invoices' },
-]
-
-frappe.help.help_links['Form/Purchase Order'] = [
+frappe.help.help_links['purchase-order'] = [
 	{ label: 'Purchase Order', url: docsUrl + 'user/manual/en/buying/purchase-order' },
 	{ label: 'Item UoM', url: docsUrl + 'user/manual/en/buying/articles/purchasing-in-different-unit' },
 	{ label: 'Supplier Item Code', url: docsUrl + 'user/manual/en/buying/articles/maintaining-suppliers-part-no-in-item' },
@@ -208,44 +189,44 @@
 	{ label: 'Subcontracting', url: docsUrl + 'user/manual/en/manufacturing/subcontracting' },
 ]
 
-frappe.help.help_links['List/Purchase Taxes and Charges Template'] = [
+frappe.help.help_links['purchase-taxes-and-charges-template'] = [
 	{ label: 'Setting Up Taxes', url: docsUrl + 'user/manual/en/setting-up/setting-up-taxes' },
 ]
 
-frappe.help.help_links['List/POS Profile'] = [
+frappe.help.help_links['pos-profile'] = [
 	{ label: 'POS Profile', url: docsUrl + 'user/manual/en/setting-up/pos-setting' },
 ]
 
-frappe.help.help_links['List/Price List'] = [
+frappe.help.help_links['price-list'] = [
 	{ label: 'Price List', url: docsUrl + 'user/manual/en/setting-up/price-lists' },
 ]
 
-frappe.help.help_links['List/Authorization Rule'] = [
+frappe.help.help_links['authorization-rule'] = [
 	{ label: 'Authorization Rule', url: docsUrl + 'user/manual/en/setting-up/authorization-rule' },
 ]
 
-frappe.help.help_links['Form/SMS Settings'] = [
+frappe.help.help_links['sms-settings'] = [
 	{ label: 'SMS Settings', url: docsUrl + 'user/manual/en/setting-up/sms-setting' },
 ]
 
-frappe.help.help_links['List/Stock Reconciliation'] = [
+frappe.help.help_links['stock-reconciliation'] = [
 	{ label: 'Stock Reconciliation', url: docsUrl + 'user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item' },
 ]
 
-frappe.help.help_links['Tree/Territory'] = [
+frappe.help.help_links['territory/view/tree'] = [
 	{ label: 'Territory', url: docsUrl + 'user/manual/en/setting-up/territory' },
 ]
 
-frappe.help.help_links['Form/Dropbox Backup'] = [
+frappe.help.help_links['dropbox-backup'] = [
 	{ label: 'Dropbox Backup', url: docsUrl + 'user/manual/en/setting-up/third-party-backups' },
 	{ label: 'Setting Up Dropbox Backup', url: docsUrl + 'user/manual/en/setting-up/articles/setting-up-dropbox-backups' },
 ]
 
-frappe.help.help_links['List/Workflow'] = [
+frappe.help.help_links['workflow'] = [
 	{ label: 'Workflow', url: docsUrl + 'user/manual/en/setting-up/workflows' },
 ]
 
-frappe.help.help_links['List/Company'] = [
+frappe.help.help_links['company'] = [
 	{ label: 'Company', url: docsUrl + 'user/manual/en/setting-up/company-setup' },
 	{ label: 'Managing Multiple Companies', url: docsUrl + 'user/manual/en/setting-up/articles/managing-multiple-companies' },
 	{ label: 'Delete All Related Transactions for a Company', url: docsUrl + 'user/manual/en/setting-up/articles/delete-a-company-and-all-related-transactions' },
@@ -253,25 +234,25 @@
 
 //Accounts
 
-frappe.help.help_links['modules/Accounts'] = [
+frappe.help.help_links['accounts'] = [
 	{ label: 'Introduction to Accounts', url: docsUrl + 'user/manual/en/accounts/' },
 	{ label: 'Chart of Accounts', url: docsUrl + 'user/manual/en/accounts/chart-of-accounts.html' },
 	{ label: 'Multi Currency Accounting', url: docsUrl + 'user/manual/en/accounts/multi-currency-accounting' },
 ]
 
-frappe.help.help_links['Tree/Account'] = [
+frappe.help.help_links['account/view/tree'] = [
 	{ label: 'Chart of Accounts', url: docsUrl + 'user/manual/en/accounts/chart-of-accounts' },
 	{ label: 'Managing Tree Mastes', url: docsUrl + 'user/manual/en/setting-up/articles/managing-tree-structure-masters' },
 ]
 
-frappe.help.help_links['Form/Sales Invoice'] = [
+frappe.help.help_links['sales-invoice'] = [
 	{ label: 'Sales Invoice', url: docsUrl + 'user/manual/en/accounts/sales-invoice' },
 	{ label: 'Accounts Opening Balance', url: docsUrl + 'user/manual/en/accounts/opening-accounts' },
 	{ label: 'Sales Return', url: docsUrl + 'user/manual/en/stock/sales-return' },
 	{ label: 'Recurring Sales Invoice', url: docsUrl + 'user/manual/en/accounts/recurring-orders-and-invoices' },
 ]
 
-frappe.help.help_links['List/Sales Invoice'] = [
+frappe.help.help_links['sales-invoice'] = [
 	{ label: 'Sales Invoice', url: docsUrl + 'user/manual/en/accounts/sales-invoice' },
 	{ label: 'Accounts Opening Balance', url: docsUrl + 'user/manual/en/accounts/opening-accounts' },
 	{ label: 'Sales Return', url: docsUrl + 'user/manual/en/stock/sales-return' },
@@ -282,43 +263,43 @@
 	{ label: 'Point of Sale Invoice', url: docsUrl + 'user/manual/en/accounts/point-of-sale-pos-invoice' },
 ]
 
-frappe.help.help_links['List/POS Profile'] = [
+frappe.help.help_links['pos-profile'] = [
 	{ label: 'Point of Sale Profile', url: docsUrl + 'user/manual/en/setting-up/pos-setting' },
 ]
 
-frappe.help.help_links['List/Purchase Invoice'] = [
+frappe.help.help_links['purchase-invoice'] = [
 	{ label: 'Purchase Invoice', url: docsUrl + 'user/manual/en/accounts/purchase-invoice' },
 	{ label: 'Accounts Opening Balance', url: docsUrl + 'user/manual/en/accounts/opening-accounts' },
 	{ label: 'Recurring Purchase Invoice', url: docsUrl + 'user/manual/en/accounts/recurring-orders-and-invoices' },
 ]
 
-frappe.help.help_links['List/Journal Entry'] = [
+frappe.help.help_links['journal-entry'] = [
 	{ label: 'Journal Entry', url: docsUrl + 'user/manual/en/accounts/journal-entry' },
 	{ label: 'Advance Payment Entry', url: docsUrl + 'user/manual/en/accounts/advance-payment-entry' },
 	{ label: 'Accounts Opening Balance', url: docsUrl + 'user/manual/en/accounts/opening-accounts' },
 ]
 
-frappe.help.help_links['List/Payment Entry'] = [
+frappe.help.help_links['payment-entry'] = [
 	{ label: 'Payment Entry', url: docsUrl + 'user/manual/en/accounts/payment-entry' },
 ]
 
-frappe.help.help_links['List/Payment Request'] = [
+frappe.help.help_links['payment-request'] = [
 	{ label: 'Payment Request', url: docsUrl + 'user/manual/en/accounts/payment-request' },
 ]
 
-frappe.help.help_links['List/Asset'] = [
+frappe.help.help_links['asset'] = [
 	{ label: 'Managing Fixed Assets', url: docsUrl + 'user/manual/en/accounts/managing-fixed-assets' },
 ]
 
-frappe.help.help_links['List/Asset Category'] = [
+frappe.help.help_links['asset-category'] = [
 	{ label: 'Asset Category', url: docsUrl + 'user/manual/en/accounts/managing-fixed-assets' },
 ]
 
-frappe.help.help_links['Tree/Cost Center'] = [
+frappe.help.help_links['cost-center/view/tree'] = [
 	{ label: 'Budgeting', url: docsUrl + 'user/manual/en/accounts/budgeting' },
 ]
 
-frappe.help.help_links['List/Item'] = [
+frappe.help.help_links['item'] = [
 	{ label: 'Item', url: docsUrl + 'user/manual/en/stock/item' },
 	{ label: 'Item Price', url: docsUrl + 'user/manual/en/stock/item/item-price' },
 	{ label: 'Barcode', url: docsUrl + 'user/manual/en/stock/articles/track-items-using-barcode' },
@@ -329,61 +310,42 @@
 	{ label: 'Item Valuation', url: docsUrl + 'user/manual/en/stock/item/item-valuation-fifo-and-moving-average' },
 ]
 
-frappe.help.help_links['Form/Item'] = [
-	{ label: 'Item', url: docsUrl + 'user/manual/en/stock/item' },
-	{ label: 'Item Price', url: docsUrl + 'user/manual/en/stock/item/item-price' },
-	{ label: 'Barcode', url: docsUrl + 'user/manual/en/stock/articles/track-items-using-barcode' },
-	{ label: 'Item Wise Taxation', url: docsUrl + 'user/manual/en/accounts/item-wise-taxation' },
-	{ label: 'Managing Fixed Assets', url: docsUrl + 'user/manual/en/accounts/managing-fixed-assets' },
-	{ label: 'Item Codification', url: docsUrl + 'user/manual/en/stock/item/item-codification' },
-	{ label: 'Item Variants', url: docsUrl + 'user/manual/en/stock/item/item-variants' },
-	{ label: 'Item Valuation', url: docsUrl + 'user/manual/en/stock/item/item-valuation-fifo-and-moving-average' },
-]
-
-frappe.help.help_links['List/Purchase Receipt'] = [
+frappe.help.help_links['purchase-receipt'] = [
 	{ label: 'Purchase Receipt', url: docsUrl + 'user/manual/en/stock/purchase-receipt' },
 	{ label: 'Barcode', url: docsUrl + 'user/manual/en/stock/articles/track-items-using-barcode' },
 ]
 
-frappe.help.help_links['List/Delivery Note'] = [
+frappe.help.help_links['delivery-note'] = [
 	{ label: 'Delivery Note', url: docsUrl + 'user/manual/en/stock/delivery-note' },
 	{ label: 'Barcode', url: docsUrl + 'user/manual/en/stock/articles/track-items-using-barcode' },
 	{ label: 'Sales Return', url: docsUrl + 'user/manual/en/stock/sales-return' },
 ]
 
-frappe.help.help_links['Form/Delivery Note'] = [
+frappe.help.help_links['delivery-note'] = [
 	{ label: 'Delivery Note', url: docsUrl + 'user/manual/en/stock/delivery-note' },
 	{ label: 'Sales Return', url: docsUrl + 'user/manual/en/stock/sales-return' },
 	{ label: 'Barcode', url: docsUrl + 'user/manual/en/stock/articles/track-items-using-barcode' },
 	{ label: 'Subcontracting', url: docsUrl + 'user/manual/en/manufacturing/subcontracting' },
 ]
 
-frappe.help.help_links['List/Installation Note'] = [
+frappe.help.help_links['installation-note'] = [
 	{ label: 'Installation Note', url: docsUrl + 'user/manual/en/stock/installation-note' },
 ]
 
 
-frappe.help.help_links['Tree'] = [
-	{ label: 'Managing Tree Structure Masters', url: docsUrl + 'user/manual/en/setting-up/articles/managing-tree-structure-masters' },
-]
 
-frappe.help.help_links['List/Budget'] = [
+frappe.help.help_links['budget'] = [
 	{ label: 'Budgeting', url: docsUrl + 'user/manual/en/accounts/budgeting' },
 ]
 
 //Stock
 
-frappe.help.help_links['List/Material Request'] = [
+frappe.help.help_links['material-request'] = [
 	{ label: 'Material Request', url: docsUrl + 'user/manual/en/stock/material-request' },
 	{ label: 'Auto-creation of Material Request', url: docsUrl + 'user/manual/en/stock/articles/auto-creation-of-material-request' },
 ]
 
-frappe.help.help_links['Form/Material Request'] = [
-	{ label: 'Material Request', url: docsUrl + 'user/manual/en/stock/material-request' },
-	{ label: 'Auto-creation of Material Request', url: docsUrl + 'user/manual/en/stock/articles/auto-creation-of-material-request' },
-]
-
-frappe.help.help_links['Form/Stock Entry'] = [
+frappe.help.help_links['stock-entry'] = [
 	{ label: 'Stock Entry', url: docsUrl + 'user/manual/en/stock/stock-entry' },
 	{ label: 'Stock Entry Types', url: docsUrl + 'user/manual/en/stock/articles/stock-entry-purpose' },
 	{ label: 'Repack Entry', url: docsUrl + 'user/manual/en/stock/articles/repack-entry' },
@@ -391,136 +353,114 @@
 	{ label: 'Subcontracting', url: docsUrl + 'user/manual/en/manufacturing/subcontracting' },
 ]
 
-frappe.help.help_links['List/Stock Entry'] = [
-	{ label: 'Stock Entry', url: docsUrl + 'user/manual/en/stock/stock-entry' },
-]
-
-frappe.help.help_links['Tree/Warehouse'] = [
+frappe.help.help_links['warehouse/view/tree'] = [
 	{ label: 'Warehouse', url: docsUrl + 'user/manual/en/stock/warehouse' },
 ]
 
-frappe.help.help_links['List/Serial No'] = [
+frappe.help.help_links['serial-no'] = [
 	{ label: 'Serial No', url: docsUrl + 'user/manual/en/stock/serial-no' },
 ]
 
-frappe.help.help_links['Form/Serial No'] = [
-	{ label: 'Serial No', url: docsUrl + 'user/manual/en/stock/serial-no' },
-]
-
-frappe.help.help_links['Form/Batch'] = [
+frappe.help.help_links['batch'] = [
 	{ label: 'Batch', url: docsUrl + 'user/manual/en/stock/batch' },
 ]
 
-frappe.help.help_links['Form/Packing Slip'] = [
+frappe.help.help_links['packing-slip'] = [
 	{ label: 'Packing Slip', url: docsUrl + 'user/manual/en/stock/tools/packing-slip' },
 ]
 
-frappe.help.help_links['Form/Quality Inspection'] = [
+frappe.help.help_links['quality-inspection'] = [
 	{ label: 'Quality Inspection', url: docsUrl + 'user/manual/en/stock/tools/quality-inspection' },
 ]
 
-frappe.help.help_links['Form/Landed Cost Voucher'] = [
+frappe.help.help_links['landed-cost-voucher'] = [
 	{ label: 'Landed Cost Voucher', url: docsUrl + 'user/manual/en/stock/tools/landed-cost-voucher' },
 ]
 
-frappe.help.help_links['Tree/Item Group'] = [
+frappe.help.help_links['item-group/view/tree'] = [
 	{ label: 'Item Group', url: docsUrl + 'user/manual/en/stock/setup/item-group' },
 ]
 
-frappe.help.help_links['Form/Item Attribute'] = [
+frappe.help.help_links['item-attribute'] = [
 	{ label: 'Item Attribute', url: docsUrl + 'user/manual/en/stock/setup/item-attribute' },
 ]
 
-frappe.help.help_links['Form/UOM'] = [
+frappe.help.help_links['uom'] = [
 	{ label: 'Fractions in UOM', url: docsUrl + 'user/manual/en/stock/articles/managing-fractions-in-uom' },
 ]
 
-frappe.help.help_links['Form/Stock Reconciliation'] = [
+frappe.help.help_links['stock-reconciliation'] = [
 	{ label: 'Opening Stock Entry', url: docsUrl + 'user/manual/en/stock/opening-stock' },
 ]
 
 //CRM
 
-frappe.help.help_links['Form/Lead'] = [
+frappe.help.help_links['lead'] = [
 	{ label: 'Lead', url: docsUrl + 'user/manual/en/CRM/lead' },
 ]
 
-frappe.help.help_links['Form/Opportunity'] = [
+frappe.help.help_links['opportunity'] = [
 	{ label: 'Opportunity', url: docsUrl + 'user/manual/en/CRM/opportunity' },
 ]
 
-frappe.help.help_links['Form/Address'] = [
+frappe.help.help_links['address'] = [
 	{ label: 'Address', url: docsUrl + 'user/manual/en/CRM/address' },
 ]
 
-frappe.help.help_links['Form/Contact'] = [
+frappe.help.help_links['contact'] = [
 	{ label: 'Contact', url: docsUrl + 'user/manual/en/CRM/contact' },
 ]
 
-frappe.help.help_links['Form/Newsletter'] = [
+frappe.help.help_links['newsletter'] = [
 	{ label: 'Newsletter', url: docsUrl + 'user/manual/en/CRM/newsletter' },
 ]
 
-frappe.help.help_links['Form/Campaign'] = [
+frappe.help.help_links['campaign'] = [
 	{ label: 'Campaign', url: docsUrl + 'user/manual/en/CRM/setup/campaign' },
 ]
 
-frappe.help.help_links['Tree/Sales Person'] = [
+frappe.help.help_links['sales-person/view/tree'] = [
 	{ label: 'Sales Person', url: docsUrl + 'user/manual/en/CRM/setup/sales-person' },
 ]
 
-frappe.help.help_links['Form/Sales Person'] = [
+frappe.help.help_links['sales-person'] = [
 	{ label: 'Sales Person Target', url: docsUrl + 'user/manual/en/selling/setup/sales-person-target-allocation' },
 ]
 
-//Support
-
-frappe.help.help_links['List/Feedback Trigger'] = [
-	{ label: 'Feedback Trigger', url: docsUrl + 'user/manual/en/setting-up/feedback/setting-up-feedback' },
-]
-
-frappe.help.help_links['List/Feedback Request'] = [
-	{ label: 'Feedback Request', url: docsUrl + 'user/manual/en/setting-up/feedback/submit-feedback' },
-]
-
-frappe.help.help_links['List/Feedback Request'] = [
-	{ label: 'Feedback Request', url: docsUrl + 'user/manual/en/setting-up/feedback/submit-feedback' },
-]
-
 //Manufacturing
 
-frappe.help.help_links['Form/BOM'] = [
+frappe.help.help_links['bom'] = [
 	{ label: 'Bill of Material', url: docsUrl + 'user/manual/en/manufacturing/bill-of-materials' },
 	{ label: 'Nested BOM Structure', url: docsUrl + 'user/manual/en/manufacturing/articles/nested-bom-structure' },
 ]
 
-frappe.help.help_links['Form/Work Order'] = [
+frappe.help.help_links['work-order'] = [
 	{ label: 'Work Order', url: docsUrl + 'user/manual/en/manufacturing/work-order' },
 ]
 
-frappe.help.help_links['Form/Workstation'] = [
+frappe.help.help_links['workstation'] = [
 	{ label: 'Workstation', url: docsUrl + 'user/manual/en/manufacturing/workstation' },
 ]
 
-frappe.help.help_links['Form/Operation'] = [
+frappe.help.help_links['operation'] = [
 	{ label: 'Operation', url: docsUrl + 'user/manual/en/manufacturing/operation' },
 ]
 
-frappe.help.help_links['Form/BOM Update Tool'] = [
+frappe.help.help_links['bom-update-tool'] = [
 	{ label: 'BOM Update Tool', url: docsUrl + 'user/manual/en/manufacturing/tools/bom-update-tool' },
 ]
 
 //Customize
 
-frappe.help.help_links['Form/Customize Form'] = [
+frappe.help.help_links['customize-form'] = [
 	{ label: 'Custom Field', url: docsUrl + 'user/manual/en/customize-erpnext/custom-field' },
 	{ label: 'Customize Field', url: docsUrl + 'user/manual/en/customize-erpnext/customize-form' },
 ]
 
-frappe.help.help_links['Form/Custom Field'] = [
+frappe.help.help_links['custom-field'] = [
 	{ label: 'Custom Field', url: docsUrl + 'user/manual/en/customize-erpnext/custom-field' },
 ]
 
-frappe.help.help_links['Form/Custom Field'] = [
+frappe.help.help_links['custom-field'] = [
 	{ label: 'Custom Field', url: docsUrl + 'user/manual/en/customize-erpnext/custom-field' },
 ]
diff --git a/erpnext/public/js/payment/payment_details.html b/erpnext/public/js/payment/payment_details.html
deleted file mode 100644
index 3e63944..0000000
--- a/erpnext/public/js/payment/payment_details.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<div class="row pos-payment-row" type="{{type}}" idx={{idx}}>
-    <div class="col-xs-6" style="padding:20px">{{mode_of_payment}}</div>
-	<div class="col-xs-6">
-		<div class="input-group">
-			<input disabled class="form-control text-right amount" idx="{{idx}}" type="text" value="{%= format_currency(amount, currency) %}">
-			<span class="input-group-btn">
-				<button type="button" class="btn btn-default clr" idx="{{idx}}" style="border:1px solid #d1d8dd">C</button>
-			</span>
-		</div>
-	</div>
-</div>
\ No newline at end of file
diff --git a/erpnext/public/js/payment/pos_payment.html b/erpnext/public/js/payment/pos_payment.html
deleted file mode 100644
index cb6971b..0000000
--- a/erpnext/public/js/payment/pos_payment.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<div class="pos_payment row">
-	<div class="row" style="padding: 0px 30px;">
-		<h3>{{ __("Total Amount") }}: <span class="label label-default" style="font-size:20px;padding:5px">{%= format_currency(grand_total, currency) %}</span></h3>
-	</div>
-	<div class="row amount-row">
-		<div class="col-xs-6 col-sm-3 text-center">
-			<p class="amount-label"> {{ __("Paid") }} <h3 class="paid_amount">{%= format_currency(paid_amount, currency) %}</h3></p>
-		</div>
-		<div class="col-xs-6 col-sm-3 text-center">
-			<p class="amount-label"> {{ __("Outstanding") }} <h3 class="outstanding_amount">{%= format_currency(outstanding_amount, currency) %} </h3></p>
-		</div>
-		<div class="col-xs-6 col-sm-3 text-center">
-			<p class="amount-label"> {{ __("Change") }} <input class="form-control text-right change_amount bold" type="text" idx="change_amount" value="{{format_number(change_amount, null, 2)}}">
-			</p>
-		</div>
-		<div class="col-xs-6 col-sm-3 text-center">
-			<p class="amount-label"> {{ __("Write off") }} <input class="form-control text-right write_off_amount bold" type="text" idx="write_off_amount" value="{{format_number(write_off_amount, null, 2)}}">
-			</p>
-		</div>
-	</div>
-	<hr>
-	<div class="row">
-		<div class="col-sm-6 ">
-			<div class ="row multimode-payments" style = "margin-right:10px">
-			</div>
-		</div>
-		<div class="col-sm-6 payment-toolbar">
-			{% for(var i=0; i<3; i++) { %}
-				<div class="row">
-					{% for(var j=i*3; j<(i+1)*3; j++) { %}
-						<button type="button"  class="btn btn-default pos-keyboard-key">{{j+1}}</button>
-					{% } %}
-				</div>
-			{% } %}
-			<div class="row">
-				<button type="button"  class="btn btn-default delete-btn">{{ __("Del") }}</button>
-				<button type="button"  class="btn btn-default pos-keyboard-key">0</button>
-				<button type="button"  class="btn btn-default pos-keyboard-key">.</button>
-			</div>
-        </div>
-	</div>
-</div>
diff --git a/erpnext/public/js/pos/clusterize.js b/erpnext/public/js/pos/clusterize.js
deleted file mode 100644
index 075c9ca..0000000
--- a/erpnext/public/js/pos/clusterize.js
+++ /dev/null
@@ -1,330 +0,0 @@
-/* eslint-disable */
-/*! Clusterize.js - v0.17.6 - 2017-03-05
-* http://NeXTs.github.com/Clusterize.js/
-* Copyright (c) 2015 Denis Lukov; Licensed GPLv3 */
-
-;(function(name, definition) {
-    if (typeof module != 'undefined') module.exports = definition();
-    else if (typeof define == 'function' && typeof define.amd == 'object') define(definition);
-    else this[name] = definition();
-}('Clusterize', function() {
-  "use strict"
-
-  // detect ie9 and lower
-  // https://gist.github.com/padolsey/527683#comment-786682
-  var ie = (function(){
-    for( var v = 3,
-             el = document.createElement('b'),
-             all = el.all || [];
-         el.innerHTML = '<!--[if gt IE ' + (++v) + ']><i><![endif]-->',
-         all[0];
-       ){}
-    return v > 4 ? v : document.documentMode;
-  }()),
-  is_mac = navigator.platform.toLowerCase().indexOf('mac') + 1;
-  var Clusterize = function(data) {
-    if( ! (this instanceof Clusterize))
-      return new Clusterize(data);
-    var self = this;
-
-    var defaults = {
-      rows_in_block: 50,
-      blocks_in_cluster: 4,
-      tag: null,
-      show_no_data_row: true,
-      no_data_class: 'clusterize-no-data',
-      no_data_text: 'No data',
-      keep_parity: true,
-      callbacks: {}
-    }
-
-    // public parameters
-    self.options = {};
-    var options = ['rows_in_block', 'blocks_in_cluster', 'show_no_data_row', 'no_data_class', 'no_data_text', 'keep_parity', 'tag', 'callbacks'];
-    for(var i = 0, option; option = options[i]; i++) {
-      self.options[option] = typeof data[option] != 'undefined' && data[option] != null
-        ? data[option]
-        : defaults[option];
-    }
-
-    var elems = ['scroll', 'content'];
-    for(var i = 0, elem; elem = elems[i]; i++) {
-      self[elem + '_elem'] = data[elem + 'Id']
-        ? document.getElementById(data[elem + 'Id'])
-        : data[elem + 'Elem'];
-      if( ! self[elem + '_elem'])
-        throw new Error("Error! Could not find " + elem + " element");
-    }
-
-    // tabindex forces the browser to keep focus on the scrolling list, fixes #11
-    if( ! self.content_elem.hasAttribute('tabindex'))
-      self.content_elem.setAttribute('tabindex', 0);
-
-    // private parameters
-    var rows = isArray(data.rows)
-        ? data.rows
-        : self.fetchMarkup(),
-      cache = {},
-      scroll_top = self.scroll_elem.scrollTop;
-
-    // append initial data
-    self.insertToDOM(rows, cache);
-
-    // restore the scroll position
-    self.scroll_elem.scrollTop = scroll_top;
-
-    // adding scroll handler
-    var last_cluster = false,
-    scroll_debounce = 0,
-    pointer_events_set = false,
-    scrollEv = function() {
-      // fixes scrolling issue on Mac #3
-      if (is_mac) {
-          if( ! pointer_events_set) self.content_elem.style.pointerEvents = 'none';
-          pointer_events_set = true;
-          clearTimeout(scroll_debounce);
-          scroll_debounce = setTimeout(function () {
-              self.content_elem.style.pointerEvents = 'auto';
-              pointer_events_set = false;
-          }, 50);
-      }
-      if (last_cluster != (last_cluster = self.getClusterNum()))
-        self.insertToDOM(rows, cache);
-      if (self.options.callbacks.scrollingProgress)
-        self.options.callbacks.scrollingProgress(self.getScrollProgress());
-    },
-    resize_debounce = 0,
-    resizeEv = function() {
-      clearTimeout(resize_debounce);
-      resize_debounce = setTimeout(self.refresh, 100);
-    }
-    on('scroll', self.scroll_elem, scrollEv);
-    on('resize', window, resizeEv);
-
-    // public methods
-    self.destroy = function(clean) {
-      off('scroll', self.scroll_elem, scrollEv);
-      off('resize', window, resizeEv);
-      self.html((clean ? self.generateEmptyRow() : rows).join(''));
-    }
-    self.refresh = function(force) {
-      if(self.getRowsHeight(rows) || force) self.update(rows);
-    }
-    self.update = function(new_rows) {
-      rows = isArray(new_rows)
-        ? new_rows
-        : [];
-      var scroll_top = self.scroll_elem.scrollTop;
-      // fixes #39
-      if(rows.length * self.options.item_height < scroll_top) {
-        self.scroll_elem.scrollTop = 0;
-        last_cluster = 0;
-      }
-      self.insertToDOM(rows, cache);
-      self.scroll_elem.scrollTop = scroll_top;
-    }
-    self.clear = function() {
-      self.update([]);
-    }
-    self.getRowsAmount = function() {
-      return rows.length;
-    }
-    self.getScrollProgress = function() {
-      return this.options.scroll_top / (rows.length * this.options.item_height) * 100 || 0;
-    }
-
-    var add = function(where, _new_rows) {
-      var new_rows = isArray(_new_rows)
-        ? _new_rows
-        : [];
-      if( ! new_rows.length) return;
-      rows = where == 'append'
-        ? rows.concat(new_rows)
-        : new_rows.concat(rows);
-      self.insertToDOM(rows, cache);
-    }
-    self.append = function(rows) {
-      add('append', rows);
-    }
-    self.prepend = function(rows) {
-      add('prepend', rows);
-    }
-  }
-
-  Clusterize.prototype = {
-    constructor: Clusterize,
-    // fetch existing markup
-    fetchMarkup: function() {
-      var rows = [], rows_nodes = this.getChildNodes(this.content_elem);
-      while (rows_nodes.length) {
-        rows.push(rows_nodes.shift().outerHTML);
-      }
-      return rows;
-    },
-    // get tag name, content tag name, tag height, calc cluster height
-    exploreEnvironment: function(rows, cache) {
-      var opts = this.options;
-      opts.content_tag = this.content_elem.tagName.toLowerCase();
-      if( ! rows.length) return;
-      if(ie && ie <= 9 && ! opts.tag) opts.tag = rows[0].match(/<([^>\s/]*)/)[1].toLowerCase();
-      if(this.content_elem.children.length <= 1) cache.data = this.html(rows[0] + rows[0] + rows[0]);
-      if( ! opts.tag) opts.tag = this.content_elem.children[0].tagName.toLowerCase();
-      this.getRowsHeight(rows);
-    },
-    getRowsHeight: function(rows) {
-      var opts = this.options,
-        prev_item_height = opts.item_height;
-      opts.cluster_height = 0;
-      if( ! rows.length) return;
-      var nodes = this.content_elem.children;
-      var node = nodes[Math.floor(nodes.length / 2)];
-      opts.item_height = node.offsetHeight;
-      // consider table's border-spacing
-      if(opts.tag == 'tr' && getStyle('borderCollapse', this.content_elem) != 'collapse')
-        opts.item_height += parseInt(getStyle('borderSpacing', this.content_elem), 10) || 0;
-      // consider margins (and margins collapsing)
-      if(opts.tag != 'tr') {
-        var marginTop = parseInt(getStyle('marginTop', node), 10) || 0;
-        var marginBottom = parseInt(getStyle('marginBottom', node), 10) || 0;
-        opts.item_height += Math.max(marginTop, marginBottom);
-      }
-      opts.block_height = opts.item_height * opts.rows_in_block;
-      opts.rows_in_cluster = opts.blocks_in_cluster * opts.rows_in_block;
-      opts.cluster_height = opts.blocks_in_cluster * opts.block_height;
-      return prev_item_height != opts.item_height;
-    },
-    // get current cluster number
-    getClusterNum: function () {
-      this.options.scroll_top = this.scroll_elem.scrollTop;
-      return Math.floor(this.options.scroll_top / (this.options.cluster_height - this.options.block_height)) || 0;
-    },
-    // generate empty row if no data provided
-    generateEmptyRow: function() {
-      var opts = this.options;
-      if( ! opts.tag || ! opts.show_no_data_row) return [];
-      var empty_row = document.createElement(opts.tag),
-        no_data_content = document.createTextNode(opts.no_data_text), td;
-      empty_row.className = opts.no_data_class;
-      if(opts.tag == 'tr') {
-        td = document.createElement('td');
-        // fixes #53
-        td.colSpan = 100;
-        td.appendChild(no_data_content);
-      }
-      empty_row.appendChild(td || no_data_content);
-      return [empty_row.outerHTML];
-    },
-    // generate cluster for current scroll position
-    generate: function (rows, cluster_num) {
-      var opts = this.options,
-        rows_len = rows.length;
-      if (rows_len < opts.rows_in_block) {
-        return {
-          top_offset: 0,
-          bottom_offset: 0,
-          rows_above: 0,
-          rows: rows_len ? rows : this.generateEmptyRow()
-        }
-      }
-      var items_start = Math.max((opts.rows_in_cluster - opts.rows_in_block) * cluster_num, 0),
-        items_end = items_start + opts.rows_in_cluster,
-        top_offset = Math.max(items_start * opts.item_height, 0),
-        bottom_offset = Math.max((rows_len - items_end) * opts.item_height, 0),
-        this_cluster_rows = [],
-        rows_above = items_start;
-      if(top_offset < 1) {
-        rows_above++;
-      }
-      for (var i = items_start; i < items_end; i++) {
-        rows[i] && this_cluster_rows.push(rows[i]);
-      }
-      return {
-        top_offset: top_offset,
-        bottom_offset: bottom_offset,
-        rows_above: rows_above,
-        rows: this_cluster_rows
-      }
-    },
-    renderExtraTag: function(class_name, height) {
-      var tag = document.createElement(this.options.tag),
-        clusterize_prefix = 'clusterize-';
-      tag.className = [clusterize_prefix + 'extra-row', clusterize_prefix + class_name].join(' ');
-      height && (tag.style.height = height + 'px');
-      return tag.outerHTML;
-    },
-    // if necessary verify data changed and insert to DOM
-    insertToDOM: function(rows, cache) {
-      // explore row's height
-      if( ! this.options.cluster_height) {
-        this.exploreEnvironment(rows, cache);
-      }
-      var data = this.generate(rows, this.getClusterNum()),
-        this_cluster_rows = data.rows.join(''),
-        this_cluster_content_changed = this.checkChanges('data', this_cluster_rows, cache),
-        top_offset_changed = this.checkChanges('top', data.top_offset, cache),
-        only_bottom_offset_changed = this.checkChanges('bottom', data.bottom_offset, cache),
-        callbacks = this.options.callbacks,
-        layout = [];
-
-      if(this_cluster_content_changed || top_offset_changed) {
-        if(data.top_offset) {
-          this.options.keep_parity && layout.push(this.renderExtraTag('keep-parity'));
-          layout.push(this.renderExtraTag('top-space', data.top_offset));
-        }
-        layout.push(this_cluster_rows);
-        data.bottom_offset && layout.push(this.renderExtraTag('bottom-space', data.bottom_offset));
-        callbacks.clusterWillChange && callbacks.clusterWillChange();
-        this.html(layout.join(''));
-        this.options.content_tag == 'ol' && this.content_elem.setAttribute('start', data.rows_above);
-        callbacks.clusterChanged && callbacks.clusterChanged();
-      } else if(only_bottom_offset_changed) {
-        this.content_elem.lastChild.style.height = data.bottom_offset + 'px';
-      }
-    },
-    // unfortunately ie <= 9 does not allow to use innerHTML for table elements, so make a workaround
-    html: function(data) {
-      var content_elem = this.content_elem;
-      if(ie && ie <= 9 && this.options.tag == 'tr') {
-        var div = document.createElement('div'), last;
-        div.innerHTML = '<table><tbody>' + data + '</tbody></table>';
-        while((last = content_elem.lastChild)) {
-          content_elem.removeChild(last);
-        }
-        var rows_nodes = this.getChildNodes(div.firstChild.firstChild);
-        while (rows_nodes.length) {
-          content_elem.appendChild(rows_nodes.shift());
-        }
-      } else {
-        content_elem.innerHTML = data;
-      }
-    },
-    getChildNodes: function(tag) {
-        var child_nodes = tag.children, nodes = [];
-        for (var i = 0, ii = child_nodes.length; i < ii; i++) {
-            nodes.push(child_nodes[i]);
-        }
-        return nodes;
-    },
-    checkChanges: function(type, value, cache) {
-      var changed = value != cache[type];
-      cache[type] = value;
-      return changed;
-    }
-  }
-
-  // support functions
-  function on(evt, element, fnc) {
-    return element.addEventListener ? element.addEventListener(evt, fnc, false) : element.attachEvent("on" + evt, fnc);
-  }
-  function off(evt, element, fnc) {
-    return element.removeEventListener ? element.removeEventListener(evt, fnc, false) : element.detachEvent("on" + evt, fnc);
-  }
-  function isArray(arr) {
-    return Object.prototype.toString.call(arr) === '[object Array]';
-  }
-  function getStyle(prop, elem) {
-    return window.getComputedStyle ? window.getComputedStyle(elem)[prop] : elem.currentStyle[prop];
-  }
-
-  return Clusterize;
-}));
\ No newline at end of file
diff --git a/erpnext/public/js/pos/customer_toolbar.html b/erpnext/public/js/pos/customer_toolbar.html
deleted file mode 100644
index 3ba5ccb..0000000
--- a/erpnext/public/js/pos/customer_toolbar.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<div class="pos-bill-toolbar col-xs-9" style="display: flex; width: 70%;">
-	<div class="party-area" style="flex: 1;">
-		<span class="edit-customer-btn text-muted" style="display: inline;">
-			<a class="btn-open no-decoration" title="Edit Customer">
-				<i class="octicon octicon-pencil"></i>
-			</a>	
-		</span>
-	</div>
-	<button class="btn btn-default list-customers-btn" style="margin-left: 12px">
-		<i class="octicon octicon-organization"></i>
-	</button>
-	</button> {% if (allow_delete) { %}
-	<button class="btn btn-default btn-danger" style="margin: 0 5px 0 5px">
-			<i class="octicon octicon-trashcan"></i>
-		</button> {% } %}
-</div>
\ No newline at end of file
diff --git a/erpnext/public/js/pos/pos.html b/erpnext/public/js/pos/pos.html
deleted file mode 100644
index 89e2940..0000000
--- a/erpnext/public/js/pos/pos.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<div class="pos">
-	<div class="row">
-		<div class="col-sm-5 pos-bill-wrapper">
-			<div class="col-sm-12"><h6 class="form-section-heading uppercase">{{ __("Item Cart") }}</h6></div>
-			<div class="pos-bill">
-				<div class="item-cart">
-					<div class="pos-list-row pos-bill-header text-muted h6">
-						<span class="cell subject">
-							<!--<input class="list-select-all" type="checkbox" title="{%= __("Select All") %}">-->
-							{{ __("Item Name")}}
-						</span>
-						<span class="cell text-right">{{ __("Quantity") }}</span>
-						<span class="cell text-right">{{ __("Discount") }}</span>
-						<span class="cell text-right">{{ __("Rate") }}</span>
-					</div>
-					<div class="item-cart-items">
-						<div class="no-items-message text-extra-muted">
-							<span class="text-center">
-								<i class="fa fa-2x fa-shopping-cart"></i>
-								<p>{{ __("Tap items to add them here") }}</p>
-							</span>
-						</div>
-						<div class="items">
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="totals-area">
-				<div class="pos-list-row net-total-area">
-					<div class="cell"></div>
-					<div class="cell text-right">{%= __("Net Total") %}</div>
-					<div class="cell price-cell bold net-total text-right"></div>
-				</div>
-				<div class="pos-list-row tax-area">
-					<div class="cell"></div>
-					<div class="cell text-right">{%= __("Taxes") %}</div>
-					<div class="cell price-cell text-right tax-table">
-					</div>
-				</div>
-				{% if(allow_user_to_edit_discount) { %}
-					<div class="pos-list-row discount-amount-area">
-						<div class="cell"></div>
-						<div class="cell text-right">{%= __("Discount") %}</div>
-						<div class="cell price-cell discount-field-col">
-							<div class="input-group input-group-sm">
-								<span class="input-group-addon">%</span>
-								<input type="text" class="form-control discount-percentage text-right">
-							</div>
-							<div class="input-group input-group-sm">
-								<span class="input-group-addon">{%= get_currency_symbol(currency) %}</span>
-								<input type="text" class="form-control discount-amount text-right" placeholder="{%= 0.00 %}">
-							</div>
-						</div>
-					</div>
-				{% } %}
-				<div class="pos-list-row grand-total-area collapse-btn" style="border-bottom:1px solid #d1d8dd;">
-					<div class="cell">
-						<a class="">
-							<i class="octicon octicon-chevron-down"></i>
-						</a>
-					</div>
-					<div class="cell text-right bold">{%= __("Grand Total") %}</div>
-					<div class="cell price-cell grand-total text-right lead"></div>
-				</div>
-				<div class="pos-list-row qty-total-area collapse-btn" style="border-bottom:1px solid #d1d8dd;">
-					<div class="cell">
-						<a class="">
-							<i class="octicon octicon-chevron-down"></i>
-						</a>
-					</div>
-					<div class="cell text-right bold">{%= __("Qty Total") %}</div>
-					<div class="cell price-cell qty-total text-right lead"></div>
-				</div>
-			</div>
-			<div class="row" style="margin-top: 30px">
-				<div class="col-sm-6 selected-item">
-
-				</div>
-				<div class="col-xs-6 numeric_keypad hidden-xs" style="display:none">
-					{% var chartData = ["Qty", "Disc", "Price"] %} {% for(var i=0; i
-					<3; i++) { %} <div class="row text-right">
-						{% for(var j=i*3; j
-						<(i+1)*3; j++) { %} <button type="button" class="btn btn-default numeric-keypad" val="{{j+1}}">{{j+1}}</button>
-							{% } %}
-							<button type="button" {% if((!allow_user_to_edit_rate && __(chartData[i]) == __("Price")) || (!allow_user_to_edit_discount && __(chartData[i]) == __("Disc"))) { %} disabled {% } %} id="pos-item-{{ chartData[i].toLowerCase() }}" class="btn text-center btn-default numeric-keypad pos-operation">{{ __(chartData[i]) }}</button>
-				</div>
-				{% } %}
-				<div class="row text-right">
-					<button type="button" class="btn btn-default numeric-keypad numeric-del">{{ __("Del") }}</button>
-					<button type="button" class="btn btn-default numeric-keypad" val="0">0</button>
-					<button type="button" class="btn btn-default numeric-keypad" val=".">.</button>
-					<button type="button" class="btn btn-primary numeric-keypad pos-pay">{{ __("Pay") }}</button>
-				</div>
-			</div>
-		</div>
-	</div>
-	<div class="col-sm-5 list-customers">
-		<div class="col-sm-12"><h6 class="form-section-heading uppercase">{{ __("Customers in Queue") }}</h6></div>
-		<div class="pos-list-row pos-bill-header">
-			<div class="cell subject"><input class="list-select-all" type="checkbox">{{ __("Customer") }}</div>
-			<div class="cell text-left">{{ __("Status") }}</div>
-			<div class="cell text-right">{{ __("Amount") }}</div>
-			<div class="cell text-right">{{ __("Grand Total") }}</div>
-		</div>
-		<div class="list-customers-table border-left border-right border-bottom">
-			<div class="no-items-message text-extra-muted">
-				<span class="text-center">
-					<i class="fa fa-2x fa-user"></i>
-					<p>{{ __("No Customers yet!") }}</p>
-				</span>
-			</div>
-		</div>
-	</div>
-	<div class="col-sm-7 pos-items-section">
-		<div class="col-sm-12"><h6 class="form-section-heading uppercase">{{ __("Stock Items") }}</h6></div>
-		<div class="row pos-item-area">
-
-		</div>
-		<span id="customer-results" style="color:#68a;"></span>
-		<div class="item-list-area">
-			<div class="pos-list-row pos-bill-header text-muted h6">
-				<div class="cell subject search-item-group">
-					<div class="dropdown">
-						<a class="text-muted dropdown-toggle" data-toggle="dropdown"><span class="dropdown-text">{{ __("All Item Groups") }}</span><i class="caret"></i></a>
-						<ul class="dropdown-menu">
-						</ul>
-					</div>
-				</div>
-				<div class="cell search-item"></div>
-			</div>
-			<div class="app-listing item-list image-view-container">
-
-			</div>
-		</div>
-	</div>
-</div>
diff --git a/erpnext/public/js/pos/pos_bill_item.html b/erpnext/public/js/pos/pos_bill_item.html
deleted file mode 100644
index 21868a6..0000000
--- a/erpnext/public/js/pos/pos_bill_item.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<div class="row pos-bill-row pos-bill-item" data-item-code="{%= item_code %}">
-    <div class="col-xs-4"><h6>{%= item_code || "" %}{%= __(item_name) || "" %}</h6></div>
-    <div class="col-xs-3">
-        <div class="row pos-qty-row">
-            <div class="col-xs-2 text-center pos-qty-btn" data-action="decrease-qty"><i class="fa fa-minus text-muted" style="font-size:12px"></i></div>
-            <div class="col-xs-8">
-				<div>
-                    <input type="tel" value="{%= qty %}" class="form-control   pos-item-qty text-right">
-                </div>
-                {% if(actual_qty != null) { %}
-                <div style="margin-top: 5px;" class="text-muted small text-right">
-                    {%= __("In Stock: ") %} <span>{%= actual_qty || 0.0 %}</span>
-                </div>
-                {% } %}
-            </div>
-            <div class="col-xs-2 text-center pos-qty-btn" data-action="increase-qty"><i class="fa fa-plus text-muted" style="font-size:12px"></i></div>
-        </div>
-    </div>
-    <div class="col-xs-2 text-right">
-		<div class="row input-sm">
-            <input type="tel" value="{%= discount_percentage %}" class="form-control text-right pos-item-disc">
-        </div>
-    </div>
-    <div class="col-xs-3 text-right">
-        <div class="text-muted" style="margin-top: 5px;">
-			{% if(enabled) { %}
-				<input type="tel" value="{%= rate %}" class="form-control input-sm pos-item-price text-right">
-			{% } else { %}
-				<h6>{%= format_currency(rate) %}</h6>
-			{% } %}
-		</div>
-		<p><h6>{%= amount %}</h6></p>
-    </div>
-</div>
diff --git a/erpnext/public/js/pos/pos_bill_item_new.html b/erpnext/public/js/pos/pos_bill_item_new.html
deleted file mode 100644
index cb626ce..0000000
--- a/erpnext/public/js/pos/pos_bill_item_new.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<div class="pos-list-row pos-bill-item {{ selected_class }}" data-item-code="{{ item_code }}">
-	<div class="cell subject">
-		<!--<input class="list-row-checkbox" type="checkbox" data-name="{{item_code}}">-->
-		<a class="grey list-id" title="{{ item_name }}">{{ strip_html(__(item_name)) || item_code }}</a>
-	</div>
-	<div class="cell text-right">{%= qty %}</div>
-	<div class="cell text-right">{%= discount_percentage %}</div>
-	<div class="cell text-right">{%= format_currency(rate) %}</div>
-</div>
diff --git a/erpnext/public/js/pos/pos_invoice_list.html b/erpnext/public/js/pos/pos_invoice_list.html
deleted file mode 100644
index 13aa520..0000000
--- a/erpnext/public/js/pos/pos_invoice_list.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<div class="pos-list-row" invoice-name = "{{name}}">
-	<div class="list-column cell subject" invoice-name = "{{name}}">
-		<input class="list-delete text-left" type="checkbox" style = "margin-right:5px">
-		<a class="grey list-id text-left customer-row" title="{{ customer }}">{%= customer %}</a>
-	</div>
-	<div class="list-column cell text-left customer-row"><span class="indicator {{data.indicator}}">{{ data.status }}</span></div>
-	<div class="list-column cell text-right customer-row">{%= paid_amount %}</div>
-	<div class="list-column cell text-right customer-row">{%= grand_total %}</div>
-</div>
diff --git a/erpnext/public/js/pos/pos_item.html b/erpnext/public/js/pos/pos_item.html
deleted file mode 100755
index 52f3cf6..0000000
--- a/erpnext/public/js/pos/pos_item.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<div class="pos-item-wrapper image-view-item" data-item-code="{{item_code}}">
-	<div class="image-view-header doclist-row">
-		<div class="list-value">
-			<a class="grey list-id" data-name="{{item_code}}" title="{{ item_name || item_code}}">{{item_name || item_code}}<br>({{ __(item_stock) }})</a>
-		</div>
-	</div>
-	<div class="image-view-body">
-		<a  data-item-code="{{ item_code }}"
-			title="{{ item_name || item_code }}"
-		>
-			<div class="image-field"
-				style="
-				{% if (!item_image) { %}
-					background-color: #fafbfc;
-				{% } %}
-				border: 0px;"
-			>
-				{% if (!item_image) { %}
-				<span class="placeholder-text">
-					{%= frappe.get_abbr(item_name || item_code) %}
-				</span>
-				{% } %}
-				{% if (item_image) { %}
-				<img src="{{ item_image }}" alt="{{item_name || item_code}}">
-				{% } %}
-			</div>
-			<span class="price-info">
-				{{item_price}} / {{item_uom}}
-			</span>
-		</a>
-	</div>
-</div>
\ No newline at end of file
diff --git a/erpnext/public/js/pos/pos_selected_item.html b/erpnext/public/js/pos/pos_selected_item.html
deleted file mode 100644
index 03c7341..0000000
--- a/erpnext/public/js/pos/pos_selected_item.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<div class="pos-selected-item-action" data-item-code="{%= item_code %}" data-idx="{%= idx %}">
-	<div class="pos-list-row">
-		<div class="cell">{{ __("Quantity") }}:</div>
-		<input type="tel" class="form-control cell pos-item-qty" value="{%= qty %}"/>
-	</div>
-	<div class="pos-list-row">
-		<div class="cell">{{ __("Price List Rate") }}:</div>
-		<input type="tel" class="form-control cell" disabled value="{%= price_list_rate %}"/>
-	</div>
-	<div class="pos-list-row">
-		<div class="cell">{{ __("Discount") }}: %</div>
-		<input type="tel" class="form-control cell pos-item-disc" {% if !allow_user_to_edit_discount %} disabled {% endif %} value="{%= discount_percentage %}">
-	</div>
-	<div class="pos-list-row">
-		<div class="cell">{{ __("Price") }}:</div>
-		<input type="tel" class="form-control cell pos-item-price" {% if !allow_user_to_edit_rate %} disabled {% endif %} value="{%= rate %}"/>
-	</div> 
-	<div class="pos-list-row">
-		<div class="cell">{{ __("Amount") }}:</div>
-		<input type="tel" class="form-control cell pos-amount" disabled value="{%= amount %}"/>
-	</div>
-</div>
\ No newline at end of file
diff --git a/erpnext/public/js/pos/pos_tax_row.html b/erpnext/public/js/pos/pos_tax_row.html
deleted file mode 100644
index 3752a89..0000000
--- a/erpnext/public/js/pos/pos_tax_row.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<div class="pos-list-row" style="padding-right: 0;">
-	<div class="cell">{%= description %}</div>
-	<div class="cell text-right bold">{%= tax_amount %}</div>
-</div>
diff --git a/erpnext/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js
index 092f839..ef03b01 100644
--- a/erpnext/public/js/setup_wizard.js
+++ b/erpnext/public/js/setup_wizard.js
@@ -127,11 +127,9 @@
 				options: "", fieldtype: 'Select'
 			},
 			{ fieldname: 'view_coa', label: __('View Chart of Accounts'), fieldtype: 'Button' },
-
-			{ fieldtype: "Section Break", label: __('Financial Year') },
-			{ fieldname: 'fy_start_date', label: __('Start Date'), fieldtype: 'Date', reqd: 1 },
-			{ fieldtype: "Column Break" },
-			{ fieldname: 'fy_end_date', label: __('End Date'), fieldtype: 'Date', reqd: 1 },
+			{ fieldname: 'fy_start_date', label: __('Financial Year Begins On'), fieldtype: 'Date', reqd: 1 },
+			// end date should be hidden (auto calculated)
+			{ fieldname: 'fy_end_date', label: __('End Date'), fieldtype: 'Date', reqd: 1, hidden: 1 },
 		],
 
 		onload: function (slide) {
diff --git a/erpnext/public/js/telephony.js b/erpnext/public/js/telephony.js
index f9caade..6cb1207 100644
--- a/erpnext/public/js/telephony.js
+++ b/erpnext/public/js/telephony.js
@@ -11,7 +11,7 @@
 				.append(`
 					<span class="phone-btn">
 						<a class="btn-open no-decoration" title="${__('Make a call')}">
-							<i class="fa fa-phone"></i></a>
+							${frappe.utils.icon('call')}
 					</span>
 				`)
 				.find('.phone-btn')
diff --git a/erpnext/public/less/erpnext.less b/erpnext/public/less/erpnext.less
index 8685837..4076ebe 100644
--- a/erpnext/public/less/erpnext.less
+++ b/erpnext/public/less/erpnext.less
@@ -39,8 +39,9 @@
 
 .dashboard-list-item {
 	background-color: inherit;
-	padding: 5px 0px;
-	border-bottom: 1px solid @border-color;
+	border-bottom: 1px solid var(--border-color);
+	font-size: var(--text-md);
+	color: var(--text-color);
 }
 
 #page-stock-balance .dashboard-list-item {
@@ -446,20 +447,6 @@
 
 }
 
-// Leaderboard
-
-.leaderboard {
-	.result {
-		border-top: 1px solid #d1d8dd;
-	}
-	.list-item {
-		padding-left: 45px;
-	}
-	.list-item_content {
-		padding-right: 45px;
-	}
-}
-
 // Healthcare
 
 .exercise-card {
diff --git a/erpnext/public/scss/point-of-sale.scss b/erpnext/public/scss/point-of-sale.scss
new file mode 100644
index 0000000..c627017
--- /dev/null
+++ b/erpnext/public/scss/point-of-sale.scss
@@ -0,0 +1,1111 @@
+.point-of-sale-app {
+	display: grid;
+	grid-template-columns: repeat(10, minmax(0, 1fr));
+	gap: var(--margin-md);
+
+	section {
+		min-height: 45rem;
+		height: calc(100vh - 200px);
+		max-height: calc(100vh - 200px);
+	}
+
+	.frappe-control {
+		margin: 0 !important;
+		width: 100%;
+	}
+
+	.form-group {
+		margin-bottom: 0px !important;
+	}
+
+	.pointer-no-select {
+		cursor: pointer;
+		user-select: none;
+	}
+
+	.nowrap {
+		overflow: hidden;
+		white-space: nowrap;
+	}
+
+	.image {
+		height: 100% !important;
+		object-fit: cover;
+	}
+
+	.abbr {
+		background-color: var(--gray-50);
+		font-size: var(--text-3xl);
+	}
+
+	.label {
+		display: flex;
+		align-items: center;
+		font-weight: 700;
+		font-size: var(--text-lg);
+	}
+
+	.pos-card {
+		background-color: var(--fg-color);
+		box-shadow: var(--shadow-base);
+		border-radius: var(--border-radius-md);
+	}
+
+	.seperator {
+		margin-left: var(--margin-sm);
+		margin-right: var(--margin-sm);
+		border-bottom: 1px solid var(--gray-300);
+	}
+
+	.primary-action {
+		@extend .pointer-no-select;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		padding: var(--padding-sm);
+		margin-top: var(--margin-sm);
+		border-radius: var(--border-radius-md);
+		font-size: var(--text-lg);
+		font-weight: 700;
+	}
+
+	.highlighted-numpad-btn {
+		box-shadow: inset 0 0px 4px 0px rgba(0, 0, 0, 0.15) !important;
+		font-weight: 700;
+		background-color: var(--gray-50);
+	}
+
+	> .items-selector {
+		@extend .pos-card;
+		grid-column: span 6 / span 6;
+		display: flex;
+		flex-direction: column;
+		overflow: hidden;
+
+		> .filter-section {
+			display: grid;
+			grid-template-columns: repeat(12, minmax(0, 1fr));
+			background-color: var(--fg-color);
+			padding: var(--padding-lg);
+			padding-bottom: var(--padding-sm);
+			align-items: center;
+
+			> .label {
+				@extend .label;
+				grid-column: span 4 / span 4;
+				padding-bottom: var(--padding-xs);
+			}
+
+			> .search-field {
+				grid-column: span 5 / span 5;
+				display: flex;
+				align-items: center;
+				margin: 0px var(--margin-sm);
+			}
+
+			> .item-group-field {
+				grid-column: span 3 / span 3;
+				display: flex;
+				align-items: center;
+			}
+		}
+
+		> .items-container {
+			display: grid;
+			grid-template-columns: repeat(4, minmax(0, 1fr));
+			gap: var(--margin-lg);
+			padding: var(--padding-lg);
+			padding-top: var(--padding-xs);
+			overflow-y: scroll;
+			overflow-x: hidden;
+
+			&:after {
+				content: "";
+				display: block;
+				height: 1px;
+			}
+
+			> .item-wrapper {
+				@extend .pointer-no-select;
+				border-radius: var(--border-radius-md);
+				box-shadow: var(--shadow-base);
+
+				&:hover {
+					transform: scale(1.02, 1.02);
+				}
+				
+				.item-display {
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					border-radius: var(--border-radius-md);
+					margin: var(--margin-sm);
+					margin-bottom: 0px;
+					min-height: 8rem;
+					height: 8rem;
+					color: var(--gray-500);
+
+					> img {
+						@extend .image;
+					}
+				}
+
+				> .item-detail {
+					display: flex;
+					flex-direction: column;
+					justify-content: center;
+					min-height: 3.5rem;
+					height: 3.5rem;
+					padding-left: var(--padding-sm);
+					padding-right: var(--padding-sm);
+
+					> .item-name {
+						@extend .nowrap;
+						display: flex;
+						align-items: center;
+						font-size: var(--text-md);
+					}
+
+					> .item-rate {
+						font-weight: 700;
+					}
+				}
+
+			}
+		}
+	}
+
+	> .customer-cart-container {
+		grid-column: span 4 / span 4;
+		display: flex;
+		flex-direction: column;
+
+		> .customer-section {
+			@extend .pos-card;
+			display: flex;
+			flex-direction: column;
+			padding: var(--padding-md) var(--padding-lg);
+			overflow: visible;
+
+			> .customer-field {
+				display: flex;
+				align-items: center;
+				padding-top: var(--padding-xs);
+			}
+
+			> .customer-details {
+				display: flex;
+				flex-direction: column;
+				background-color: var(--fg-color);
+
+				> .header {
+					display: flex;
+					margin-bottom: var(--margin-md);
+					justify-content: space-between;
+					padding-top: var(--padding-md);
+	
+					> .label {
+						@extend .label;
+					}
+	
+					> .close-details-btn {
+						display: flex;
+						align-items: center;
+						cursor: pointer;
+					}
+				}
+
+				> .customer-display {
+					display: flex;
+					align-items: center;
+					cursor: pointer;
+
+					> .customer-image {
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						width: 3rem;
+						height: 3rem;
+						border-radius: 50%;
+						color: var(--gray-500);
+						margin-right: var(--margin-md);
+
+						> img {
+							@extend .image;
+							border-radius: 50%;
+						}
+					}
+
+					> .customer-abbr {
+						@extend .abbr;
+						font-size: var(--text-2xl);
+					}
+
+					> .customer-name-desc {
+						@extend .nowrap;
+						display: flex;
+						flex-direction: column;
+						margin-right: auto;
+
+						>.customer-name {
+							font-weight: 700;
+							font-size: var(--text-lg);
+						}
+	
+						>.customer-desc {
+							color: var(--gray-600);
+							font-weight: 500;
+							font-size: var(--text-sm);
+						}
+					}
+
+					> .reset-customer-btn {
+						display: flex;
+						align-items: center;
+						cursor: pointer;
+					}
+
+				}
+
+				> .customer-fields-container {
+					display: grid;
+					grid-template-columns: repeat(2, minmax(0, 1fr));
+					margin-top: var(--margin-md);
+					column-gap: var(--padding-sm);
+					row-gap: var(--padding-xs);
+				}
+
+				> .transactions-label {
+					@extend .label;
+					margin-top: var(--margin-md);
+					margin-bottom: var(--margin-sm);
+				}
+			}
+
+			> .customer-transactions {
+				height: 100%;
+				overflow-x: hidden;
+				overflow-y: scroll;
+				margin-right: -12px;
+				padding-right: 12px;
+				margin-left: -10px;
+
+				> .no-transactions-placeholder {
+					height: 100%;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					background-color: var(--gray-50);
+					border-radius: var(--border-radius-md);
+				}
+			}
+		}
+
+		> .cart-container {
+			@extend .pos-card;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			margin-top: var(--margin-md);
+			position: relative;
+			height: 100%;
+
+			> .abs-cart-container {
+				position: absolute;
+				display: flex;
+				flex-direction: column;
+				padding: var(--padding-lg);
+				width: 100%;
+				height: 100%;
+
+				> .cart-label {
+					@extend .label;
+					padding-bottom: var(--padding-md);
+				}
+
+				> .cart-header {
+					display: flex;
+					width: 100%;
+					font-size: var(--text-md);
+					padding-bottom: var(--padding-md);
+
+					> .name-header {
+						flex: 1 1 0%;
+					}
+
+					> .qty-header {
+						margin-right: var(--margin-lg);
+						text-align: center;
+					}
+
+					> .rate-amount-header {
+						text-align: right;
+						margin-right: var(--margin-sm);
+					}
+				}
+
+				.no-item-wrapper {
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					background-color: var(--gray-50);
+					border-radius: var(--border-radius-md);
+					font-size: var(--text-md);
+					font-weight: 500;
+					width: 100%;
+					height: 100%;
+				}
+
+				> .cart-items-section {
+					display: flex;
+					flex-direction: column;
+					flex: 1 1 0%;
+					overflow-y: scroll;
+
+					> .cart-item-wrapper {
+						@extend .pointer-no-select;
+						display: flex;
+						align-items: center;
+						padding: var(--padding-sm);
+						border-radius: var(--border-radius-md);
+
+						&:hover {
+							background-color: var(--gray-50);
+						}
+
+						> .item-image {
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							width: 2rem;
+							height: 2rem;
+							border-radius: var(--border-radius-md);
+							color: var(--gray-500);
+							margin-right: var(--margin-md);
+
+							> img {
+								@extend .image;
+							}
+						}
+
+						> .item-abbr {
+							@extend .abbr;
+							font-size: var(--text-lg);
+						}
+	
+
+						> .item-name-desc {
+							@extend .nowrap;
+							display: flex;
+							flex-direction: column;
+							flex: 1 1 0%;
+							flex-shrink: 1;
+
+							> .item-name {
+								font-weight: 700;
+							}
+
+							> .item-desc {
+								font-size: var(--text-sm);
+								color: var(--gray-600);
+								font-weight: 500;
+							}
+						}
+
+						> .item-qty-rate {
+							display: flex;
+							flex-shrink: 0;
+							text-align: right;
+							margin-left: var(--margin-md);
+
+							> .item-qty {
+								display: flex;
+								align-items: center;
+								margin-right: var(--margin-lg);
+								font-weight: 700;
+							}
+
+							> .item-rate-amount {
+								display: flex;
+								flex-direction: column;
+								flex-shrink: 0;
+								text-align: right;
+
+								> .item-rate {
+									font-weight: 700;
+								}
+
+								> .item-amount {
+									font-size: var(--text-md);
+									font-weight: 600;
+								}
+							}
+						}
+
+					}
+				}
+
+				> .cart-totals-section {
+					display: flex;
+					flex-direction: column;
+					flex-shrink: 0;
+					width: 100%;
+					margin-top: var(--margin-md);
+
+					> .add-discount-wrapper {
+						@extend .pointer-no-select;
+						display: none;
+						align-items: center;
+						border-radius: var(--border-radius-md);
+						border: 1px dashed var(--gray-500);
+						padding: var(--padding-sm) var(--padding-md);
+						margin-bottom: var(--margin-sm);
+
+						> .add-discount-field {
+							width: 100%;
+						}
+
+						.discount-icon {
+							margin-right: var(--margin-sm);
+						}
+
+						.edit-discount-btn {
+							display: flex;
+							align-items: center;
+							font-weight: 500;
+							color: var(--dark-green-500);
+						}
+					}
+
+					> .net-total-container {
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+						padding: var(--padding-sm) 0px;
+						font-weight: 500;
+						font-size: var(--text-md);
+					}
+
+					> .taxes-container {
+						display: none;
+						flex-direction: column;
+						font-weight: 500;
+						font-size: var(--text-md);
+
+						> .tax-row {
+							display: flex;
+							justify-content: space-between;
+							line-height: var(--text-3xl);
+						}
+					}
+
+					> .grand-total-container {
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+						padding: var(--padding-sm) 0px;
+						font-weight: 700;
+						font-size: var(--text-lg);
+					}
+
+					> .checkout-btn {
+						@extend .primary-action;
+						background-color: var(--blue-200);
+						color: white;
+					}
+
+					> .edit-cart-btn {
+						@extend .primary-action;
+						display: none;
+						background-color: var(--gray-300);
+						font-weight: 500;
+						transition: all 0.15s ease-in-out;
+
+						&:hover {
+							background-color: var(--gray-600);
+							color: white;
+							font-weight: 700;
+						}
+					}
+				}
+
+				> .numpad-section {
+					display: none;
+					flex-direction: column;
+					flex-shrink: 0;
+					margin-top: var(--margin-sm);
+					padding: var(--padding-sm);
+					padding-bottom: 0px;
+					width: 100%;
+
+					> .numpad-totals {
+						display: flex;
+						justify-content: space-between;
+						margin-bottom: var(--margin-md);
+						font-size: var(--text-md);
+						font-weight: 700;
+					}
+
+					> .numpad-container {
+						display: grid;
+						grid-template-columns: repeat(5, minmax(0, 1fr));
+						gap: var(--margin-md);
+						margin-bottom: var(--margin-md);
+
+						> .numpad-btn {
+							@extend .pointer-no-select;
+							border-radius: var(--border-radius-md);
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							padding: var(--padding-md);
+							box-shadow: var(--shadow-sm);
+						}
+
+						> .col-span-2 {
+							grid-column: span 2 / span 2;
+						}
+
+						> .remove-btn {
+							font-weight: 700;
+							color: var(--red-500);
+						}
+					}
+
+					> .checkout-btn {
+						@extend .primary-action;
+						margin: 0px;
+						margin-bottom: var(--margin-sm);
+						background-color: var(--blue-200);
+						color: white;
+					}
+				}
+			}
+		}
+	}
+
+	.invoice-wrapper {
+		@extend .pointer-no-select;
+		display: flex;
+		justify-content: space-between;
+		border-radius: var(--border-radius-md);
+		padding: var(--padding-sm);
+
+		&:hover {
+			background-color: var(--gray-50);
+		}
+
+		> .invoice-name-date {
+			display: flex;
+			flex-direction: column;
+			justify-content: space-around;
+
+			> .invoice-name {
+				@extend .nowrap;
+				font-size: var(--text-md);
+				font-weight: 700;
+			}
+
+			> .invoice-date {
+				@extend .nowrap;
+				font-size: var(--text-sm);
+				display: flex;
+				align-items: center;
+			}
+		}
+
+		> .invoice-total-status {
+			display: flex;
+			flex-direction: column;
+			font-weight: 500;
+			font-size: var(--text-sm);
+			margin-left: var(--margin-md);
+
+			> .invoice-total {
+				margin-bottom: var(--margin-xs);
+				font-size: var(--text-base);
+				font-weight: 700;
+				text-align: right;
+			}
+
+			> .invoice-status {
+				display: flex;
+				align-items: center;
+				justify-content: right;
+			}
+		}
+	}
+
+	> .item-details-container {
+		@extend .pos-card;
+		grid-column: span 4 / span 4;
+		display: none;
+		flex-direction: column;
+		padding: var(--padding-lg);
+		padding-top: var(--padding-md);
+
+		> .item-details-header {
+			display: flex;
+			justify-content: space-between;
+			margin-bottom: var(--margin-md);
+
+			> .close-btn {
+				@extend .pointer-no-select;
+			}
+		}
+
+		> .item-display {
+			display: flex;
+
+			> .item-name-desc-price {
+				flex: 1 1 0%;
+				display: flex;
+				flex-direction: column;
+				justify-content: flex-end;
+				margin-right: var(--margin-md);
+
+				> .item-name {
+					font-size: var(--text-3xl);
+					font-weight: 600;
+				}
+
+				> .item-desc {
+					font-size: var(--text-md);
+					font-weight: 500;
+				}
+
+				> .item-price {
+					font-size: var(--text-3xl);
+					font-weight: 700;
+				}
+			}
+
+			> .item-image {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				width: 11rem;
+				height: 11rem;
+				border-radius: var(--border-radius-md);
+				margin-left: var(--margin-md);
+				color: var(--gray-500);
+
+				> img {
+					@extend .image;
+				}
+
+				> .item-abbr {
+					@extend .abbr;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					border-radius: var(--border-radius-md);
+					font-size: var(--text-3xl);
+					width: 100%;
+					height: 100%;
+				}
+			}
+		}
+
+		> .discount-section {
+			display: flex;
+			align-items: center;
+			margin-bottom: var(--margin-sm);
+
+			> .item-rate {
+				font-weight: 500;
+				margin-right: var(--margin-sm);
+				text-decoration: line-through;
+			}
+
+			> .item-discount {
+				padding: 3px var(--padding-sm);
+				border-radius: var(--border-radius-sm);
+				background-color: var(--green-100);
+				color: var(--dark-green-500);
+				font-size: var(--text-sm);
+				font-weight: 700;
+			}
+		}
+
+		> .form-container {
+			display: grid;
+			grid-template-columns: repeat(2, minmax(0, 1fr));
+			column-gap: var(--padding-md);
+
+			> .auto-fetch-btn {
+				@extend .pointer-no-select;
+				margin: var(--margin-xs);
+			}
+		}
+	}
+
+	> .payment-container {
+		@extend .pos-card;
+		grid-column: span 6 / span 6;
+		display: none;
+		flex-direction: column;
+		padding: var(--padding-lg);
+
+		.border-primary {
+			border: 1px solid var(--blue-500);
+		}
+
+		.submit-order-btn {
+			@extend .primary-action;
+			background-color: var(--blue-500);
+			color: white;
+		}
+
+		.section-label {
+			@extend .label;
+			@extend .pointer-no-select;
+			margin-bottom: var(--margin-md);
+		}
+
+		> .payment-modes {
+			display: flex;
+			padding-bottom: var(--padding-sm);
+			margin-bottom: var(--margin-xs);
+			overflow-x: scroll;
+			overflow-y: hidden;
+
+			> .payment-mode-wrapper {
+				min-width: 40%;
+				padding: var(--padding-xs);
+
+				> .mode-of-payment {
+					@extend .pos-card;
+					@extend .pointer-no-select;
+					padding: var(--padding-md) var(--padding-lg);
+
+					> .pay-amount {
+						display: inline;
+						float: right;
+						font-weight: 700;
+					}
+
+					> .mode-of-payment-control {
+						display: none;
+						align-items: center;
+						margin-top: var(--margin-sm);
+						margin-bottom: var(--margin-xs);
+					}
+
+					> .loyalty-amount-name {
+						display: none;
+						float: right;
+						font-weight: 700;
+					}
+
+					> .cash-shortcuts {
+						display: none;
+						grid-template-columns: repeat(3, minmax(0, 1fr));
+						gap: var(--margin-sm);
+						font-size: var(--text-sm);
+						text-align: center;
+
+						> .shortcut {
+							@extend .pointer-no-select;
+							border-radius: var(--border-radius-sm);
+							background-color: var(--gray-100);
+							font-weight: 500;
+							padding: var(--padding-xs) var(--padding-sm);
+							transition: all 0.15s ease-in-out;
+
+							&:hover {
+								background-color: var(--gray-300);
+							}
+						}
+					}
+				}
+			}
+		}
+
+		> .fields-numpad-container {
+			display: flex;
+			flex: 1;
+
+			> .fields-section {
+				flex: 1;
+			}
+			
+			> .number-pad {
+				flex: 1;
+				display: flex;
+				justify-content: flex-end;
+				align-items: flex-end;
+
+				.numpad-container {
+					display: grid;
+					grid-template-columns: repeat(3, minmax(0, 1fr));
+					gap: var(--margin-md);
+					margin-bottom: var(--margin-md);
+			
+					> .numpad-btn {
+						@extend .pointer-no-select;
+						border-radius: var(--border-radius-md);
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						padding: var(--padding-md);
+						box-shadow: var(--shadow-sm);
+					}
+				}
+			}
+		}
+
+		> .totals-section {
+			display: flex;
+			margin-top: auto;
+			margin-bottom: var(--margin-sm);
+			justify-content: center;
+			flex-direction: column;
+
+			> .totals {
+				display: flex;
+				padding-top: var(--padding-md);
+				background-color: var(--gray-100);
+				justify-content: center;
+				padding: var(--padding-md);
+				border-radius: var(--border-radius-md);
+
+				> .col {
+					flex-grow: 1;
+					text-align: center;
+
+					> .total-label {
+						font-size: var(--text-md);
+						font-weight: 500;
+						color: var(--gray-600);
+					}
+	
+					> .value {
+						font-size: var(--text-2xl);
+						font-weight: 700;
+					}
+				}
+
+				> .seperator-y {
+					margin-left: var(--margin-sm);
+					margin-right: var(--margin-sm);
+					border-right: 1px solid var(--gray-300);
+				}
+			}
+
+			> .number-pad {
+				display: none;
+			}
+		}
+	}
+
+	> .past-order-list {
+		@extend .pos-card;
+		grid-column: span 4 / span 4;
+		display: none;
+		flex-direction: column;
+		overflow: hidden;
+
+		> .filter-section {
+			display: flex;
+			flex-direction: column;
+			background-color: var(--fg-color);
+			padding: var(--padding-lg);
+
+			> .search-field {
+				width: 100%;
+				display: flex;
+				align-items: center;
+				margin-top: var(--margin-md);
+				margin-bottom: var(--margin-xs);
+			}
+
+			> .status-field {
+				width: 100%;
+				display: flex;
+				align-items: center;
+			}
+		}
+
+		> .invoices-container {
+			padding: var(--padding-lg);
+			padding-top: 0px;
+			overflow-x: hidden;
+			overflow-y: scroll;
+		}
+	}
+
+	> .past-order-summary {
+		display: none;
+		grid-column: span 6 / span 6;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+
+		> .no-summary-placeholder {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			width: 100%;
+			height: 100%;
+			background-color: var(--gray-50);
+			font-weight: 500;
+			border-radius: var(--border-radius-md);
+		}
+
+		> .invoice-summary-wrapper {
+			@extend .pos-card;
+			display: none;
+			position: relative;
+			width: 31rem;
+			height: 100%;
+
+			> .abs-container {
+				position: absolute;
+				display: flex;
+				flex-direction: column;
+				width: 100%;
+				height: 100%;
+				padding: var(--padding-lg);
+
+				> .upper-section {
+					display: flex;
+					justify-content: space-between;
+					width: 100%;
+					margin-bottom: var(--margin-md);
+
+					> .left-section {
+						display: flex;
+						flex-direction: column;
+						align-items: flex-start;
+						justify-content: flex-end;
+						padding-right: var(--padding-sm);
+
+						> .customer-name {
+							font-size: var(--text-2xl);
+							font-weight: 700;
+						}
+
+						> .customer-email {
+							font-size: var(--text-md);
+							font-weight: 500;
+							color: var(--gray-600);
+						}
+
+						> .cashier {
+							font-size: var(--text-md);
+							font-weight: 500;
+							color: var(--gray-600);
+							margin-top: auto;
+						}
+					}
+
+					> .right-section {
+						display: flex;
+						flex-direction: column;
+						align-items: flex-end;
+						justify-content: space-between;
+
+						> .paid-amount {
+							font-size: var(--text-2xl);
+							font-weight: 700;
+						}
+
+						> .invoice-name {
+							font-size: var(--text-md);
+							font-weight: 500;
+							color: var(--gray-600);
+							margin-bottom: var(--margin-sm);
+						}
+					}
+				}
+
+				> .summary-container {
+					display: flex;
+					flex-direction: column;
+					border-radius: var(--border-radius-md);
+					background-color: var(--gray-50);
+					margin: var(--margin-md) 0px;
+
+					> .summary-row-wrapper {
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+						padding: var(--padding-sm) var(--padding-md);
+					}
+
+					> .taxes-wrapper {
+						display: flex;
+						flex-direction: column;
+						padding: 0px var(--padding-md);
+
+						> .tax-row {
+							display: flex;
+							justify-content: space-between;
+							font-size: var(--text-md);
+							line-height: var(--text-3xl);
+						}
+					}
+
+					> .item-row-wrapper {
+						display: flex;
+						align-items: center;
+						padding: var(--padding-sm) var(--padding-md);
+
+						> .item-name {
+							@extend .nowrap;
+							font-weight: 500;
+							margin-right: var(--margin-md);
+						}
+	
+						> .item-qty {
+							font-weight: 500;
+							margin-left: auto;
+						}
+	
+						> .item-rate-disc {
+							display: flex;
+							text-align: right;
+							margin-left: var(--margin-md);
+							justify-content: flex-end;
+	
+							> .item-disc {
+								color: var(--dark-green-500);
+							}
+	
+							> .item-rate {
+								font-weight: 500;
+								margin-left: var(--margin-md);
+							}
+						}
+					}
+
+					> .grand-total {
+						font-weight: 700;
+					}
+
+					> .payments {
+						font-weight: 700;
+					}
+				}
+
+
+				> .summary-btns {
+					display: flex;
+					justify-content: space-between;
+
+					> .summary-btn {
+						flex: 1;
+						margin: 0px var(--margin-xs);
+					}
+
+					> .new-btn {
+						background-color: var(--blue-500);
+						color:white;
+						font-weight: 500;
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/erpnext/public/scss/website.scss b/erpnext/public/scss/website.scss
index 617e916..24a1b37 100644
--- a/erpnext/public/scss/website.scss
+++ b/erpnext/public/scss/website.scss
@@ -1,4 +1,4 @@
-@import "frappe/public/scss/variables";
+@import "frappe/public/scss/website/variables";
 
 .product-image img {
 	min-height: 20rem;
diff --git a/erpnext/quality_management/desk_page/quality/quality.json b/erpnext/quality_management/desk_page/quality/quality.json
deleted file mode 100644
index 7a049b2..0000000
--- a/erpnext/quality_management/desk_page/quality/quality.json
+++ /dev/null
@@ -1,88 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Goal and Procedure",
-   "links": "[\n    {\n        \"description\": \"Quality Goal.\",\n        \"label\": \"Quality Goal\",\n        \"name\": \"Quality Goal\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Quality Procedure.\",\n        \"label\": \"Quality Procedure\",\n        \"name\": \"Quality Procedure\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tree of Quality Procedures.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Tree of Procedures\",\n        \"name\": \"Quality Procedure\",\n        \"route\": \"#Tree/Quality Procedure\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Feedback",
-   "links": "[\n    {\n        \"description\": \"Quality Feedback\",\n        \"label\": \"Quality Feedback\",\n        \"name\": \"Quality Feedback\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Quality Feedback Template\",\n        \"label\": \"Quality Feedback Template\",\n        \"name\": \"Quality Feedback Template\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Meeting",
-   "links": "[\n    {\n        \"description\": \"Quality Meeting\",\n        \"label\": \"Quality Meeting\",\n        \"name\": \"Quality Meeting\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Review and Action",
-   "links": "[\n    {\n        \"description\": \"Non Conformance\",\n        \"label\": \"Non Conformance\",\n        \"name\": \"Non Conformance\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Quality Review\",\n        \"label\": \"Quality Review\",\n        \"name\": \"Quality Review\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Quality Action\",\n        \"label\": \"Quality Action\",\n        \"name\": \"Quality Action\",\n        \"type\": \"doctype\"\n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [],
- "creation": "2020-03-02 15:49:28.632014",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Quality",
- "modified": "2020-10-27 16:28:54.138055",
- "modified_by": "Administrator",
- "module": "Quality Management",
- "name": "Quality",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "label": "Quality Goal",
-   "link_to": "Quality Goal",
-   "type": "DocType"
-  },
-  {
-   "doc_view": "Tree",
-   "label": "Quality Procedure",
-   "link_to": "Quality Procedure",
-   "type": "DocType"
-  },
-  {
-   "label": "Quality Inspection",
-   "link_to": "Quality Inspection",
-   "type": "DocType"
-  },
-  {
-   "color": "#ff8989",
-   "doc_view": "",
-   "format": "{} Open",
-   "label": "Quality Review",
-   "link_to": "Quality Review",
-   "stats_filter": "{\"status\": \"Open\"}",
-   "type": "DocType"
-  },
-  {
-   "color": "#ff8989",
-   "doc_view": "",
-   "format": "{} Open",
-   "label": "Quality Action",
-   "link_to": "Quality Action",
-   "stats_filter": "{\"status\": \"Open\"}",
-   "type": "DocType"
-  },
-  {
-   "color": "#ff8989",
-   "doc_view": "",
-   "format": "{} Open",
-   "label": "Non Conformance",
-   "link_to": "Non Conformance",
-   "stats_filter": "{\"status\": \"Open\"}",
-   "type": "DocType"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/quality_management/workspace/quality/quality.json b/erpnext/quality_management/workspace/quality/quality.json
new file mode 100644
index 0000000..e5fef43
--- /dev/null
+++ b/erpnext/quality_management/workspace/quality/quality.json
@@ -0,0 +1,190 @@
+{
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-03-02 15:49:28.632014",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "quality",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Quality",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Goal and Procedure",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quality Goal",
+   "link_to": "Quality Goal",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quality Procedure",
+   "link_to": "Quality Procedure",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Tree of Procedures",
+   "link_to": "Quality Procedure",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Feedback",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quality Feedback",
+   "link_to": "Quality Feedback",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quality Feedback Template",
+   "link_to": "Quality Feedback Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Meeting",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quality Meeting",
+   "link_to": "Quality Meeting",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Review and Action",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Non Conformance",
+   "link_to": "Non Conformance",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quality Review",
+   "link_to": "Quality Review",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quality Action",
+   "link_to": "Quality Action",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:35.120213",
+ "modified_by": "Administrator",
+ "module": "Quality Management",
+ "name": "Quality",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "color": "Grey",
+   "label": "Quality Goal",
+   "link_to": "Quality Goal",
+   "type": "DocType"
+  },
+  {
+   "color": "Grey",
+   "doc_view": "Tree",
+   "label": "Quality Procedure",
+   "link_to": "Quality Procedure",
+   "type": "DocType"
+  },
+  {
+   "color": "Grey",
+   "label": "Quality Inspection",
+   "link_to": "Quality Inspection",
+   "type": "DocType"
+  },
+  {
+   "color": "Grey",
+   "doc_view": "",
+   "format": "{} Open",
+   "label": "Quality Review",
+   "link_to": "Quality Review",
+   "stats_filter": "{\"status\": \"Open\"}",
+   "type": "DocType"
+  },
+  {
+   "color": "Grey",
+   "doc_view": "",
+   "format": "{} Open",
+   "label": "Quality Action",
+   "link_to": "Quality Action",
+   "stats_filter": "{\"status\": \"Open\"}",
+   "type": "DocType"
+  },
+  {
+   "color": "Grey",
+   "doc_view": "",
+   "format": "{} Open",
+   "label": "Non Conformance",
+   "link_to": "Non Conformance",
+   "stats_filter": "{\"status\": \"Open\"}",
+   "type": "DocType"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/regional/india/taxes.js b/erpnext/regional/india/taxes.js
index 87baece..364c0ee 100644
--- a/erpnext/regional/india/taxes.js
+++ b/erpnext/regional/india/taxes.js
@@ -37,6 +37,7 @@
 					doctype: frm.doc.doctype,
 					company: frm.doc.company
 				},
+				debounce: 2000,
 				callback: function(r) {
 					if(r.message) {
 						frm.set_value('taxes_and_charges', r.message.taxes_and_charges);
diff --git a/erpnext/selling/desk_page/retail/retail.json b/erpnext/selling/desk_page/retail/retail.json
deleted file mode 100644
index c4ddf26..0000000
--- a/erpnext/selling/desk_page/retail/retail.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Settings & Configurations",
-   "links": "[\n    {\n        \"description\": \"Setup default values for POS Invoices\",\n        \"label\": \"Point-of-Sale Profile\",\n        \"name\": \"POS Profile\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"POS Settings\",\n        \"name\": \"POS Settings\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Loyalty Program",
-   "links": "[\n    {\n        \"description\": \"To make Customer based incentive schemes.\",\n        \"label\": \"Loyalty Program\",\n        \"name\": \"Loyalty Program\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"To view logs of Loyalty Points assigned to a Customer.\",\n        \"label\": \"Loyalty Point Entry\",\n        \"name\": \"Loyalty Point Entry\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Opening & Closing",
-   "links": "[\n    {\n        \"label\": \"POS Opening Entry\",\n        \"name\": \"POS Opening Entry\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"POS Closing Entry\",\n        \"name\": \"POS Closing Entry\",\n        \"type\": \"doctype\"\n    }\n]"
-  }
- ],
- "category": "Domains",
- "charts": [],
- "creation": "2020-03-02 17:18:32.505616",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Retail",
- "modified": "2020-09-09 11:46:28.297435",
- "modified_by": "Administrator",
- "module": "Selling",
- "name": "Retail",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "restrict_to_domain": "Retail",
- "shortcuts": [
-  {
-   "doc_view": "",
-   "label": "Point Of Sale",
-   "link_to": "point-of-sale",
-   "type": "Page"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/selling/desk_page/selling/selling.json b/erpnext/selling/desk_page/selling/selling.json
deleted file mode 100644
index b15df98..0000000
--- a/erpnext/selling/desk_page/selling/selling.json
+++ /dev/null
@@ -1,92 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Selling",
-   "links": "[\n    {\n        \"description\": \"Customer Database.\",\n        \"label\": \"Customer\",\n        \"name\": \"Customer\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Customer\"\n        ],\n        \"description\": \"Quotes to Leads or Customers.\",\n        \"label\": \"Quotation\",\n        \"name\": \"Quotation\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Customer\"\n        ],\n        \"description\": \"Confirmed orders from Customers.\",\n        \"label\": \"Sales Order\",\n        \"name\": \"Sales Order\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n     {\n        \"dependencies\": [\n            \"Item\",\n            \"Customer\"\n        ],\n        \"label\": \"Sales Invoice\",\n        \"name\": \"Sales Invoice\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Customer\"\n        ],\n        \"description\": \"Blanket Orders from Costumers.\",\n        \"label\": \"Blanket Order\",\n        \"name\": \"Blanket Order\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"description\": \"Manage Sales Partners.\",\n        \"label\": \"Sales Partner\",\n        \"name\": \"Sales Partner\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Customer\"\n        ],\n        \"description\": \"Manage Sales Person Tree.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Sales Person\",\n        \"link\": \"Tree/Sales Person\",\n        \"name\": \"Sales Person\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Items and Pricing",
-   "links": "[\n    {\n        \"description\": \"All Products or Services.\",\n        \"label\": \"Item\",\n        \"name\": \"Item\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Price List\"\n        ],\n        \"description\": \"Multiple Item prices.\",\n        \"label\": \"Item Price\",\n        \"name\": \"Item Price\",\n        \"onboard\": 1,\n        \"route\": \"#Report/Item Price\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Price List master.\",\n        \"label\": \"Price List\",\n        \"name\": \"Price List\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tree of Item Groups.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Item Group\",\n        \"link\": \"Tree/Item Group\",\n        \"name\": \"Item Group\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"description\": \"Bundle items at time of sale.\",\n        \"label\": \"Product Bundle\",\n        \"name\": \"Product Bundle\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Rules for applying different promotional schemes.\",\n        \"label\": \"Promotional Scheme\",\n        \"name\": \"Promotional Scheme\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"description\": \"Rules for applying pricing and discount.\",\n        \"label\": \"Pricing Rule\",\n        \"name\": \"Pricing Rule\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Rules for adding shipping costs.\",\n        \"label\": \"Shipping Rule\",\n        \"name\": \"Shipping Rule\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Define coupon codes.\",\n        \"label\": \"Coupon Code\",\n        \"name\": \"Coupon Code\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Settings",
-   "links": "[\n    {\n        \"description\": \"Default settings for selling transactions.\",\n        \"label\": \"Selling Settings\",\n        \"name\": \"Selling Settings\",\n        \"settings\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Template of terms or contract.\",\n        \"label\": \"Terms and Conditions Template\",\n        \"name\": \"Terms and Conditions\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tax template for selling transactions.\",\n        \"label\": \"Sales Taxes and Charges Template\",\n        \"name\": \"Sales Taxes and Charges Template\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Track Leads by Lead Source.\",\n        \"label\": \"Lead Source\",\n        \"name\": \"Lead Source\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Manage Customer Group Tree.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Customer Group\",\n        \"link\": \"Tree/Customer Group\",\n        \"name\": \"Customer Group\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"All Contacts.\",\n        \"label\": \"Contact\",\n        \"name\": \"Contact\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"All Addresses.\",\n        \"label\": \"Address\",\n        \"name\": \"Address\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Manage Territory Tree.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Territory\",\n        \"link\": \"Tree/Territory\",\n        \"name\": \"Territory\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Sales campaigns.\",\n        \"label\": \"Campaign\",\n        \"name\": \"Campaign\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Key Reports",
-   "links": "[\n    {\n     \n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Analytics\",\n        \"name\": \"Sales Analytics\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Order Analysis\",\n        \"name\": \"Sales Order Analysis\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"icon\": \"fa fa-bar-chart\",\n        \"label\": \"Sales Funnel\",\n        \"name\": \"sales-funnel\",\n        \"onboard\": 1,\n        \"type\": \"page\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Order Trends\",\n        \"name\": \"Sales Order Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Quotation\"\n        ],\n        \"doctype\": \"Quotation\",\n        \"is_query_report\": true,\n        \"label\": \"Quotation Trends\",\n        \"name\": \"Quotation Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Customer\"\n        ],\n        \"doctype\": \"Customer\",\n        \"icon\": \"fa fa-bar-chart\",\n        \"is_query_report\": true,\n        \"label\": \"Customer Acquisition and Loyalty\",\n        \"name\": \"Customer Acquisition and Loyalty\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Inactive Customers\",\n        \"name\": \"Inactive Customers\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Person-wise Transaction Summary\",\n        \"name\": \"Sales Person-wise Transaction Summary\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Item\",\n        \"is_query_report\": true,\n        \"label\": \"Item-wise Sales History\",\n        \"name\": \"Item-wise Sales History\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Other Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Lead\"\n        ],\n        \"doctype\": \"Lead\",\n        \"is_query_report\": true,\n        \"label\": \"Lead Details\",\n        \"name\": \"Lead Details\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Address\"\n        ],\n        \"doctype\": \"Address\",\n        \"is_query_report\": true,\n        \"label\": \"Customer Addresses And Contacts\",\n        \"name\": \"Address And Contacts\",\n        \"route_options\": {\n            \"party_type\": \"Customer\"\n        },\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Item\",\n        \"is_query_report\": true,\n        \"label\": \"Available Stock for Packing Items\",\n        \"name\": \"Available Stock for Packing Items\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Pending SO Items For Purchase Request\",\n        \"name\": \"Pending SO Items For Purchase Request\",\n        \"type\": \"report\"\n    },\n     {\n        \"dependencies\": [\n            \"Delivery Note\"\n        ],\n        \"doctype\": \"Delivery Note\",\n        \"is_query_report\": true,\n        \"label\": \"Delivery Note Trends\",\n        \"name\": \"Delivery Note Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Invoice\"\n        ],\n        \"doctype\": \"Sales Invoice\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Invoice Trends\",\n        \"name\": \"Sales Invoice Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Customer\"\n        ],\n        \"doctype\": \"Customer\",\n        \"is_query_report\": true,\n        \"label\": \"Customer Credit Balance\",\n        \"name\": \"Customer Credit Balance\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Customer\"\n        ],\n        \"doctype\": \"Customer\",\n        \"is_query_report\": true,\n        \"label\": \"Customers Without Any Sales Transactions\",\n        \"name\": \"Customers Without Any Sales Transactions\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Customer\"\n        ],\n        \"doctype\": \"Customer\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Partners Commission\",\n        \"name\": \"Sales Partners Commission\",\n        \"type\": \"report\"\n    },\n     {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Territory Target Variance Based On Item Group\",\n        \"name\": \"Territory Target Variance Based On Item Group\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Person Target Variance Based On Item Group\",\n        \"name\": \"Sales Person Target Variance Based On Item Group\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Partner Target Variance Based On Item Group\",\n        \"name\": \"Sales Partner Target Variance based on Item Group\",\n        \"type\": \"report\"\n    }\n    \n]"
-  }
- ],
- "category": "Modules",
- "charts": [
-  {
-   "chart_name": "Sales Order Trends",
-   "label": "Sales Order Trends"
-  }
- ],
- "charts_label": "Selling ",
- "creation": "2020-01-28 11:49:12.092882",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 1,
- "idx": 0,
- "is_standard": 1,
- "label": "Selling",
- "modified": "2020-10-08 10:23:09.984377",
- "modified_by": "Administrator",
- "module": "Selling",
- "name": "Selling",
- "onboarding": "Selling",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "color": "#cef6d1",
-   "format": "{} Available",
-   "label": "Item",
-   "link_to": "Item",
-   "stats_filter": "{\n    \"disabled\":0\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "#ffe8cd",
-   "format": "{}  To Deliver",
-   "label": "Sales Order",
-   "link_to": "Sales Order",
-   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\":[\"in\", [\"To Deliver\", \"To Deliver and Bill\"]]\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "#cef6d1",
-   "format": "{} Open",
-   "label": "Sales Analytics",
-   "link_to": "Sales Analytics",
-   "stats_filter": "{ \"Status\": \"Open\" }",
-   "type": "Report"
-  },
-  {
-   "label": "Sales Order Analysis",
-   "link_to": "Sales Order Analysis",
-   "type": "Report"
-  },
-  {
-   "label": "Dashboard",
-   "link_to": "Selling",
-   "type": "Dashboard"
-  }
- ],
- "shortcuts_label": "Quick Access"
-}
\ No newline at end of file
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 36b584d..5da248c 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -19,7 +19,7 @@
 			self.indicator_color = 'blue'
 			self.indicator_title = 'Submitted'
 		if self.valid_till and getdate(self.valid_till) < getdate(nowdate()):
-			self.indicator_color = 'darkgrey'
+			self.indicator_color = 'gray'
 			self.indicator_title = 'Expired'
 
 	def validate(self):
diff --git a/erpnext/selling/doctype/quotation/quotation_list.js b/erpnext/selling/doctype/quotation/quotation_list.js
index f425acf..b631685 100644
--- a/erpnext/selling/doctype/quotation/quotation_list.js
+++ b/erpnext/selling/doctype/quotation/quotation_list.js
@@ -20,9 +20,9 @@
 		} else if(doc.status==="Ordered") {
 			return [__("Ordered"), "green", "status,=,Ordered"];
 		} else if(doc.status==="Lost") {
-			return [__("Lost"), "darkgrey", "status,=,Lost"];
+			return [__("Lost"), "gray", "status,=,Lost"];
 		} else if(doc.status==="Expired") {
-			return [__("Expired"), "darkgrey", "status,=,Expired"];
+			return [__("Expired"), "gray", "status,=,Expired"];
 		}
 	}
 };
diff --git a/erpnext/selling/doctype/quotation_item/quotation_item.py b/erpnext/selling/doctype/quotation_item/quotation_item.py
index 966b542..7384871 100644
--- a/erpnext/selling/doctype/quotation_item/quotation_item.py
+++ b/erpnext/selling/doctype/quotation_item/quotation_item.py
@@ -5,8 +5,6 @@
 import frappe
 
 from frappe.model.document import Document
-from erpnext.controllers.print_settings import print_settings_for_item_table
 
 class QuotationItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index d4fb07c..842566b 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -327,7 +327,7 @@
 									if(r.message) {
 										frappe.msgprint({
 											message: __('Work Orders Created: {0}', [r.message.map(function(d) {
-													return repl('<a href="#Form/Work Order/%(name)s">%(name)s</a>', {name:d})
+													return repl('<a href="/app/work-order/%(name)s">%(name)s</a>', {name:d})
 												}).join(', ')]),
 											indicator: 'green'
 										})
@@ -436,7 +436,7 @@
 					callback: function(r) {
 						if(r.message) {
 							frappe.msgprint(__('Material Request {0} submitted.',
-							['<a href="#Form/Material Request/'+r.message.name+'">' + r.message.name+ '</a>']));
+							['<a href="/app/material-request/'+r.message.name+'">' + r.message.name+ '</a>']));
 						}
 						d.hide();
 						me.frm.reload_doc();
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.py b/erpnext/selling/doctype/sales_order_item/sales_order_item.py
index 4a87a0c..27f303d 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.py
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.py
@@ -5,11 +5,9 @@
 import frappe
 
 from frappe.model.document import Document
-from erpnext.controllers.print_settings import print_settings_for_item_table
 
 class SalesOrderItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
 
 def on_doctype_update():
 	frappe.db.add_index("Sales Order Item", ["item_code", "warehouse"])
\ No newline at end of file
diff --git a/erpnext/selling/page/point_of_sale/onscan.js b/erpnext/selling/page/point_of_sale/onscan.js
deleted file mode 100644
index 428dc75..0000000
--- a/erpnext/selling/page/point_of_sale/onscan.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t()):e.onScan=t()}(this,function(){var d={attachTo:function(e,t){if(void 0!==e.scannerDetectionData)throw new Error("onScan.js is already initialized for DOM element "+e);var n={onScan:function(e,t){},onScanError:function(e){},onKeyProcess:function(e,t){},onKeyDetect:function(e,t){},onPaste:function(e,t){},keyCodeMapper:function(e){return d.decodeKeyEvent(e)},onScanButtonLongPress:function(){},scanButtonKeyCode:!1,scanButtonLongPressTime:500,timeBeforeScanTest:100,avgTimeByChar:30,minLength:6,suffixKeyCodes:[9,13],prefixKeyCodes:[],ignoreIfFocusOn:!1,stopPropagation:!1,preventDefault:!1,captureEvents:!1,reactToKeydown:!0,reactToPaste:!1,singleScanQty:1};return t=this._mergeOptions(n,t),e.scannerDetectionData={options:t,vars:{firstCharTime:0,lastCharTime:0,accumulatedString:"",testTimer:!1,longPressTimeStart:0,longPressed:!1}},!0===t.reactToPaste&&e.addEventListener("paste",this._handlePaste,t.captureEvents),!1!==t.scanButtonKeyCode&&e.addEventListener("keyup",this._handleKeyUp,t.captureEvents),!0!==t.reactToKeydown&&!1===t.scanButtonKeyCode||e.addEventListener("keydown",this._handleKeyDown,t.captureEvents),this},detachFrom:function(e){e.scannerDetectionData.options.reactToPaste&&e.removeEventListener("paste",this._handlePaste),!1!==e.scannerDetectionData.options.scanButtonKeyCode&&e.removeEventListener("keyup",this._handleKeyUp),e.removeEventListener("keydown",this._handleKeyDown),e.scannerDetectionData=void 0},getOptions:function(e){return e.scannerDetectionData.options},setOptions:function(e,t){switch(e.scannerDetectionData.options.reactToPaste){case!0:!1===t.reactToPaste&&e.removeEventListener("paste",this._handlePaste);break;case!1:!0===t.reactToPaste&&e.addEventListener("paste",this._handlePaste)}switch(e.scannerDetectionData.options.scanButtonKeyCode){case!1:!1!==t.scanButtonKeyCode&&e.addEventListener("keyup",this._handleKeyUp);break;default:!1===t.scanButtonKeyCode&&e.removeEventListener("keyup",this._handleKeyUp)}return e.scannerDetectionData.options=this._mergeOptions(e.scannerDetectionData.options,t),this._reinitialize(e),this},decodeKeyEvent:function(e){var t=this._getNormalizedKeyNum(e);switch(!0){case 48<=t&&t<=90:case 106<=t&&t<=111:if(void 0!==e.key&&""!==e.key)return e.key;var n=String.fromCharCode(t);switch(e.shiftKey){case!1:n=n.toLowerCase();break;case!0:n=n.toUpperCase()}return n;case 96<=t&&t<=105:return t-96}return""},simulate:function(e,t){return this._reinitialize(e),Array.isArray(t)?t.forEach(function(e){var t={};"object"!=typeof e&&"function"!=typeof e||null===e?t.keyCode=parseInt(e):t=e;var n=new KeyboardEvent("keydown",t);document.dispatchEvent(n)}):this._validateScanCode(e,t),this},_reinitialize:function(e){var t=e.scannerDetectionData.vars;t.firstCharTime=0,t.lastCharTime=0,t.accumulatedString=""},_isFocusOnIgnoredElement:function(e){var t=e.scannerDetectionData.options.ignoreIfFocusOn;if(!t)return!1;var n=document.activeElement;if(Array.isArray(t)){for(var a=0;a<t.length;a++)if(!0===n.matches(t[a]))return!0}else if(n.matches(t))return!0;return!1},_validateScanCode:function(e,t){var n,a=e.scannerDetectionData,i=a.options,o=a.options.singleScanQty,r=a.vars.firstCharTime,s=a.vars.lastCharTime,c={};switch(!0){case t.length<i.minLength:c={message:"Receieved code is shorter then minimal length"};break;case s-r>t.length*i.avgTimeByChar:c={message:"Receieved code was not entered in time"};break;default:return i.onScan.call(e,t,o),n=new CustomEvent("scan",{detail:{scanCode:t,qty:o}}),e.dispatchEvent(n),d._reinitialize(e),!0}return c.scanCode=t,c.scanDuration=s-r,c.avgTimeByChar=i.avgTimeByChar,c.minLength=i.minLength,i.onScanError.call(e,c),n=new CustomEvent("scanError",{detail:c}),e.dispatchEvent(n),d._reinitialize(e),!1},_mergeOptions:function(e,t){var n,a={};for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&(a[n]=e[n]);for(n in t)Object.prototype.hasOwnProperty.call(t,n)&&(a[n]=t[n]);return a},_getNormalizedKeyNum:function(e){return e.which||e.keyCode},_handleKeyDown:function(e){var t=d._getNormalizedKeyNum(e),n=this.scannerDetectionData.options,a=this.scannerDetectionData.vars,i=!1;if(!1!==n.onKeyDetect.call(this,t,e)&&!d._isFocusOnIgnoredElement(this))if(!1===n.scanButtonKeyCode||t!=n.scanButtonKeyCode){switch(!0){case a.firstCharTime&&-1!==n.suffixKeyCodes.indexOf(t):e.preventDefault(),e.stopImmediatePropagation(),i=!0;break;case!a.firstCharTime&&-1!==n.prefixKeyCodes.indexOf(t):e.preventDefault(),e.stopImmediatePropagation(),i=!1;break;default:var o=n.keyCodeMapper.call(this,e);if(null===o)return;a.accumulatedString+=o,n.preventDefault&&e.preventDefault(),n.stopPropagation&&e.stopImmediatePropagation(),i=!1}a.firstCharTime||(a.firstCharTime=Date.now()),a.lastCharTime=Date.now(),a.testTimer&&clearTimeout(a.testTimer),i?(d._validateScanCode(this,a.accumulatedString),a.testTimer=!1):a.testTimer=setTimeout(d._validateScanCode,n.timeBeforeScanTest,this,a.accumulatedString),n.onKeyProcess.call(this,o,e)}else a.longPressed||(a.longPressTimer=setTimeout(n.onScanButtonLongPress,n.scanButtonLongPressTime,this),a.longPressed=!0)},_handlePaste:function(e){if(!d._isFocusOnIgnoredElement(this)){e.preventDefault(),oOptions.stopPropagation&&e.stopImmediatePropagation();var t=(event.clipboardData||window.clipboardData).getData("text");this.scannerDetectionData.options.onPaste.call(this,t,event);var n=this.scannerDetectionData.vars;n.firstCharTime=0,n.lastCharTime=0,d._validateScanCode(this,t)}},_handleKeyUp:function(e){d._isFocusOnIgnoredElement(this)||d._getNormalizedKeyNum(e)==this.scannerDetectionData.options.scanButtonKeyCode&&(clearTimeout(this.scannerDetectionData.vars.longPressTimer),this.scannerDetectionData.vars.longPressed=!1)},isScanInProgressFor:function(e){return 0<e.scannerDetectionData.vars.firstCharTime}};return d});
\ No newline at end of file
diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.js b/erpnext/selling/page/point_of_sale/point_of_sale.js
index 9d44a9f..6d8ad7e 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.js
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.js
@@ -1,7 +1,4 @@
-/* global Clusterize */
 frappe.provide('erpnext.PointOfSale');
-{% include "erpnext/selling/page/point_of_sale/pos_controller.js" %}
-frappe.provide('erpnext.queries');
 
 frappe.pages['point-of-sale'].on_page_load = function(wrapper) {
 	frappe.ui.make_app_page({
@@ -10,8 +7,10 @@
 		single_column: true
 	});
 
-	wrapper.pos = new erpnext.PointOfSale.Controller(wrapper);
-	window.cur_pos = wrapper.pos;
+	frappe.require('assets/js/point-of-sale.min.js', function() {
+		wrapper.pos = new erpnext.PointOfSale.Controller(wrapper);
+		window.cur_pos = wrapper.pos;
+	})
 };
 
 frappe.pages['point-of-sale'].refresh = function(wrapper) {
diff --git a/erpnext/selling/page/point_of_sale/pos_controller.js b/erpnext/selling/page/point_of_sale/pos_controller.js
index d4cde43..faf9b5c 100644
--- a/erpnext/selling/page/point_of_sale/pos_controller.js
+++ b/erpnext/selling/page/point_of_sale/pos_controller.js
@@ -1,23 +1,9 @@
-{% include "erpnext/selling/page/point_of_sale/onscan.js" %}
-{% include "erpnext/selling/page/point_of_sale/pos_item_selector.js" %}
-{% include "erpnext/selling/page/point_of_sale/pos_item_cart.js" %}
-{% include "erpnext/selling/page/point_of_sale/pos_item_details.js" %}
-{% include "erpnext/selling/page/point_of_sale/pos_payment.js" %}
-{% include "erpnext/selling/page/point_of_sale/pos_number_pad.js" %}
-{% include "erpnext/selling/page/point_of_sale/pos_past_order_list.js" %}
-{% include "erpnext/selling/page/point_of_sale/pos_past_order_summary.js" %}
-
 erpnext.PointOfSale.Controller = class {
 	constructor(wrapper) {
 		this.wrapper = $(wrapper).find('.layout-main-section');
 		this.page = wrapper.page;
 
-		this.load_assets();
-	}
-
-	load_assets() {
-		// after loading assets first check if opening entry has been made
-		frappe.require(['assets/erpnext/css/pos.css'], this.check_opening_entry.bind(this));
+		this.check_opening_entry();
 	}
 
 	fetch_opening_entry() {
@@ -36,6 +22,7 @@
 	}
 
 	create_opening_voucher() {
+		const me = this;
 		const table_fields = [
 			{
 				fieldname: "mode_of_payment", fieldtype: "Link",
@@ -45,7 +32,7 @@
 			{
 				fieldname: "opening_amount", fieldtype: "Currency",
 				in_list_view: 1, label: "Opening Amount",
-				options: "company:company_currency", 
+				options: "company:company_currency",
 				change: function () {
 					dialog.fields_dict.balance_details.df.data.some(d => {
 						if (d.idx == this.doc.idx) {
@@ -93,7 +80,7 @@
 					fields: table_fields
 				}
 			],
-			primary_action: async ({ company, pos_profile, balance_details }) => {
+			primary_action: async function({ company, pos_profile, balance_details }) {
 				if (!balance_details.length) {
 					frappe.show_alert({
 						message: __("Please add Mode of payments and opening balance details."),
@@ -103,7 +90,7 @@
 				}
 				const method = "erpnext.selling.page.point_of_sale.point_of_sale.create_opening_voucher";
 				const res = await frappe.call({ method, args: { pos_profile, company, balance_details }, freeze:true });
-				!res.exc && this.prepare_app_defaults(res.message);
+				!res.exc && me.prepare_app_defaults(res.message);
 				dialog.hide();
 			},
 			primary_action_label: __('Submit')
@@ -141,26 +128,18 @@
 	}
 
 	make_app() {
-		return frappe.run_serially([
-			() => frappe.dom.freeze(),
-			() => {
-				this.set_opening_entry_status();
-				this.prepare_dom();
-				this.prepare_components();
-				this.prepare_menu();
-			},
-			() => this.make_new_invoice(),
-			() => frappe.dom.unfreeze(),
-			() => this.page.set_title(__('Point of Sale')),
-		]);
+		this.prepare_dom();
+		this.prepare_components();
+		this.prepare_menu();
+		this.make_new_invoice();
 	}
 
 	prepare_dom() {
 		this.wrapper.append(
-			`<div class="app grid grid-cols-10 pt-8 gap-6"></div>`
+			`<div class="point-of-sale-app"></div>`
 		);
 
-		this.$components_wrapper = this.wrapper.find('.app');
+		this.$components_wrapper = this.wrapper.find('.point-of-sale-app');
 	}
 
 	prepare_components() {
@@ -190,7 +169,7 @@
 	}
 
 	toggle_recent_order() {
-		const show = this.recent_order_list.$component.hasClass('d-none');
+		const show = this.recent_order_list.$component.is(':hidden');
 		this.toggle_recent_order_list(show);
 	}
 
@@ -199,7 +178,7 @@
 
 		if (this.frm.doc.items.length == 0) {
 			frappe.show_alert({
-				message:__("You must add atleast one item to save it as draft."), 
+				message:__("You must add atleast one item to save it as draft."),
 				indicator:'red'
 			});
 			frappe.utils.play_sound("error");
@@ -208,7 +187,7 @@
 
 		this.frm.save(undefined, undefined, undefined, () => {
 			frappe.show_alert({
-				message:__("There was an error saving the document."), 
+				message:__("There was an error saving the document."),
 				indicator:'red'
 			});
 			frappe.utils.play_sound("error");
@@ -256,7 +235,7 @@
 
 				cart_item_clicked: (item_code, batch_no, uom) => {
 					const item_row = this.frm.doc.items.find(
-						i => i.item_code === item_code 
+						i => i.item_code === item_code
 							&& i.uom === uom
 							&& (!batch_no || (batch_no && i.batch_no === batch_no))
 					);
@@ -354,10 +333,10 @@
 
 				toggle_other_sections: (show) => {
 					if (show) {
-						this.item_details.$component.hasClass('d-none') ? '' : this.item_details.$component.addClass('d-none');
-						this.item_selector.$component.addClass('d-none');
+						this.item_details.$component.is(':visible') ? this.item_details.$component.css('display', 'none') : '';
+						this.item_selector.$component.css('display', 'none');
 					} else {
-						this.item_selector.$component.removeClass('d-none');
+						this.item_selector.$component.css('display', 'flex');
 					}
 				},
 
@@ -386,7 +365,7 @@
 						this.order_summary.load_summary_of(doc);
 					});
 				},
-				reset_summary: () => this.order_summary.show_summary_placeholder()
+				reset_summary: () => this.order_summary.toggle_summary_placeholder(true)
 			}
 		})
 	}
@@ -427,8 +406,6 @@
 		})
 	}
 
-	
-
 	toggle_recent_order_list(show) {
 		this.toggle_components(!show);
 		this.recent_order_list.toggle_component(show);
@@ -445,10 +422,12 @@
 
 	make_new_invoice() {
 		return frappe.run_serially([
+			() => frappe.dom.freeze(),
 			() => this.make_sales_invoice_frm(),
 			() => this.set_pos_profile_data(),
 			() => this.set_pos_profile_status(),
 			() => this.cart.load_invoice(),
+			() => frappe.dom.unfreeze()
 		]);
 	}
 
@@ -505,16 +484,6 @@
 		return this.frm.trigger("set_pos_data");
 	}
 
-	raise_exception_for_pos_profile() {
-		setTimeout(() => frappe.set_route('List', 'POS Profile'), 2000);
-		frappe.throw(__("POS Profile is required to use Point-of-Sale"));
-	}
-
-	set_invoice_status() {
-		const [status, indicator] = frappe.listview_settings["POS Invoice"].get_indicator(this.frm.doc);
-		this.page.set_indicator(status, indicator);
-	}
-
 	set_pos_profile_status() {
 		this.page.set_indicator(this.pos_profile, "blue");
 	}
@@ -537,7 +506,7 @@
 					const qty_needed = field === 'qty' ? value * item_row.conversion_factor : item_row.qty * value;
 					await this.check_stock_availability(item_row, qty_needed, this.frm.doc.set_warehouse);
 				}
-				
+
 				if (this.is_current_item_being_edited(item_row) || item_selected_from_selector) {
 					await frappe.model.set_value(item_row.doctype, item_row.name, field, value);
 					this.update_cart_html(item_row);
@@ -575,7 +544,7 @@
 
 				this.check_serial_batch_selection_needed(item_row) && this.edit_item_details_of(item_row);
 				this.update_cart_html(item_row);
-			}	
+			}
 		} catch (error) {
 			console.log(error);
 		} finally {
@@ -586,7 +555,7 @@
 	get_item_from_frm(item_code, batch_no, uom) {
 		const has_batch_no = batch_no;
 		return this.frm.doc.items.find(
-			i => i.item_code === item_code 
+			i => i.item_code === item_code
 				&& (!has_batch_no || (has_batch_no && i.batch_no === batch_no))
 				&& (i.uom === uom)
 		);
@@ -615,7 +584,7 @@
 		const no_serial_selected = !item_row.serial_no;
 		const no_batch_selected = !item_row.batch_no;
 
-		if ((serialized && no_serial_selected) || (batched && no_batch_selected) || 
+		if ((serialized && no_serial_selected) || (batched && no_batch_selected) ||
 			(serialized && batched && (no_batch_selected || no_serial_selected))) {
 			return true;
 		}
diff --git a/erpnext/selling/page/point_of_sale/pos_item_cart.js b/erpnext/selling/page/point_of_sale/pos_item_cart.js
index 3938300..37c87bd 100644
--- a/erpnext/selling/page/point_of_sale/pos_item_cart.js
+++ b/erpnext/selling/page/point_of_sale/pos_item_cart.js
@@ -8,7 +8,7 @@
 		
 		this.init_component();
 	}
-	
+
 	init_component() {
 		this.prepare_dom();
 		this.init_child_components();
@@ -18,10 +18,10 @@
 
 	prepare_dom() {
 		this.wrapper.append(
-			`<section class="col-span-4 flex flex-col shadow rounded item-cart bg-white mx-h-70 h-100"></section>`
+			`<section class="customer-cart-container"></section>`
 		)
 
-		this.$component = this.wrapper.find('.item-cart');
+		this.$component = this.wrapper.find('.customer-cart-container');
 	}
 
 	init_child_components() {
@@ -31,33 +31,33 @@
 
 	init_customer_selector() {
 		this.$component.append(
-			`<div class="customer-section rounded flex flex-col m-8 mb-0"></div>`
+			`<div class="customer-section"></div>`
 		)
 		this.$customer_section = this.$component.find('.customer-section');
 		this.make_customer_selector();
 	}
-	
+
 	reset_customer_selector() {
 		const frm = this.events.get_frm();
 		frm.set_value('customer', '');
-		this.$customer_section.removeClass('border pr-4 pl-4');
 		this.make_customer_selector();
 		this.customer_field.set_focus();
 	}
-	
+
 	init_cart_components() {
 		this.$component.append(
-			`<div class="cart-container flex flex-col items-center rounded flex-1 relative">
-				<div class="absolute flex flex-col p-8 pt-0 w-full h-full">
-					<div class="flex text-grey cart-header pt-2 pb-2 p-4 mt-2 mb-2 w-full f-shrink-0">
-						<div class="flex-1">Item</div>
-						<div class="mr-4">Qty</div>
-						<div class="rate-list-header mr-1 text-right">Amount</div>
+			`<div class="cart-container">
+				<div class="abs-cart-container">
+					<div class="cart-label">Item Cart</div>
+					<div class="cart-header">
+						<div class="name-header">Item</div>
+						<div class="qty-header">Qty</div>
+						<div class="rate-amount-header">Amount</div>
 					</div>
-					<div class="cart-items-section flex flex-col flex-1 scroll-y rounded w-full"></div>
-					<div class="cart-totals-section flex flex-col w-full mt-4 f-shrink-0"></div>
-					<div class="numpad-section flex flex-col mt-4 d-none w-full p-8 pt-0 pb-0 f-shrink-0"></div>
-				</div>		
+					<div class="cart-items-section"></div>
+					<div class="cart-totals-section"></div>
+					<div class="numpad-section"></div>
+				</div>
 			</div>`
 		);
 		this.$cart_container = this.$component.find('.cart-container');
@@ -73,54 +73,48 @@
 
 		this.make_no_items_placeholder();
 	}
-	
+
 	make_no_items_placeholder() {
-		this.$cart_header.addClass('d-none');
+		this.$cart_header.css('display', 'none');
 		this.$cart_items_wrapper.html(
-			`<div class="no-item-wrapper flex items-center h-18">
-				<div class="flex-1 text-center text-grey">No items in cart</div>
-			</div>`
-		)
-		this.$cart_items_wrapper.addClass('mt-4 border-grey border-dashed');
+			`<div class="no-item-wrapper">No items in cart</div>`
+		);
+	}
+
+	get_discount_icon() {
+		return (
+			`<svg class="discount-icon" width="24" height="24" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
+				<path d="M19 15.6213C19 15.2235 19.158 14.842 19.4393 14.5607L20.9393 13.0607C21.5251 12.4749 21.5251 11.5251 20.9393 10.9393L19.4393 9.43934C19.158 9.15804 19 8.7765 19 8.37868V6.5C19 5.67157 18.3284 5 17.5 5H15.6213C15.2235 5 14.842 4.84196 14.5607 4.56066L13.0607 3.06066C12.4749 2.47487 11.5251 2.47487 10.9393 3.06066L9.43934 4.56066C9.15804 4.84196 8.7765 5 8.37868 5H6.5C5.67157 5 5 5.67157 5 6.5V8.37868C5 8.7765 4.84196 9.15804 4.56066 9.43934L3.06066 10.9393C2.47487 11.5251 2.47487 12.4749 3.06066 13.0607L4.56066 14.5607C4.84196 14.842 5 15.2235 5 15.6213V17.5C5 18.3284 5.67157 19 6.5 19H8.37868C8.7765 19 9.15804 19.158 9.43934 19.4393L10.9393 20.9393C11.5251 21.5251 12.4749 21.5251 13.0607 20.9393L14.5607 19.4393C14.842 19.158 15.2235 19 15.6213 19H17.5C18.3284 19 19 18.3284 19 17.5V15.6213Z" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
+				<path d="M15 9L9 15" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
+				<path d="M10.5 9.5C10.5 10.0523 10.0523 10.5 9.5 10.5C8.94772 10.5 8.5 10.0523 8.5 9.5C8.5 8.94772 8.94772 8.5 9.5 8.5C10.0523 8.5 10.5 8.94772 10.5 9.5Z" fill="white" stroke-linecap="round" stroke-linejoin="round"/>
+				<path d="M15.5 14.5C15.5 15.0523 15.0523 15.5 14.5 15.5C13.9477 15.5 13.5 15.0523 13.5 14.5C13.5 13.9477 13.9477 13.5 14.5 13.5C15.0523 13.5 15.5 13.9477 15.5 14.5Z" fill="white" stroke-linecap="round" stroke-linejoin="round"/>
+			</svg>`
+		);
 	}
 
 	make_cart_totals_section() {
 		this.$totals_section = this.$component.find('.cart-totals-section');
 
 		this.$totals_section.append(
-			`<div class="add-discount flex items-center pt-4 pb-4 pr-4 pl-4 text-grey pointer no-select d-none">
-				+ Add Discount
+			`<div class="add-discount-wrapper">
+				${this.get_discount_icon()} Add Discount
 			</div>
-			<div class="border border-grey rounded">
-				<div class="net-total flex justify-between items-center h-16 pr-8 pl-8 border-b-grey">
-					<div class="flex flex-col">
-						<div class="text-md text-dark-grey text-bold">Net Total</div>
-					</div>
-					<div class="flex flex-col text-right">
-						<div class="text-md text-dark-grey text-bold">0.00</div>
-					</div>
-				</div>
-				<div class="taxes"></div>
-				<div class="grand-total flex justify-between items-center h-16 pr-8 pl-8 border-b-grey">
-					<div class="flex flex-col">
-						<div class="text-md text-dark-grey text-bold">Grand Total</div>
-					</div>
-					<div class="flex flex-col text-right">
-						<div class="text-md text-dark-grey text-bold">0.00</div>
-					</div>
-				</div>
-				<div class="checkout-btn flex items-center justify-center h-16 pr-8 pl-8 text-center text-grey no-select pointer rounded-b text-md text-bold">
-					Checkout
-				</div>
-				<div class="edit-cart-btn flex items-center justify-center h-16 pr-8 pl-8 text-center text-grey no-select pointer d-none text-md text-bold">
-					Edit Cart
-				</div>
-			</div>`
+			<div class="net-total-container">
+				<div class="net-total-label">Net Total</div>
+				<div class="net-total-value">0.00</div>
+			</div>
+			<div class="taxes-container"></div>
+			<div class="grand-total-container">
+				<div>Grand Total</div>
+				<div>0.00</div>
+			</div>
+			<div class="checkout-btn">Checkout</div>
+			<div class="edit-cart-btn">Edit Cart</div>`
 		)
 
-		this.$add_discount_elem = this.$component.find(".add-discount");
+		this.$add_discount_elem = this.$component.find(".add-discount-wrapper");
 	}
-	
+
 	make_cart_numpad() {
 		this.$numpad_section = this.$component.find('.numpad-section');
 
@@ -140,39 +134,37 @@
 				[ '', '', '', 'col-span-2' ],
 				[ '', '', '', 'col-span-2' ],
 				[ '', '', '', 'col-span-2' ],
-				[ '', '', '', 'col-span-2 text-bold text-danger' ]
+				[ '', '', '', 'col-span-2 remove-btn' ]
 			],
 			fieldnames_map: { 'Quantity': 'qty', 'Discount': 'discount_percentage' }
 		})
 
 		this.$numpad_section.prepend(
-			`<div class="flex mb-2 justify-between">
+			`<div class="numpad-totals">
 				<span class="numpad-net-total"></span>
 				<span class="numpad-grand-total"></span>
 			</div>`
 		)
 
 		this.$numpad_section.append(
-			`<div class="numpad-btn checkout-btn flex items-center justify-center h-16 pr-8 pl-8 bg-primary
-				text-center text-white no-select pointer rounded text-md text-bold mt-4" data-button-value="checkout">
-					Checkout
-			</div>`
+			`<div class="numpad-btn checkout-btn" data-button-value="checkout">Checkout</div>`
 		)
 	}
-	
+
 	bind_events() {
 		const me = this;
-		this.$customer_section.on('click', '.add-remove-customer', function (e) {
-			const customer_info_is_visible = me.$cart_container.hasClass('d-none');
-			customer_info_is_visible ? 
-				me.toggle_customer_info(false) : me.reset_customer_selector();
+		this.$customer_section.on('click', '.reset-customer-btn', function (e) {
+			me.reset_customer_selector();
 		});
 
-		this.$customer_section.on('click', '.customer-header', function(e) {
-			// don't triggger the event if .add-remove-customer btn is clicked which is under .customer-header
-			if ($(e.target).closest('.add-remove-customer').length) return;
+		this.$customer_section.on('click', '.close-details-btn', function (e) {
+			me.toggle_customer_info(false);
+		});
 
-			const show = !me.$cart_container.hasClass('d-none');
+		this.$customer_section.on('click', '.customer-display', function(e) {
+			if ($(e.target).closest('.reset-customer-btn').length) return;
+
+			const show = me.$cart_container.is(':visible');
 			me.toggle_customer_info(show);
 		});
 
@@ -181,7 +173,7 @@
 
 			me.toggle_item_highlight(this);
 
-			const payment_section_hidden = me.$totals_section.find('.edit-cart-btn').hasClass('d-none');
+			const payment_section_hidden = !me.$totals_section.find('.edit-cart-btn').is(':visible');
 			if (!payment_section_hidden) {
 				// payment section is visible
 				// edit cart first and then open item details section
@@ -196,23 +188,19 @@
 		});
 
 		this.$component.on('click', '.checkout-btn', function() {
-			if (!$(this).hasClass('bg-primary')) return;
-			
+			if ($(this).attr('style').indexOf('--blue-500') == -1) return;
+
 			me.events.checkout();
 			me.toggle_checkout_btn(false);
-
-			me.$add_discount_elem.removeClass("d-none");
 		});
 
 		this.$totals_section.on('click', '.edit-cart-btn', () => {
 			this.events.edit_cart();
 			this.toggle_checkout_btn(true);
-
-			this.$add_discount_elem.addClass("d-none");
 		});
 
-		this.$component.on('click', '.add-discount', () => {
-			const can_edit_discount = this.$add_discount_elem.find('.edit-discount').length;
+		this.$component.on('click', '.add-discount-wrapper', () => {
+			const can_edit_discount = this.$add_discount_elem.find('.edit-discount-btn').length;
 
 			if(!this.discount_field || can_edit_discount) this.show_discount_control();
 		});
@@ -234,7 +222,7 @@
 				if (btn === '.') shortcut_key = 'ctrl+>';
 
 				// to account for fieldname map
-				const fieldname = this.number_pad.fieldnames[btn] ? this.number_pad.fieldnames[btn] : 
+				const fieldname = this.number_pad.fieldnames[btn] ? this.number_pad.fieldnames[btn] :
 					typeof btn === 'string' ? frappe.scrub(btn) : btn;
 
 				let shortcut_label = shortcut_key.split('+').map(frappe.utils.to_title_case).join('+');
@@ -245,7 +233,7 @@
 					const cart_is_visible = this.$component.is(":visible");
 					if (cart_is_visible && this.item_is_selected && this.$numpad_section.is(":visible")) {
 						this.$numpad_section.find(`.numpad-btn[data-button-value="${fieldname}"]`).click();
-					} 
+					}
 				})
 			}
 		}
@@ -254,7 +242,7 @@
 		frappe.ui.keys.add_shortcut({
 			shortcut: "ctrl+enter",
 			action: () => this.$component.find(".checkout-btn").click(),
-			condition: () => this.$component.is(":visible") && this.$totals_section.find('.edit-cart-btn').hasClass('d-none'),
+			condition: () => this.$component.is(":visible") && !this.$totals_section.find('.edit-cart-btn').is(':visible'),
 			description: __("Checkout Order / Submit Order / New Order"),
 			ignore_inputs: true,
 			page: cur_page.page.page
@@ -262,14 +250,15 @@
 		this.$component.find(".edit-cart-btn").attr("title", `${ctrl_label}+E`);
 		frappe.ui.keys.on("ctrl+e", () => {
 			const item_cart_visible = this.$component.is(":visible");
-			if (item_cart_visible && this.$totals_section.find('.checkout-btn').hasClass('d-none')) {
-				this.$component.find(".edit-cart-btn").click()
+			const checkout_btn_invisible = !this.$totals_section.find('.checkout-btn').is('visible');
+			if (item_cart_visible && checkout_btn_invisible) {
+				this.$component.find(".edit-cart-btn").click();
 			}
 		});
-		this.$component.find(".add-discount").attr("title", `${ctrl_label}+D`);
+		this.$component.find(".add-discount-wrapper").attr("title", `${ctrl_label}+D`);
 		frappe.ui.keys.add_shortcut({
 			shortcut: "ctrl+d",
-			action: () => this.$component.find(".add-discount").click(),
+			action: () => this.$component.find(".add-discount-wrapper").click(),
 			condition: () => this.$add_discount_elem.is(":visible"),
 			description: __("Add Order Discount"),
 			ignore_inputs: true,
@@ -282,27 +271,25 @@
 			}
 		});
 	}
-	
+
 	toggle_item_highlight(item) {
 		const $cart_item = $(item);
-		const item_is_highlighted = $cart_item.hasClass("shadow");
+		const item_is_highlighted = $cart_item.attr("style") == "background-color:var(--gray-50);";
 
 		if (!item || item_is_highlighted) {
 			this.item_is_selected = false;
-			this.$cart_container.find('.cart-item-wrapper').removeClass("shadow").css("opacity", "1");
+			this.$cart_container.find('.cart-item-wrapper').css("background-color", "");
 		} else {
-			$cart_item.addClass("shadow");
+			$cart_item.css("background-color", "var(--gray-50)");
 			this.item_is_selected = true;
-			this.$cart_container.find('.cart-item-wrapper').css("opacity", "1");
-			this.$cart_container.find('.cart-item-wrapper').not(item).removeClass("shadow").css("opacity", "0.65");
+			this.$cart_container.find('.cart-item-wrapper').not(item).css("background-color", "");
 		}
-		// highlight with inner shadow
-		// $cart_item.addClass("shadow-inner bg-selected");
-		// me.$cart_container.find('.cart-item-wrapper').not(this).removeClass("shadow-inner bg-selected");
 	}
 
 	make_customer_selector() {
-		this.$customer_section.html(`<div class="customer-search-field flex flex-1 items-center"></div>`);
+		this.$customer_section.html(`
+			<div class="customer-field"></div>
+		`);
 		const me = this;
 		const query = { query: 'erpnext.controllers.queries.customer_query' };
 		const allowed_customer_group = this.allowed_customer_groups || [];
@@ -335,12 +322,12 @@
 					}
 				},
 			},
-			parent: this.$customer_section.find('.customer-search-field'),
+			parent: this.$customer_section.find('.customer-field'),
 			render_input: true,
 		});
 		this.customer_field.toggle_label(false);
 	}
-	
+
 	fetch_customer_details(customer) {
 		if (customer) {
 			return new Promise((resolve) => {
@@ -374,9 +361,9 @@
 	}
 
 	show_discount_control() {
-		this.$add_discount_elem.removeClass("pr-4 pl-4");
+		this.$add_discount_elem.css({ 'padding': '0px', 'border': 'none' })
 		this.$add_discount_elem.html(
-			`<div class="add-discount-field flex flex-1 items-center"></div>`
+			`<div class="add-discount-field"></div>`
 		);
 		const me = this;
 
@@ -385,14 +372,19 @@
 				label: __('Discount'),
 				fieldtype: 'Data',
 				placeholder: __('Enter discount percentage.'),
+				input_class: 'input-xs',
 				onchange: function() {
 					const frm = me.events.get_frm();
-					if (this.value.length || this.value === 0) {
+					if (flt(this.value) != 0) {
 						frappe.model.set_value(frm.doc.doctype, frm.doc.name, 'additional_discount_percentage', flt(this.value));
 						me.hide_discount_control(this.value);
 					} else {
 						frappe.model.set_value(frm.doc.doctype, frm.doc.name, 'additional_discount_percentage', 0);
-						me.$add_discount_elem.html(`+ Add Discount`);
+						me.$add_discount_elem.css({
+							'border': '1px dashed var(--gray-500)',
+							'padding': 'var(--padding-sm) var(--padding-md)'
+						});
+						me.$add_discount_elem.html(`${me.get_discount_icon()} Add Discount`);
 						me.discount_field = undefined;
 					}
 				},
@@ -406,39 +398,37 @@
 
 	hide_discount_control(discount) {
 		if (!discount) {
-			this.$add_discount_elem.removeClass("pr-4 pl-4");
+			this.$add_discount_elem.css({ 'padding': '0px', 'border': 'none' });
 			this.$add_discount_elem.html(
-				`<div class="add-discount-field flex flex-1 items-center"></div>`
+				`<div class="add-discount-field"></div>`
 			);
 		} else {
-			this.$add_discount_elem.addClass('pr-4 pl-4');
+			this.$add_discount_elem.css({
+				'border': '1px dashed var(--dark-green-500)',
+				'padding': 'var(--padding-sm) var(--padding-md)'
+			});
 			this.$add_discount_elem.html(
-				`<svg class="mr-2" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" 
-					stroke-linecap="round" stroke-linejoin="round">
-					<path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/>
-				</svg> 
-				<div class="edit-discount p-1 pr-3 pl-3 text-dark-grey rounded w-fit bg-green-200 mb-2">
-					${String(discount).bold()}% off
-				</div>
-				`
+				`<div class="edit-discount-btn">
+					${this.get_discount_icon()} Additional&nbsp;${String(discount).bold()}% discount applied
+				</div>`
 			);
 		}
 	}
-	
+
 	update_customer_section() {
 		const me = this;
 		const { customer, email_id='', mobile_no='', image } = this.customer_info || {};
 
 		if (customer) {
-			this.$customer_section.addClass('border pr-4 pl-4').html(
-				`<div class="customer-details flex flex-col">
-					<div class="customer-header flex items-center rounded h-18 pointer">
-						${get_customer_image()}
-						<div class="customer-name flex flex-col flex-1 f-shrink-1 overflow-hidden whitespace-nowrap">
-							<div class="text-md text-dark-grey text-bold">${customer}</div>
+			this.$customer_section.html(
+				`<div class="customer-details">
+					<div class="customer-display">
+						${this.get_customer_image()}
+						<div class="customer-name-desc">
+							<div class="customer-name">${customer}</div>
 							${get_customer_description()}
 						</div>
-						<div class="f-shrink-0 add-remove-customer flex items-center pointer" data-customer="${escape(customer)}">
+						<div class="reset-customer-btn" data-customer="${escape(customer)}">
 							<svg width="32" height="32" viewBox="0 0 14 14" fill="none">
 								<path d="M4.93764 4.93759L7.00003 6.99998M9.06243 9.06238L7.00003 6.99998M7.00003 6.99998L4.93764 9.06238L9.06243 4.93759" stroke="#8D99A6"/>
 							</svg>
@@ -453,29 +443,27 @@
 
 		function get_customer_description() {
 			if (!email_id && !mobile_no) {
-				return `<div class="text-grey-200 italic">Click to add email / phone</div>`
+				return `<div class="customer-desc">Click to add email / phone</div>`
 			} else if (email_id && !mobile_no) {
-				return `<div class="text-grey">${email_id}</div>`
+				return `<div class="customer-desc">${email_id}</div>`
 			} else if (mobile_no && !email_id) {
-				return `<div class="text-grey">${mobile_no}</div>`
+				return `<div class="customer-desc">${mobile_no}</div>`
 			} else {
-				return `<div class="text-grey">${email_id} | ${mobile_no}</div>`
+				return `<div class="customer-desc">${email_id} - ${mobile_no}</div>`
 			}
 		}
 
-		function get_customer_image() {
-			if (!me.hide_images && image) {
-				return `<div class="icon flex items-center justify-center w-12 h-12 rounded bg-light-grey mr-4 text-grey-200">
-							<img class="h-full" src="${image}" alt="${image}" style="object-fit: cover;">
-						</div>`
-			} else {
-				return `<div class="icon flex items-center justify-center w-12 h-12 rounded bg-light-grey mr-4 text-grey-200 text-md">
-							${frappe.get_abbr(customer)}
-						</div>`
-			}
+	}
+
+	get_customer_image() {
+		const { customer, image } = this.customer_info || {};
+		if (image) {
+			return `<div class="customer-image"><img src="${image}" alt="${image}""></div>`
+		} else {
+			return `<div class="customer-image customer-abbr">${frappe.get_abbr(customer)}</div>`
 		}
 	}
-	
+
 	update_totals_section(frm) {
 		if (!frm) frm = this.events.get_frm();
 
@@ -485,60 +473,47 @@
 		const taxes = frm.doc.taxes.map(t => { return { description: t.description, rate: t.rate }})
 		this.render_taxes(frm.doc.base_total_taxes_and_charges, taxes);
 	}
-	
+
 	render_net_total(value) {
 		const currency = this.events.get_frm().doc.currency;
-		this.$totals_section.find('.net-total').html(
-			`<div class="flex flex-col">
-				<div class="text-md text-dark-grey text-bold">Net Total</div>
-			</div>
-			<div class="flex flex-col text-right">
-				<div class="text-md text-dark-grey text-bold">${format_currency(value, currency)}</div>
-			</div>`
+		this.$totals_section.find('.net-total-container').html(
+			`<div>Net Total</div><div>${format_currency(value, currency)}</div>`
 		)
 
-		this.$numpad_section.find('.numpad-net-total').html(`Net Total: <span class="text-bold">${format_currency(value, currency)}</span>`)
+		this.$numpad_section.find('.numpad-net-total').html(
+			`<div>Net Total: <span>${format_currency(value, currency)}</span></div>`
+		);
 	}
-	
+
 	render_grand_total(value) {
 		const currency = this.events.get_frm().doc.currency;
-		this.$totals_section.find('.grand-total').html(
-			`<div class="flex flex-col">
-				<div class="text-md text-dark-grey text-bold">Grand Total</div>
-			</div>
-			<div class="flex flex-col text-right">
-				<div class="text-md text-dark-grey text-bold">${format_currency(value, currency)}</div>
-			</div>`
+		this.$totals_section.find('.grand-total-container').html(
+			`<div>Grand Total</div><div>${format_currency(value, currency)}</div>`
 		)
 
-		this.$numpad_section.find('.numpad-grand-total').html(`Grand Total: <span class="text-bold">${format_currency(value, currency)}</span>`)
+		this.$numpad_section.find('.numpad-grand-total').html(
+			`<div>Grand Total: <span>${format_currency(value, currency)}</span></div>`
+		)
 	}
 
 	render_taxes(value, taxes) {
 		if (taxes.length) {
 			const currency = this.events.get_frm().doc.currency;
-			this.$totals_section.find('.taxes').html(
-				`<div class="flex items-center justify-between h-16 pr-8 pl-8 border-b-grey">
-					<div class="flex overflow-hidden whitespace-nowrap">
-						<div class="text-md text-dark-grey text-bold w-fit">Tax Charges</div>
-						<div class="flex ml-4 text-dark-grey">
-						${	
-							taxes.map((t, i) => {
-								let margin_left = '';
-								if (i !== 0) margin_left = 'ml-2';
-								const description = /[0-9]+/.test(t.description) ? t.description : `${t.description} @ ${t.rate}%`;
-								return `<span class="border-grey p-1 pl-2 pr-2 rounded ${margin_left}">${description}</span>`
-							}).join('')
-						}
-						</div>
-					</div>
-					<div class="flex flex-col text-right f-shrink-0 ml-4">
-						<div class="text-md text-dark-grey text-bold">${format_currency(value, currency)}</div>
-					</div>
-				</div>`
+			this.$totals_section.find('.taxes-container').css('display', 'flex').html(
+				`${
+					taxes.map((t, i) => {
+						const description = /[0-9]+/.test(t.description) ? t.description : `${t.description} @ ${t.rate}%`;
+						return `<div class="tax-row">
+									<div class="tax-label">
+										${description}
+									</div>
+									<div class="tax-value">${format_currency(value, currency)}</div>
+								</div>`
+					}).join('')
+				}`
 			)
 		} else {
-			this.$totals_section.find('.taxes').html('')
+			this.$totals_section.find('.taxes-container').css('display', 'none').html('');
 		}
 	}
 
@@ -547,64 +522,65 @@
 		const item_code_attr = `[data-item-code="${escape(item_code)}"]`;
 		const uom_attr = `[data-uom=${escape(uom)}]`;
 
-		const item_selector = batch_no ? 
+		const item_selector = batch_no ?
 			`.cart-item-wrapper${batch_attr}${uom_attr}` : `.cart-item-wrapper${item_code_attr}${uom_attr}`;
-			
+
 		return this.$cart_items_wrapper.find(item_selector);
 	}
-	
+
 	update_item_html(item, remove_item) {
 		const $item = this.get_cart_item(item);
 
 		if (remove_item) {
-			$item && $item.remove();
+			$item && $item.next().remove() && $item.remove();
 		} else {
 			const { item_code, batch_no, uom } = item;
 			const search_field = batch_no ? 'batch_no' : 'item_code';
 			const search_value = batch_no || item_code;
 			const item_row = this.events.get_frm().doc.items.find(i => i[search_field] === search_value && i.uom === uom);
-			
+
 			this.render_cart_item(item_row, $item);
 		}
 
-		const no_of_cart_items = this.$cart_items_wrapper.children().length;
-		no_of_cart_items > 0 && this.highlight_checkout_btn(no_of_cart_items > 0);
-		
+		const no_of_cart_items = this.$cart_items_wrapper.find('.cart-item-wrapper').length;
+		this.highlight_checkout_btn(no_of_cart_items > 0);
+
 		this.update_empty_cart_section(no_of_cart_items);
 	}
-	
+
 	render_cart_item(item_data, $item_to_update) {
 		const currency = this.events.get_frm().doc.currency;
 		const me = this;
-		
+
 		if (!$item_to_update.length) {
 			this.$cart_items_wrapper.append(
-				`<div class="cart-item-wrapper flex items-center h-18 pr-4 pl-4 rounded border-grey pointer no-select" 
+				`<div class="cart-item-wrapper"
 						data-item-code="${escape(item_data.item_code)}" data-uom="${escape(item_data.uom)}"
 						data-batch-no="${escape(item_data.batch_no || '')}">
-				</div>`
+				</div>
+				<div class="seperator"></div>`
 			)
 			$item_to_update = this.get_cart_item(item_data);
 		}
 
 		$item_to_update.html(
-			`<div class="flex flex-col flex-1 f-shrink-1 overflow-hidden whitespace-nowrap">
-				<div class="text-md text-dark-grey text-bold">
+			`${get_item_image_html()}
+			<div class="item-name-desc">
+				<div class="item-name">
 					${item_data.item_name}
 				</div>
 				${get_description_html()}
 			</div>
-				${get_rate_discount_html()}
-			</div>`
+			${get_rate_discount_html()}`
 		)
 
 		set_dynamic_rate_header_width();
 		this.scroll_to_item($item_to_update);
 
 		function set_dynamic_rate_header_width() {
-			const rate_cols = Array.from(me.$cart_items_wrapper.find(".rate-col"));
-			me.$cart_header.find(".rate-list-header").css("width", "");
-			me.$cart_items_wrapper.find(".rate-col").css("width", "");
+			const rate_cols = Array.from(me.$cart_items_wrapper.find(".item-rate-amount"));
+			me.$cart_header.find(".rate-amount-header").css("width", "");
+			me.$cart_items_wrapper.find(".item-rate-amount").css("width", "");
 			let max_width = rate_cols.reduce((max_width, elm) => {
 				if ($(elm).width() > max_width)
 					max_width = $(elm).width();
@@ -614,30 +590,26 @@
 			max_width += 1;
 			if (max_width == 1) max_width = "";
 
-			me.$cart_header.find(".rate-list-header").css("width", max_width);
-			me.$cart_items_wrapper.find(".rate-col").css("width", max_width);
+			me.$cart_header.find(".rate-amount-header").css("width", max_width);
+			me.$cart_items_wrapper.find(".item-rate-amount").css("width", max_width);
 		}
-		
+
 		function get_rate_discount_html() {
 			if (item_data.rate && item_data.amount && item_data.rate !== item_data.amount) {
 				return `
-					<div class="flex f-shrink-0 ml-4 items-center">
-						<div class="flex w-8 h-8 rounded bg-light-grey mr-4 items-center justify-center font-bold f-shrink-0">
-							<span>${item_data.qty || 0}</span>
-						</div>
-						<div class="rate-col flex flex-col f-shrink-0 text-right">
-							<div class="text-md text-dark-grey text-bold">${format_currency(item_data.amount, currency)}</div>
-							<div class="text-md-0 text-dark-grey">${format_currency(item_data.rate, currency)}</div>
+					<div class="item-qty-rate">
+						<div class="item-qty"><span>${item_data.qty || 0}</span></div>
+						<div class="item-rate-amount">
+							<div class="item-rate">${format_currency(item_data.amount, currency)}</div>
+							<div class="item-amount">${format_currency(item_data.rate, currency)}</div>
 						</div>
 					</div>`
 			} else {
 				return `
-					<div class="flex f-shrink-0 ml-4 text-right">
-						<div class="flex w-8 h-8 rounded bg-light-grey mr-4 items-center justify-center font-bold f-shrink-0">
-							<span>${item_data.qty || 0}</span>
-						</div>
-						<div class="rate-col flex flex-col f-shrink-0 text-right">
-							<div class="text-md text-dark-grey text-bold">${format_currency(item_data.rate, currency)}</div>
+					<div class="item-qty-rate">
+						<div class="item-qty"><span>${item_data.qty || 0}</span></div>
+						<div class="item-rate-amount">
+							<div class="item-rate">${format_currency(item_data.rate, currency)}</div>
 						</div>
 					</div>`
 			}
@@ -653,10 +625,19 @@
 					}
 				}
 				item_data.description = frappe.ellipsis(item_data.description, 45);
-				return `<div class="text-grey">${item_data.description}</div>`
+				return `<div class="item-desc">${item_data.description}</div>`
 			}
 			return ``;
 		}
+
+		function get_item_image_html() {
+			const { image, item_name } = item_data;
+			if (image) {
+				return `<div class="item-image"><img src="${image}" alt="${image}""></div>`
+			} else {
+				return `<div class="item-image item-abbr">${frappe.get_abbr(item_name)}</div>`
+			}
+		}
 	}
 
 	scroll_to_item($item) {
@@ -664,7 +645,7 @@
 		const scrollTop = $item.offset().top - this.$cart_items_wrapper.offset().top + this.$cart_items_wrapper.scrollTop();
 		this.$cart_items_wrapper.animate({ scrollTop });
 	}
-	
+
 	update_selector_value_in_cart_item(selector, value, item) {
 		const $item_to_update = this.get_cart_item(item);
 		$item_to_update.attr(`data-${selector}`, value);
@@ -672,33 +653,37 @@
 
 	toggle_checkout_btn(show_checkout) {
 		if (show_checkout) {
-			this.$totals_section.find('.checkout-btn').removeClass('d-none');
-			this.$totals_section.find('.edit-cart-btn').addClass('d-none');
+			this.$totals_section.find('.checkout-btn').css('display', 'flex');
+			this.$totals_section.find('.edit-cart-btn').css('display', 'none');
 		} else {
-			this.$totals_section.find('.checkout-btn').addClass('d-none');
-			this.$totals_section.find('.edit-cart-btn').removeClass('d-none');
+			this.$totals_section.find('.checkout-btn').css('display', 'none');
+			this.$totals_section.find('.edit-cart-btn').css('display', 'flex');
 		}
 	}
 
 	highlight_checkout_btn(toggle) {
-		const has_primary_class = this.$totals_section.find('.checkout-btn').hasClass('bg-primary');
-		if (toggle && !has_primary_class) {
-			this.$totals_section.find('.checkout-btn').addClass('bg-primary text-white text-lg');
-		} else if (!toggle && has_primary_class) {
-			this.$totals_section.find('.checkout-btn').removeClass('bg-primary text-white text-lg');
+		if (toggle) {
+			this.$add_discount_elem.css('display', 'flex');
+			this.$cart_container.find('.checkout-btn').css({
+				'background-color': 'var(--blue-500)'
+			});
+		} else {
+			this.$add_discount_elem.css('display', 'none');
+			this.$cart_container.find('.checkout-btn').css({
+				'background-color': 'var(--blue-200)'
+			});
 		}
 	}
-	
+
 	update_empty_cart_section(no_of_cart_items) {
 		const $no_item_element = this.$cart_items_wrapper.find('.no-item-wrapper');
 
 		// if cart has items and no item is present
-		no_of_cart_items > 0 && $no_item_element && $no_item_element.remove()
-			&& this.$cart_items_wrapper.removeClass('mt-4 border-grey border-dashed') && this.$cart_header.removeClass('d-none');
+		no_of_cart_items > 0 && $no_item_element && $no_item_element.remove() && this.$cart_header.css('display', 'flex');
 
 		no_of_cart_items === 0 && !$no_item_element.length && this.make_no_items_placeholder();
 	}
-	
+
 	on_numpad_event($btn) {
 		const current_action = $btn.attr('data-button-value');
 		const action_is_field_edit = ['qty', 'discount_percentage', 'rate'].includes(current_action);
@@ -717,7 +702,7 @@
 				this.prev_action = undefined;
 			}
 			this.numpad_value = '';
-			
+
 		} else if (current_action === 'checkout') {
 			this.prev_action = undefined;
 			this.toggle_item_highlight();
@@ -743,7 +728,7 @@
 			frappe.utils.play_sound("error");
 			return;
 		}
-		
+
 		if (flt(this.numpad_value) > 100 && this.prev_action === 'discount_percentage') {
 			frappe.show_alert({
 				message: __('Discount cannot be greater than 100%'),
@@ -755,38 +740,38 @@
 
 		this.events.numpad_event(this.numpad_value, this.prev_action);
 	}
-	
+
 	highlight_numpad_btn($btn, curr_action) {
-		const curr_action_is_highlighted = $btn.hasClass('shadow-inner');
+		const curr_action_is_highlighted = $btn.hasClass('highlighted-numpad-btn');
 		const curr_action_is_action = ['qty', 'discount_percentage', 'rate', 'done'].includes(curr_action);
 
 		if (!curr_action_is_highlighted) {
-			$btn.addClass('shadow-inner bg-selected');
+			$btn.addClass('highlighted-numpad-btn');
 		}
 		if (this.prev_action === curr_action && curr_action_is_highlighted) {
 			// if Qty is pressed twice
-			$btn.removeClass('shadow-inner bg-selected');
+			$btn.removeClass('highlighted-numpad-btn');
 		}
 		if (this.prev_action && this.prev_action !== curr_action && curr_action_is_action) {
 			// Order: Qty -> Rate then remove Qty highlight
 			const prev_btn = $(`[data-button-value='${this.prev_action}']`);
-			prev_btn.removeClass('shadow-inner bg-selected');
+			prev_btn.removeClass('highlighted-numpad-btn');
 		}
 		if (!curr_action_is_action || curr_action === 'done') {
 			// if numbers are clicked
 			setTimeout(() => {
-				$btn.removeClass('shadow-inner bg-selected');
-			}, 100);
+				$btn.removeClass('highlighted-numpad-btn');
+			}, 200);
 		}
 	}
 
 	toggle_numpad(show) {
 		if (show) {
-			this.$totals_section.addClass('d-none');
-			this.$numpad_section.removeClass('d-none');
+			this.$totals_section.css('display', 'none');
+			this.$numpad_section.css('display', 'flex');
 		} else {
-			this.$totals_section.removeClass('d-none');
-			this.$numpad_section.addClass('d-none');
+			this.$totals_section.css('display', 'flex');
+			this.$numpad_section.css('display', 'none');
 		}
 		this.reset_numpad();
 	}
@@ -794,7 +779,7 @@
 	reset_numpad() {
 		this.numpad_value = '';
 		this.prev_action = undefined;
-		this.$numpad_section.find('.shadow-inner').removeClass('shadow-inner bg-selected');
+		this.$numpad_section.find('.highlighted-numpad-btn').removeClass('highlighted-numpad-btn');
 	}
 
 	toggle_numpad_field_edit(fieldname) {
@@ -805,48 +790,56 @@
 
 	toggle_customer_info(show) {
 		if (show) {
-			this.$cart_container.addClass('d-none')
-			this.$customer_section.addClass('flex-1 scroll-y').removeClass('mb-0 border pr-4 pl-4')
-			this.$customer_section.find('.icon').addClass('w-24 h-24 text-2xl').removeClass('w-12 h-12 text-md')
-			this.$customer_section.find('.customer-header').removeClass('h-18');
-			this.$customer_section.find('.customer-details').addClass('sticky z-100 bg-white');
+			const { customer } = this.customer_info || {};
 
-			this.$customer_section.find('.customer-name').html(
-				`<div class="text-md text-dark-grey text-bold">${this.customer_info.customer}</div>
-				<div class="last-transacted-on text-grey-200"></div>`
-			)
-	
-			this.$customer_section.find('.customer-details').append(
-				`<div class="customer-form">
-					<div class="text-grey mt-4 mb-6">CONTACT DETAILS</div>
-					<div class="grid grid-cols-2 gap-4">
-						<div class="email_id-field"></div>
-						<div class="mobile_no-field"></div>
-						<div class="loyalty_program-field"></div>
-						<div class="loyalty_points-field"></div>
+			this.$cart_container.css('display', 'none');
+			this.$customer_section.css({
+				'height': '100%',
+				'padding-top': '0px'
+			});
+			this.$customer_section.find('.customer-details').html(
+				`<div class="header">
+					<div class="label">Contact Details</div>
+					<div class="close-details-btn">
+						<svg width="32" height="32" viewBox="0 0 14 14" fill="none">
+							<path d="M4.93764 4.93759L7.00003 6.99998M9.06243 9.06238L7.00003 6.99998M7.00003 6.99998L4.93764 9.06238L9.06243 4.93759" stroke="#8D99A6"/>
+						</svg>
 					</div>
-					<div class="text-grey mt-4 mb-6">RECENT TRANSACTIONS</div>
-				</div>`
-			)
+				</div>
+				<div class="customer-display">
+					${this.get_customer_image()}
+					<div class="customer-name-desc">
+						<div class="customer-name">${customer}</div>
+						<div class="customer-desc"></div>
+					</div>
+				</div>
+				<div class="customer-fields-container">
+					<div class="email_id-field"></div>
+					<div class="mobile_no-field"></div>
+					<div class="loyalty_program-field"></div>
+					<div class="loyalty_points-field"></div>
+				</div>
+				<div class="transactions-label">Recent Transactions</div>`
+			);
 			// transactions need to be in diff div from sticky elem for scrolling
-			this.$customer_section.append(`<div class="customer-transactions flex-1 rounded"></div>`)
+			this.$customer_section.append(`<div class="customer-transactions"></div>`)
 
-			this.render_customer_info_form();
+			this.render_customer_fields();
 			this.fetch_customer_transactions();
 
 		} else {
-			this.$cart_container.removeClass('d-none');
-			this.$customer_section.removeClass('flex-1 scroll-y').addClass('mb-0 border pr-4 pl-4');
-			this.$customer_section.find('.icon').addClass('w-12 h-12 text-md').removeClass('w-24 h-24 text-2xl');
-			this.$customer_section.find('.customer-header').addClass('h-18')
-			this.$customer_section.find('.customer-details').removeClass('sticky z-100 bg-white');
+			this.$cart_container.css('display', 'flex');
+			this.$customer_section.css({
+				'height': '',
+				'padding-top': ''
+			});
 
 			this.update_customer_section();
 		}
 	}
 
-	render_customer_info_form() {
-		const $customer_form = this.$customer_section.find('.customer-form');
+	render_customer_fields() {
+		const $customer_form = this.$customer_section.find('.customer-fields-container');
 
 		const dfs = [{
 			fieldname: 'email_id',
@@ -868,7 +861,7 @@
 		},{
 			fieldname: 'loyalty_points',
 			label: __('Loyalty Points'),
-			fieldtype: 'Int',
+			fieldtype: 'Data',
 			read_only: 1
 		}];
 
@@ -912,7 +905,7 @@
 	}
 
 	fetch_customer_transactions() {
-		frappe.db.get_list('POS Invoice', { 
+		frappe.db.get_list('POS Invoice', {
 			filters: { customer: this.customer_info.customer, docstatus: 1 },
 			fields: ['name', 'grand_total', 'status', 'posting_date', 'posting_time', 'currency'],
 			limit: 20
@@ -920,41 +913,45 @@
 			const transaction_container = this.$customer_section.find('.customer-transactions');
 
 			if (!res.length) {
-				transaction_container.removeClass('flex-1 border rounded').html(
-					`<div class="text-grey text-center">No recent transactions found</div>`
+				transaction_container.html(
+					`<div class="no-transactions-placeholder">No recent transactions found</div>`
 				)
 				return;
 			};
 
 			const elapsed_time = moment(res[0].posting_date+" "+res[0].posting_time).fromNow();
-			this.$customer_section.find('.last-transacted-on').html(`Last transacted ${elapsed_time}`);
+			this.$customer_section.find('.customer-desc').html(`Last transacted ${elapsed_time}`);
 
 			res.forEach(invoice => {
 				const posting_datetime = moment(invoice.posting_date+" "+invoice.posting_time).format("Do MMMM, h:mma");
-				let indicator_color = '';
-
-				if (in_list(['Paid', 'Consolidated'], invoice.status)) (indicator_color = 'green');
-				if (invoice.status === 'Draft') (indicator_color = 'red');
-				if (invoice.status === 'Return') (indicator_color = 'grey');
+				let indicator_color = {
+					'Paid': 'green',
+					'Draft': 'red',
+					'Return': 'gray',
+					'Consolidated': 'blue'
+				};
 
 				transaction_container.append(
-					`<div class="invoice-wrapper flex p-3 justify-between border-grey rounded pointer no-select" data-invoice-name="${escape(invoice.name)}">
-						<div class="flex flex-col justify-end">
-							<div class="text-dark-grey text-bold overflow-hidden whitespace-nowrap mb-2">${invoice.name}</div>
-							<div class="flex items-center f-shrink-1 text-dark-grey overflow-hidden whitespace-nowrap">
-								${posting_datetime}
-							</div>
+					`<div class="invoice-wrapper" data-invoice-name="${escape(invoice.name)}">
+						<div class="invoice-name-date">
+							<div class="invoice-name">${invoice.name}</div>
+							<div class="invoice-date">${posting_datetime}</div>
 						</div>
-						<div class="flex flex-col text-right">
-							<div class="f-shrink-0 text-md text-dark-grey text-bold ml-4">
+						<div class="invoice-total-status">
+							<div class="invoice-total">
 								${format_currency(invoice.grand_total, invoice.currency, 0) || 0}
 							</div>
-							<div class="f-shrink-0 text-grey ml-4 text-bold indicator ${indicator_color}">${invoice.status}</div>
+							<div class="invoice-status">
+								<span class="indicator-pill whitespace-nowrap ${indicator_color[invoice.status]}">
+									<span>${invoice.status}</span>
+								</span>
+							</div>
 						</div>
-					</div>`
+					</div>
+					<div class="seperator"></div>`
 				)
 			});
-		})
+		});
 	}
 
 	load_invoice() {
@@ -963,7 +960,7 @@
 			this.events.customer_details_updated(this.customer_info);
 			this.update_customer_section();
 		})
-		
+
 		this.$cart_items_wrapper.html('');
 		if (frm.doc.items.length) {
 			frm.doc.items.forEach(item => {
@@ -977,20 +974,18 @@
 		this.update_totals_section(frm);
 
 		if(frm.doc.docstatus === 1) {
-			this.$totals_section.find('.checkout-btn').addClass('d-none');
-			this.$totals_section.find('.edit-cart-btn').addClass('d-none');
-			this.$totals_section.find('.grand-total').removeClass('border-b-grey');
+			this.$totals_section.find('.checkout-btn').css('display', 'none');
+			this.$totals_section.find('.edit-cart-btn').css('display', 'none');
 		} else {
-			this.$totals_section.find('.checkout-btn').removeClass('d-none');
-			this.$totals_section.find('.edit-cart-btn').addClass('d-none');
-			this.$totals_section.find('.grand-total').addClass('border-b-grey');
+			this.$totals_section.find('.checkout-btn').css('display', 'flex');
+			this.$totals_section.find('.edit-cart-btn').css('display', 'none');
 		}
 
 		this.toggle_component(true);
 	}
 
 	toggle_component(show) {
-		show ? this.$component.removeClass('d-none') : this.$component.addClass('d-none');
+		show ? this.$component.css('display', 'flex') : this.$component.css('display', 'none');
 	}
-	
+
 }
diff --git a/erpnext/selling/page/point_of_sale/pos_item_details.js b/erpnext/selling/page/point_of_sale/pos_item_details.js
index a4de9f1..5461543 100644
--- a/erpnext/selling/page/point_of_sale/pos_item_details.js
+++ b/erpnext/selling/page/point_of_sale/pos_item_details.js
@@ -16,35 +16,36 @@
 
 	prepare_dom() {
 		this.wrapper.append(
-			`<section class="col-span-4 flex shadow rounded item-details bg-white mx-h-70 h-100 d-none"></section>`
+			`<section class="item-details-container"></section>`
 		)
 
-		this.$component = this.wrapper.find('.item-details');
+		this.$component = this.wrapper.find('.item-details-container');
 	}
 
 	init_child_components() {
 		this.$component.html(
-			`<div class="details-container flex flex-col p-8 rounded w-full">
-				<div class="flex justify-between mb-2">
-					<div class="text-grey">ITEM DETAILS</div>
-					<div class="close-btn text-grey hover-underline pointer no-select">Close</div>
+			`<div class="item-details-header">
+				<div class="label">Item Details</div>
+				<div class="close-btn">
+					<svg width="32" height="32" viewBox="0 0 14 14" fill="none">
+						<path d="M4.93764 4.93759L7.00003 6.99998M9.06243 9.06238L7.00003 6.99998M7.00003 6.99998L4.93764 9.06238L9.06243 4.93759" stroke="#8D99A6"/>
+					</svg>
 				</div>
-				<div class="item-defaults flex">
-					<div class="flex-1 flex flex-col justify-end mr-4 mb-2">
-						<div class="item-name text-xl font-weight-450"></div>
-						<div class="item-description text-md-0 text-grey-200"></div>
-						<div class="item-price text-xl font-bold"></div>
-					</div>
-					<div class="item-image flex items-center justify-center w-46 h-46 bg-light-grey rounded ml-4 text-6xl text-grey-100"></div>
+			</div>
+			<div class="item-display">
+				<div class="item-name-desc-price">
+					<div class="item-name"></div>
+					<div class="item-desc"></div>
+					<div class="item-price"></div>
 				</div>
-				<div class="discount-section flex items-center"></div>
-				<div class="text-grey mt-4 mb-6">STOCK DETAILS</div>
-				<div class="form-container grid grid-cols-2 row-gap-2 col-gap-4 grid-auto-row"></div>
-			</div>`
+				<div class="item-image"></div>
+			</div>
+			<div class="discount-section"></div>
+			<div class="form-container"></div>`
 		)
 
 		this.$item_name = this.$component.find('.item-name');
-		this.$item_description = this.$component.find('.item-description');
+		this.$item_description = this.$component.find('.item-desc');
 		this.$item_price = this.$component.find('.item-price');
 		this.$item_image = this.$component.find('.item-image');
 		this.$form_container = this.$component.find('.form-container');
@@ -52,7 +53,7 @@
 	}
 
 	toggle_item_details_section(item) {
-		const { item_code, batch_no, uom } = this.current_item; 
+		const { item_code, batch_no, uom } = this.current_item;
 		const item_code_is_same = item && item_code === item.item_code;
 		const batch_is_same = item && batch_no == item.batch_no;
 		const uom_is_same = item && uom === item.uom;
@@ -104,11 +105,11 @@
 	}
 	
 	render_dom(item) {
-		let { item_code ,item_name, description, image, price_list_rate } = item;
+		let { item_name, description, image, price_list_rate } = item;
 
 		function get_description_html() {
 			if (description) {
-				description = description.indexOf('...') === -1 && description.length > 75 ? description.substr(0, 73) + '...' : description;
+				description = description.indexOf('...') === -1 && description.length > 140 ? description.substr(0, 139) + '...' : description;
 				return description;
 			}
 			return ``;
@@ -118,11 +119,9 @@
 		this.$item_description.html(get_description_html());
 		this.$item_price.html(format_currency(price_list_rate, this.currency));
 		if (image) {
-			this.$item_image.html(
-				`<img class="h-full" src="${image}" alt="${image}" style="object-fit: cover;">`
-			);
+			this.$item_image.html(`<img src="${image}" alt="${image}">`);
 		} else {
-			this.$item_image.html(frappe.get_abbr(item_code));
+			this.$item_image.html(`<div class="item-abbr">${frappe.get_abbr(item_name)}</div>`);
 		}
 
 	}
@@ -130,12 +129,8 @@
 	render_discount_dom(item) {
 		if (item.discount_percentage) {
 			this.$dicount_section.html(
-				`<div class="text-grey line-through mr-4 text-md mb-2">
-					${format_currency(item.price_list_rate, this.currency)}
-				</div>
-				<div class="p-1 pr-3 pl-3 rounded w-fit text-bold bg-green-200 mb-2">
-					${item.discount_percentage}% off
-				</div>`
+				`<div class="item-rate">${format_currency(item.price_list_rate, this.currency)}</div>
+				<div class="item-discount">${item.discount_percentage}% off</div>`
 			)
 			this.$item_price.html(format_currency(item.rate, this.currency));
 		} else {
@@ -149,9 +144,7 @@
 
 		fields_to_display.forEach((fieldname, idx) => {
 			this.$form_container.append(
-				`<div class="">
-					<div class="item_detail_field ${fieldname}-control" data-fieldname="${fieldname}"></div>
-				</div>`
+				`<div class="${fieldname}-control" data-fieldname="${fieldname}"></div>`
 			)
 
 			const field_meta = this.item_meta.fields.find(df => df.fieldname === fieldname);
@@ -185,22 +178,15 @@
 
 	make_auto_serial_selection_btn(item) {
 		if (item.has_serial_no) {
-			this.$form_container.append(
-				`<div class="grid-filler no-select"></div>`
-			)
 			if (!item.has_batch_no) {
 				this.$form_container.append(
 					`<div class="grid-filler no-select"></div>`
 				)	
 			}
 			this.$form_container.append(
-				`<div class="auto-fetch-btn bg-grey-100 border border-grey text-bold rounded pt-3 pb-3 pl-6 pr-8 text-grey pointer no-select mt-2"
-						style="height: 3.3rem">
-					Auto Fetch Serial Numbers
-				</div>`
+				`<div class="btn btn-sm btn-secondary auto-fetch-btn">Auto Fetch Serial Numbers</div>`
 			)
-			this.$form_container.find('.serial_no-control').find('textarea').css('height', '9rem');
-			this.$form_container.find('.serial_no-control').parent().addClass('row-span-2');
+			this.$form_container.find('.serial_no-control').find('textarea').css('height', '6rem');
 		}
 	}
 	
@@ -294,8 +280,13 @@
 		}
 
 		frappe.model.on("POS Invoice Item", "*", (fieldname, value, item_row) => {
-			const field_control = me[`${fieldname}_control`];
-			if (field_control) {
+			const field_control = this[`${fieldname}_control`];
+			const { item_code, batch_no, uom } = this.current_item; 
+			const item_code_is_same = item_code === item_row.item_code;
+			const batch_is_same = batch_no == item_row.batch_no;
+			const uom_is_same = uom === item_row.uom;
+
+			if (field_control && item_code_is_same && batch_is_same && uom_is_same) {
 				field_control.set_value(value);
 				cur_pos.update_cart_html(item_row);
 			}
@@ -409,6 +400,6 @@
 	}
 
 	toggle_component(show) {
-		show ? this.$component.removeClass('d-none') : this.$component.addClass('d-none');
+		show ? this.$component.css('display', 'flex') : this.$component.css('display', 'none');
 	}
 }
\ No newline at end of file
diff --git a/erpnext/selling/page/point_of_sale/pos_item_selector.js b/erpnext/selling/page/point_of_sale/pos_item_selector.js
index a06b394..e28551d 100644
--- a/erpnext/selling/page/point_of_sale/pos_item_selector.js
+++ b/erpnext/selling/page/point_of_sale/pos_item_selector.js
@@ -1,3 +1,5 @@
+import onScan from 'onscan.js';
+
 erpnext.PointOfSale.ItemSelector = class {
 	constructor({ frm, wrapper, events, pos_profile, settings }) {
 		this.wrapper = wrapper;
@@ -8,7 +10,7 @@
 		
 		this.inti_component();
 	}
-	
+
 	inti_component() {
 		this.prepare_dom();
 		this.make_search_bar();
@@ -19,21 +21,16 @@
 
 	prepare_dom() {
 		this.wrapper.append(
-			`<section class="col-span-6 flex shadow rounded items-selector bg-white mx-h-70 h-100">
-				<div class="flex flex-col rounded w-full scroll-y">
-					<div class="filter-section flex p-8 pb-2 bg-white sticky z-100">
-						<div class="search-field flex f-grow-3 mr-8 items-center text-grey"></div>
-						<div class="item-group-field flex f-grow-1 items-center text-grey text-bold"></div>
-					</div>
-					<div class="flex flex-1 flex-col p-8 pt-2">
-						<div class="text-grey mb-6">ALL ITEMS</div>
-						<div class="items-container grid grid-cols-4 gap-8">
-						</div>
-					</div>
+			`<section class="items-selector">
+				<div class="filter-section">
+					<div class="label">All Items</div>
+					<div class="search-field"></div>
+					<div class="item-group-field"></div>
 				</div>
+				<div class="items-container"></div>
 			</section>`
 		);
-		
+
 		this.$component = this.wrapper.find('.items-selector');
 		this.$items_container = this.$component.find('.items-container');
 	}
@@ -54,11 +51,12 @@
 	}
 
 	get_items({start = 0, page_length = 40, search_value=''}) {
-		const price_list = this.events.get_frm().doc?.selling_price_list || this.price_list;
+		const doc = this.events.get_frm().doc;
+		const price_list = (doc && doc.selling_price_list) || this.price_list;
 		let { item_group, pos_profile } = this;
 
 		!item_group && (item_group = this.parent_item_group);
-		
+
 		return frappe.call({
 			method: "erpnext.selling.page.point_of_sale.point_of_sale.get_items",
 			freeze: true,
@@ -87,23 +85,24 @@
 							<img class="h-full" src="${item_image}" alt="${frappe.get_abbr(item.item_name)}" style="object-fit: cover;">
 						</div>`
 			} else {
-				return `<div class="flex items-center justify-center h-32 bg-light-grey text-6xl text-grey-100">
-							${frappe.get_abbr(item.item_name)}
-						</div>`
+				return `<div class="item-display abbr">${frappe.get_abbr(item.item_name)}</div>`;
 			}
 		}
 
 		return (
-			`<div class="item-wrapper rounded shadow pointer no-select" data-item-code="${escape(item.item_code)}"
-				data-serial-no="${escape(serial_no)}" data-batch-no="${escape(batch_no)}" data-uom="${escape(stock_uom)}"
+			`<div class="item-wrapper"
+				data-item-code="${escape(item.item_code)}" data-serial-no="${escape(serial_no)}"
+				data-batch-no="${escape(batch_no)}" data-uom="${escape(stock_uom)}"
 				title="Avaiable Qty: ${actual_qty}">
+
 				${get_item_image_html()}
-				<div class="flex items-center pr-4 pl-4 h-10 justify-between">
-					<div class="flex items-center f-shrink-1 text-dark-grey overflow-hidden whitespace-nowrap">
+
+				<div class="item-detail">
+					<div class="item-name">
 						<span class="indicator ${indicator_color}"></span>
 						${frappe.ellipsis(item.item_name, 18)}
 					</div>
-					<div class="f-shrink-0 text-dark-grey text-bold ml-4">${format_currency(item.price_list_rate, item.currency, 0) || 0}</div>
+					<div class="item-rate">${format_currency(item.price_list_rate, item.currency, 0) || 0}</div>
 				</div>
 			</div>`
 		)
@@ -111,6 +110,7 @@
 
 	make_search_bar() {
 		const me = this;
+		const doc = me.events.get_frm().doc;
 		this.$component.find('.search-field').html('');
 		this.$component.find('.item-group-field').html('');
 
@@ -118,7 +118,7 @@
 			df: {
 				label: __('Search'),
 				fieldtype: 'Data',
-				placeholder: __('Search by item code, serial number, batch no or barcode')
+				placeholder: __('Search by item code, serial number or barcode')
 			},
 			parent: this.$component.find('.search-field'),
 			render_input: true,
@@ -138,7 +138,7 @@
 					return {
 						query: 'erpnext.selling.page.point_of_sale.point_of_sale.item_group_query',
 						filters: {
-							pos_profile: me.events.get_frm().doc?.pos_profile
+							pos_profile: doc ? doc.pos_profile : ''
 						}
 					}
 				},
@@ -152,6 +152,7 @@
 
 	bind_events() {
 		const me = this;
+		window.onScan = onScan;
 		onScan.attachTo(document, {
 			onScan: (sScancode) => {
 				if (this.search_field && this.$component.is(':visible')) {
@@ -168,7 +169,7 @@
 			let batch_no = unescape($item.attr('data-batch-no'));
 			let serial_no = unescape($item.attr('data-serial-no'));
 			let uom = unescape($item.attr('data-uom'));
-			
+
 			// escape(undefined) returns "undefined" then unescape returns "undefined"
 			batch_no = batch_no === "undefined" ? undefined : batch_no;
 			serial_no = serial_no === "undefined" ? undefined : serial_no;
@@ -228,7 +229,7 @@
 			}
 		});
 	}
-	
+
 	filter_items({ search_term='' }={}) {
 		if (search_term) {
 			search_term = search_term.toLowerCase();
@@ -261,24 +262,24 @@
 	}
 	
 	resize_selector(minimize) {
-		minimize ? 
-		this.$component.find('.search-field').removeClass('mr-8') : 
-		this.$component.find('.search-field').addClass('mr-8');
-
-		minimize ? 
-		this.$component.find('.filter-section').addClass('flex-col') : 
-		this.$component.find('.filter-section').removeClass('flex-col');
+		minimize ?
+		this.$component.find('.filter-section').css('grid-template-columns', 'repeat(1, minmax(0, 1fr))') :
+		this.$component.find('.filter-section').css('grid-template-columns', 'repeat(12, minmax(0, 1fr))');
 
 		minimize ?
-		this.$component.removeClass('col-span-6').addClass('col-span-2') :
-		this.$component.removeClass('col-span-2').addClass('col-span-6')
+		this.$component.find('.search-field').css('margin', 'var(--margin-sm) 0px') :
+		this.$component.find('.search-field').css('margin', '0px var(--margin-sm)');
 
 		minimize ?
-		this.$items_container.removeClass('grid-cols-4').addClass('grid-cols-1') :
-		this.$items_container.removeClass('grid-cols-1').addClass('grid-cols-4')
+		this.$component.css('grid-column', 'span 2 / span 2') :
+		this.$component.css('grid-column', 'span 6 / span 6')
+
+		minimize ?
+		this.$items_container.css('grid-template-columns', 'repeat(1, minmax(0, 1fr))') :
+		this.$items_container.css('grid-template-columns', 'repeat(4, minmax(0, 1fr))')
 	}
 
 	toggle_component(show) {
-		show ? this.$component.removeClass('d-none') : this.$component.addClass('d-none');
+		show ? this.$component.css('display', 'flex') : this.$component.css('display', 'none');
 	}
 }
\ No newline at end of file
diff --git a/erpnext/selling/page/point_of_sale/pos_number_pad.js b/erpnext/selling/page/point_of_sale/pos_number_pad.js
index 4b8e841..edde7d8 100644
--- a/erpnext/selling/page/point_of_sale/pos_number_pad.js
+++ b/erpnext/selling/page/point_of_sale/pos_number_pad.js
@@ -25,14 +25,13 @@
 					const fieldname = fieldnames && fieldnames[number] ? 
 						fieldnames[number] : typeof number === 'string' ? frappe.scrub(number) : number;
 
-						return a2 + `<div class="numpad-btn pointer no-select rounded ${class_to_append}
-							flex items-center justify-center h-16 text-md border-grey border" data-button-value="${fieldname}">${number}</div>`
+						return a2 + `<div class="numpad-btn ${class_to_append}" data-button-value="${fieldname}">${number}</div>`
 				}, '')
 			}, '');
 		}
 
 		this.wrapper.html(
-			`<div class="grid grid-cols-${cols} gap-4">
+			`<div class="numpad-container">
 				${get_keys()}
 			</div>`
 		)
diff --git a/erpnext/selling/page/point_of_sale/pos_past_order_list.js b/erpnext/selling/page/point_of_sale/pos_past_order_list.js
index b256247..ec39231 100644
--- a/erpnext/selling/page/point_of_sale/pos_past_order_list.js
+++ b/erpnext/selling/page/point_of_sale/pos_past_order_list.js
@@ -14,17 +14,13 @@
 
 	prepare_dom() {
 		this.wrapper.append(
-			`<section class="col-span-4 flex flex-col shadow rounded past-order-list bg-white mx-h-70 h-100 d-none">
-				<div class="flex flex-col rounded w-full scroll-y">
-					<div class="filter-section flex flex-col p-8 pb-2 bg-white sticky z-100">
-						<div class="search-field flex items-center text-grey"></div>
-						<div class="status-field flex items-center text-grey text-bold"></div>
-					</div>
-					<div class="flex flex-1 flex-col p-8 pt-2">
-						<div class="text-grey mb-6">RECENT ORDERS</div>
-						<div class="invoices-container rounded border grid grid-cols-1"></div>					
-					</div>
+			`<section class="past-order-list">
+				<div class="filter-section">
+					<div class="label">Recent Orders</div>
+					<div class="search-field"></div>
+					<div class="status-field"></div>
 				</div>
+				<div class="invoices-container"></div>
 			</section>`
 		);
 
@@ -66,7 +62,7 @@
 				options: `Draft\nPaid\nConsolidated\nReturn`,
 				placeholder: __('Filter by invoice status'),
 				onchange: function() {
-					me.refresh_list(me.search_field.get_value(), this.value);
+					if (me.$component.is(':visible')) me.refresh_list();
 				}
 			},
 			parent: this.$component.find('.status-field'),
@@ -77,10 +73,6 @@
 		this.status_field.set_value('Draft');
 	}
 
-	toggle_component(show) {
-		show ? this.$component.removeClass('d-none') && this.refresh_list() : this.$component.addClass('d-none');
-	}
-
 	refresh_list() {
 		frappe.dom.freeze();
 		this.events.reset_summary();
@@ -106,23 +98,26 @@
 	get_invoice_html(invoice) {
 		const posting_datetime = moment(invoice.posting_date+" "+invoice.posting_time).format("Do MMMM, h:mma");
 		return (
-			`<div class="invoice-wrapper flex p-4 justify-between border-b-grey pointer no-select" data-invoice-name="${escape(invoice.name)}">
-				<div class="flex flex-col justify-end">
-					<div class="text-dark-grey text-bold overflow-hidden whitespace-nowrap mb-2">${invoice.name}</div>
-					<div class="flex items-center">
-						<div class="flex items-center f-shrink-1 text-dark-grey overflow-hidden whitespace-nowrap">
-							<svg class="mr-2" width="12" height="12" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round">
-								<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/>
-							</svg>
-							${invoice.customer}
-						</div>
+			`<div class="invoice-wrapper" data-invoice-name="${escape(invoice.name)}">
+				<div class="invoice-name-date">
+					<div class="invoice-name">${invoice.name}</div>
+					<div class="invoice-date">
+						<svg class="mr-2" width="12" height="12" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round">
+							<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/>
+						</svg>
+						${invoice.customer}
 					</div>
 				</div>
-				<div class="flex flex-col text-right">
-					<div class="f-shrink-0 text-lg text-dark-grey text-bold ml-4">${format_currency(invoice.grand_total, invoice.currency, 0) || 0}</div>
-					<div class="f-shrink-0 text-grey ml-4">${posting_datetime}</div>
+				<div class="invoice-total-status">
+					<div class="invoice-total">${format_currency(invoice.grand_total, invoice.currency, 0) || 0}</div>
+					<div class="invoice-date">${posting_datetime}</div>
 				</div>
-			</div>`
+			</div>
+			<div class="seperator"></div>`
 		);
 	}
+
+	toggle_component(show) {
+		show ? this.$component.css('display', 'flex') && this.refresh_list() : this.$component.css('display', 'none');
+	}
 };
\ No newline at end of file
diff --git a/erpnext/selling/page/point_of_sale/pos_past_order_summary.js b/erpnext/selling/page/point_of_sale/pos_past_order_summary.js
index 6fd4c26..eb29976 100644
--- a/erpnext/selling/page/point_of_sale/pos_past_order_summary.js
+++ b/erpnext/selling/page/point_of_sale/pos_past_order_summary.js
@@ -8,85 +8,39 @@
 
 	init_component() {
 		this.prepare_dom();
-		this.init_child_components();
+		this.init_email_print_dialog();
 		this.bind_events();
 		this.attach_shortcuts();
 	}
 
 	prepare_dom() {
 		this.wrapper.append(
-			`<section class="col-span-6 flex flex-col items-center shadow rounded past-order-summary bg-white mx-h-70 h-100 d-none">
-				<div class="no-summary-placeholder flex flex-1 items-center justify-center p-16">
-					<div class="no-item-wrapper flex items-center h-18 pr-4 pl-4">
-						<div class="flex-1 text-center text-grey">Select an invoice to load summary data</div>
-					</div>
+			`<section class="past-order-summary">
+				<div class="no-summary-placeholder">
+					Select an invoice to load summary data
 				</div>
-				<div class="summary-wrapper d-none flex-1 w-66 text-dark-grey relative">
-					<div class="summary-container absolute flex flex-col pt-16 pb-16 pr-8 pl-8 w-full h-full"></div>
+				<div class="invoice-summary-wrapper">
+					<div class="abs-container">
+						<div class="upper-section"></div>
+						<div class="label">Items</div>
+						<div class="items-container summary-container"></div>
+						<div class="label">Totals</div>
+						<div class="totals-container summary-container"></div>
+						<div class="label">Payments</div>
+						<div class="payments-container summary-container"></div>
+						<div class="summary-btns"></div>
+					</div>
 				</div>
 			</section>`
 		);
 
 		this.$component = this.wrapper.find('.past-order-summary');
-		this.$summary_wrapper = this.$component.find('.summary-wrapper');
-		this.$summary_container = this.$component.find('.summary-container');
-	}
-
-	init_child_components() {
-		this.init_upper_section();
-		this.init_items_summary();
-		this.init_totals_summary();
-		this.init_payments_summary();
-		this.init_summary_buttons();
-		this.init_email_print_dialog();
-	}
-
-	init_upper_section() {
-		this.$summary_container.append(
-			`<div class="flex upper-section justify-between w-full h-24"></div>`
-		);
-
+		this.$summary_wrapper = this.$component.find('.invoice-summary-wrapper');
+		this.$summary_container = this.$component.find('.abs-container');
 		this.$upper_section = this.$summary_container.find('.upper-section');
-	}
-
-	init_items_summary() {
-		this.$summary_container.append(
-			`<div class="flex flex-col flex-1 mt-6 w-full scroll-y">
-				<div class="text-grey mb-4 sticky bg-white">ITEMS</div>
-				<div class="items-summary-container border rounded flex flex-col w-full"></div>
-			</div>`
-		);
-
-		this.$items_summary_container = this.$summary_container.find('.items-summary-container');
-	}
-
-	init_totals_summary() {
-		this.$summary_container.append(
-			`<div class="flex flex-col mt-6 w-full f-shrink-0">
-				<div class="text-grey mb-4">TOTALS</div>
-				<div class="summary-totals-container border rounded flex flex-col w-full"></div>
-			</div>`
-		);
-
-		this.$totals_summary_container = this.$summary_container.find('.summary-totals-container');
-	}
-
-	init_payments_summary() {
-		this.$summary_container.append(
-			`<div class="flex flex-col mt-6 w-full f-shrink-0">
-				<div class="text-grey mb-4">PAYMENTS</div>
-				<div class="payments-summary-container border rounded flex flex-col w-full mb-4"></div>
-			</div>`
-		);
-
-		this.$payment_summary_container = this.$summary_container.find('.payments-summary-container');
-	}
-
-	init_summary_buttons() {
-		this.$summary_container.append(
-			`<div class="summary-btns flex summary-btns justify-between w-full f-shrink-0"></div>`
-		);
-
+		this.$items_container = this.$summary_container.find('.items-container');
+		this.$totals_container = this.$summary_container.find('.totals-container');
+		this.$payment_container = this.$summary_container.find('.payments-container');
 		this.$summary_btns = this.$summary_container.find('.summary-btns');
 	}
 
@@ -121,132 +75,88 @@
 	}
 
 	get_upper_section_html(doc) {
-		const { status } = doc; let indicator_color = '';
+		const { status } = doc;
+		let indicator_color = '';
 
 		in_list(['Paid', 'Consolidated'], status) && (indicator_color = 'green');
 		status === 'Draft' && (indicator_color = 'red');
 		status === 'Return' && (indicator_color = 'grey');
 
-		return `<div class="flex flex-col items-start justify-end pr-4">
-					<div class="text-lg text-bold pt-2">${doc.customer}</div>
-					<div class="text-grey">${this.customer_email}</div>
-					<div class="text-grey mt-auto">Sold by: ${doc.owner}</div>
+		return `<div class="left-section">
+					<div class="customer-name">${doc.customer}</div>
+					<div class="customer-email">${this.customer_email}</div>
+					<div class="cashier">Sold by: ${doc.owner}</div>
 				</div>
-				<div class="flex flex-col flex-1 items-end justify-between">
-					<div class="text-2-5xl text-bold">${format_currency(doc.paid_amount, doc.currency)}</div>
-					<div class="flex justify-between">
-						<div class="text-grey mr-4">${doc.name}</div>
-						<div class="text-grey text-bold indicator ${indicator_color}">${doc.status}</div>
-					</div>
+				<div class="right-section">
+					<div class="paid-amount">${format_currency(doc.paid_amount, doc.currency)}</div>
+					<div class="invoice-name">${doc.name}</div>
+					<span class="indicator-pill whitespace-nowrap ${indicator_color}"><span>${doc.status}</span></span>
 				</div>`;
 	}
 
+	get_item_html(doc, item_data) {
+		return `<div class="item-row-wrapper">
+					<div class="item-name">${item_data.item_name}</div>
+					<div class="item-qty">${item_data.qty || 0}</div>
+					<div class="item-rate-disc">${get_rate_discount_html()}</div>
+				</div>`;
+
+		function get_rate_discount_html() {
+			if (item_data.rate && item_data.price_list_rate && item_data.rate !== item_data.price_list_rate) {
+				return `<span class="item-disc">(${item_data.discount_percentage}% off)</span>
+						<div class="item-rate">${format_currency(item_data.rate, doc.currency)}</div>`;
+			} else {
+				return `<div class="item-rate">${format_currency(item_data.price_list_rate || item_data.rate, doc.currency)}</div>`;
+			}
+		}
+	}
+
 	get_discount_html(doc) {
 		if (doc.discount_amount) {
-			return `<div class="total-summary-wrapper flex items-center h-12 pr-4 pl-4 pointer border-b-grey no-select">
-					<div class="flex f-shrink-1 items-center">
-						<div class="text-md-0 text-dark-grey text-bold overflow-hidden whitespace-nowrap  mr-2">
-							Discount
-						</div>
-						<span class="text-grey">(${doc.additional_discount_percentage} %)</span>
-					</div>
-					<div class="flex flex-col f-shrink-0 ml-auto text-right">
-						<div class="text-md-0 text-dark-grey text-bold">${format_currency(doc.discount_amount, doc.currency)}</div>
-					</div>
-				</div>`;
+			return `<div class="summary-row-wrapper">
+						<div>Discount (${doc.additional_discount_percentage} %)</div>
+						<div>${format_currency(doc.discount_amount, doc.currency)}</div>
+					</div>`;
 		} else {
 			return ``;
 		}
 	}
 
 	get_net_total_html(doc) {
-		return `<div class="total-summary-wrapper flex items-center h-12 pr-4 pl-4 pointer border-b-grey no-select">
-					<div class="flex f-shrink-1 items-center">
-						<div class="text-md-0 text-dark-grey text-bold overflow-hidden whitespace-nowrap">
-							Net Total
-						</div>
-					</div>
-					<div class="flex flex-col f-shrink-0 ml-auto text-right">
-						<div class="text-md-0 text-dark-grey text-bold">${format_currency(doc.net_total, doc.currency)}</div>
-					</div>
+		return `<div class="summary-row-wrapper">
+					<div>Net Total</div>
+					<div>${format_currency(doc.net_total, doc.currency)}</div>
 				</div>`;
 	}
 
 	get_taxes_html(doc) {
-		const taxes = doc.taxes.map((t, i) => {
-			let margin_left = '';
-			if (i !== 0) margin_left = 'ml-2';
-			return `<span class="pl-2 pr-2 ${margin_left}">${t.description} @${t.rate}%</span>`;
-		}).join('');
+		if (!doc.taxes.length) return '';
 
 		return `
-			<div class="total-summary-wrapper flex items-center justify-between h-12 pr-4 pl-4 border-b-grey">
-				<div class="flex">
-					<div class="text-md-0 text-dark-grey text-bold w-fit">Tax Charges</div>
-					<div class="flex ml-6 text-dark-grey">${taxes}</div>
-				</div>
-				<div class="flex flex-col text-right">
-					<div class="text-md-0 text-dark-grey text-bold">
-						${format_currency(doc.base_total_taxes_and_charges, doc.currency)}
-					</div>
-				</div>
+			<div class="taxes-wrapper">
+				${
+					doc.taxes.map((t, i) => {
+						const description = /[0-9]+/.test(t.description) ? t.description : `${t.description} @ ${t.rate}%`;
+						return `<div class="tax-row">
+									<div class="tax-label">${description}</div>
+									<div class="tax-value">${format_currency(t.tax_amount_after_discount_amount, doc.currency)}</div>
+								</div>`
+					}).join('')
+				}
 			</div>`;
 	}
 
 	get_grand_total_html(doc) {
-		return `<div class="total-summary-wrapper flex items-center h-12 pr-4 pl-4 pointer border-b-grey no-select">
-					<div class="flex f-shrink-1 items-center">
-						<div class="text-md-0 text-dark-grey text-bold overflow-hidden whitespace-nowrap">
-							Grand Total
-						</div>
-					</div>
-					<div class="flex flex-col f-shrink-0 ml-auto text-right">
-						<div class="text-md-0 text-dark-grey text-bold">${format_currency(doc.grand_total, doc.currency)}</div>
-					</div>
+		return `<div class="summary-row-wrapper grand-total">
+					<div>Grand Total</div>
+					<div>${format_currency(doc.grand_total, doc.currency)}</div>
 				</div>`;
 	}
 
-	get_item_html(doc, item_data) {
-		return `<div class="item-summary-wrapper flex items-center h-12 pr-4 pl-4 border-b-grey pointer no-select">
-					<div class="flex w-6 h-6 rounded bg-light-grey mr-4 items-center justify-center font-bold f-shrink-0">
-						<span>${item_data.qty || 0}</span>
-					</div>
-					<div class="flex flex-col f-shrink-1">
-						<div class="text-md text-dark-grey text-bold overflow-hidden whitespace-nowrap">
-							${item_data.item_name}
-						</div>
-					</div>
-					<div class="flex f-shrink-0 ml-auto text-right">
-						${get_rate_discount_html()}
-					</div>
-				</div>`;
-
-		function get_rate_discount_html() {
-			if (item_data.rate && item_data.price_list_rate && item_data.rate !== item_data.price_list_rate) {
-				return `<span class="text-grey mr-2">
-							(${item_data.discount_percentage}% off)
-						</span>
-						<div class="text-md-0 text-dark-grey text-bold">
-							${format_currency(item_data.rate, doc.currency)}
-						</div>`;
-			} else {
-				return `<div class="text-md-0 text-dark-grey text-bold">
-							${format_currency(item_data.price_list_rate || item_data.rate, doc.currency)}
-						</div>`;
-			}
-		}
-	}
-
 	get_payment_html(doc, payment) {
-		return `<div class="payment-summary-wrapper flex items-center h-12 pr-4 pl-4 pointer border-b-grey no-select">
-					<div class="flex f-shrink-1 items-center">
-						<div class="text-md-0 text-dark-grey text-bold overflow-hidden whitespace-nowrap">
-							${payment.mode_of_payment}
-						</div>
-					</div>
-					<div class="flex flex-col f-shrink-0 ml-auto text-right">
-						<div class="text-md-0 text-dark-grey text-bold">${format_currency(payment.amount, doc.currency)}</div>
-					</div>
+		return `<div class="summary-row-wrapper payments">
+					<div>${payment.mode_of_payment}</div>
+					<div>${format_currency(payment.amount, doc.currency)}</div>
 				</div>`;
 	}
 
@@ -254,22 +164,22 @@
 		this.$summary_container.on('click', '.return-btn', () => {
 			this.events.process_return(this.doc.name);
 			this.toggle_component(false);
-			this.$component.find('.no-summary-placeholder').removeClass('d-none');
-			this.$summary_wrapper.addClass('d-none');
+			this.$component.find('.no-summary-placeholder').css('display', 'flex');
+			this.$summary_wrapper.css('display', 'none');
 		});
 
 		this.$summary_container.on('click', '.edit-btn', () => {
 			this.events.edit_order(this.doc.name);
 			this.toggle_component(false);
-			this.$component.find('.no-summary-placeholder').removeClass('d-none');
-			this.$summary_wrapper.addClass('d-none');
+			this.$component.find('.no-summary-placeholder').css('display', 'flex');
+			this.$summary_wrapper.css('display', 'none');
 		});
 
 		this.$summary_container.on('click', '.new-btn', () => {
 			this.events.new_order();
 			this.toggle_component(false);
-			this.$component.find('.no-summary-placeholder').removeClass('d-none');
-			this.$summary_wrapper.addClass('d-none');
+			this.$component.find('.no-summary-placeholder').css('display', 'flex');
+			this.$summary_wrapper.css('display', 'none');
 		});
 
 		this.$summary_container.on('click', '.email-btn', () => {
@@ -312,10 +222,6 @@
 		});
 	}
 
-	toggle_component(show) {
-		show ? this.$component.removeClass('d-none') : this.$component.addClass('d-none');
-	}
-
 	send_email() {
 		const frm = this.events.get_frm();
 		const recipients = this.email_dialog.get_values().recipients;
@@ -338,8 +244,10 @@
 				if(!r.exc) {
 					frappe.utils.play_sound("email");
 					if(r.message["emails_not_sent_to"]) {
-						frappe.msgprint(__("Email not sent to {0} (unsubscribed / disabled)",
-							[ frappe.utils.escape_html(r.message["emails_not_sent_to"]) ]) );
+						frappe.msgprint(__(
+							"Email not sent to {0} (unsubscribed / disabled)", 
+							[ frappe.utils.escape_html(r.message["emails_not_sent_to"]) ]
+						));
 					} else {
 						frappe.show_alert({
 							message: __('Email sent successfully.'),
@@ -361,9 +269,7 @@
 				m.visible_btns.forEach(b => {
 					const class_name = b.split(' ')[0].toLowerCase();
 					this.$summary_btns.append(
-						`<div class="${class_name}-btn border rounded h-14 flex flex-1 items-center mr-4 justify-center text-md text-bold no-select pointer">
-							${b}
-						</div>`
+						`<div class="summary-btn btn btn-default ${class_name}-btn">${b}</div>`
 					);
 				});
 			}
@@ -371,29 +277,14 @@
 		this.$summary_btns.children().last().removeClass('mr-4');
 	}
 
-	show_summary_placeholder() {
-		this.$summary_wrapper.addClass("d-none");
-		this.$component.find('.no-summary-placeholder').removeClass('d-none');
-	}
-
-	switch_to_post_submit_summary() {
-		// switch to full width view
-		this.$component.removeClass('col-span-6').addClass('col-span-10');
-		this.$summary_wrapper.removeClass('w-66').addClass('w-40');
-
-		// switch place holder with summary container
-		this.$component.find('.no-summary-placeholder').addClass('d-none');
-		this.$summary_wrapper.removeClass('d-none');
-	}
-
-	switch_to_recent_invoice_summary() {
-		// switch full width view with 60% view
-		this.$component.removeClass('col-span-10').addClass('col-span-6');
-		this.$summary_wrapper.removeClass('w-40').addClass('w-66');
-
-		// switch place holder with summary container
-		this.$component.find('.no-summary-placeholder').addClass('d-none');
-		this.$summary_wrapper.removeClass('d-none');
+	toggle_summary_placeholder(show) {
+		if (show) {
+			this.$summary_wrapper.css('display', 'none');
+			this.$component.find('.no-summary-placeholder').css('display', 'flex');
+		} else {
+			this.$summary_wrapper.css('display', 'flex');
+			this.$component.find('.no-summary-placeholder').css('display', 'none');
+		}
 	}
 
 	get_condition_btn_map(after_submission) {
@@ -408,14 +299,15 @@
 	}
 
 	load_summary_of(doc, after_submission=false) {
-		this.$summary_wrapper.removeClass("d-none");
-
 		after_submission ?
-			this.switch_to_post_submit_summary() : this.switch_to_recent_invoice_summary();
-
+			this.$component.css('grid-column', 'span 10 / span 10') :
+			this.$component.css('grid-column', 'span 6 / span 6')
+		
+		this.toggle_summary_placeholder(false)
+		
 		this.doc = doc;
 
-		this.attach_basic_info(doc);
+		this.attach_document_info(doc);
 
 		this.attach_items_info(doc);
 
@@ -428,7 +320,7 @@
 		this.add_summary_btns(condition_btns_map);
 	}
 
-	attach_basic_info(doc) {
+	attach_document_info(doc) {
 		frappe.db.get_value('Customer', this.doc.customer, 'email_id').then(({ message }) => {
 			this.customer_email = message.email_id || '';
 			const upper_section_dom = this.get_upper_section_html(doc);
@@ -437,19 +329,35 @@
 	}
 
 	attach_items_info(doc) {
-		this.$items_summary_container.html('');
-		doc.items.forEach(item => {
+		this.$items_container.html('');
+		doc.items.forEach((item, i) => {
 			const item_dom = this.get_item_html(doc, item);
-			this.$items_summary_container.append(item_dom);
+			this.$items_container.append(item_dom);
+			this.set_dynamic_rate_header_width();
 		});
 	}
 
+	set_dynamic_rate_header_width() {
+		const rate_cols = Array.from(this.$items_container.find(".item-rate-disc"));
+		this.$items_container.find(".item-rate-disc").css("width", "");
+		let max_width = rate_cols.reduce((max_width, elm) => {
+			if ($(elm).width() > max_width)
+				max_width = $(elm).width();
+			return max_width;
+		}, 0);
+
+		max_width += 1;
+		if (max_width == 1) max_width = "";
+
+		this.$items_container.find(".item-rate-disc").css("width", max_width);
+	}
+
 	attach_payments_info(doc) {
-		this.$payment_summary_container.html('');
+		this.$payment_container.html('');
 		doc.payments.forEach(p => {
 			if (p.amount) {
 				const payment_dom = this.get_payment_html(doc, p);
-				this.$payment_summary_container.append(payment_dom);
+				this.$payment_container.append(payment_dom);
 			}
 		});
 		if (doc.redeem_loyalty_points && doc.loyalty_amount) {
@@ -457,20 +365,24 @@
 				mode_of_payment: 'Loyalty Points',
 				amount: doc.loyalty_amount,
 			});
-			this.$payment_summary_container.append(payment_dom);
+			this.$payment_container.append(payment_dom);
 		}
 	}
 
 	attach_totals_info(doc) {
-		this.$totals_summary_container.html('');
+		this.$totals_container.html('');
 
-		const discount_dom = this.get_discount_html(doc);
 		const net_total_dom = this.get_net_total_html(doc);
 		const taxes_dom = this.get_taxes_html(doc);
+		const discount_dom = this.get_discount_html(doc);
 		const grand_total_dom = this.get_grand_total_html(doc);
-		this.$totals_summary_container.append(discount_dom);
-		this.$totals_summary_container.append(net_total_dom);
-		this.$totals_summary_container.append(taxes_dom);
-		this.$totals_summary_container.append(grand_total_dom);
+		this.$totals_container.append(net_total_dom);
+		this.$totals_container.append(taxes_dom);
+		this.$totals_container.append(discount_dom);
+		this.$totals_container.append(grand_total_dom);
+	}
+
+	toggle_component(show) {
+		show ? this.$component.css('display', 'flex') : this.$component.css('display', 'none');
 	}
 };
\ No newline at end of file
diff --git a/erpnext/selling/page/point_of_sale/pos_payment.js b/erpnext/selling/page/point_of_sale/pos_payment.js
index e4d8965..365c27b 100644
--- a/erpnext/selling/page/point_of_sale/pos_payment.js
+++ b/erpnext/selling/page/point_of_sale/pos_payment.js
@@ -1,5 +1,3 @@
-{% include "erpnext/selling/page/point_of_sale/pos_number_pad.js" %}
-
 erpnext.PointOfSale.Payment = class {
 	constructor({ events, wrapper }) {
 		this.wrapper = wrapper;
@@ -18,52 +16,37 @@
 
 	prepare_dom() {
 		this.wrapper.append(
-			`<section class="col-span-6 flex shadow rounded payment-section bg-white mx-h-70 h-100 d-none">
-				<div class="flex flex-col p-16 pt-8 pb-8 w-full">
-					<div class="text-grey mb-6 payment-section no-select pointer">
-						PAYMENT METHOD<span class="octicon octicon-chevron-down collapse-indicator"></span>
+			`<section class="payment-container">
+				<div class="section-label payment-section">Payment Method</div>
+				<div class="payment-modes"></div>
+				<div class="fields-numpad-container">
+					<div class="fields-section">
+						<div class="section-label">Additional Information</div>
+						<div class="invoice-fields"></div>
 					</div>
-					<div class="payment-modes flex flex-wrap"></div>
-					<div class="invoice-details-section"></div>
-					<div class="flex mt-auto justify-center w-full">
-						<div class="flex flex-col justify-center flex-1 ml-4">
-							<div class="flex w-full">
-								<div class="totals-remarks items-end justify-end flex flex-1">
-									<div class="remarks text-md-0 text-grey mr-auto"></div>
-									<div class="totals flex justify-end pt-4"></div>
-								</div>
-								<div class="number-pad w-40 mb-4 ml-8 d-none"></div>
-							</div>
-							<div class="flex items-center justify-center mt-4 submit-order h-16 w-full rounded bg-primary text-md text-white no-select pointer text-bold">
-								Complete Order
-							</div>
-							<div class="order-time flex items-center justify-end mt-2 pt-2 pb-2 w-full text-md-0 text-grey no-select pointer d-none"></div>
-						</div>
-					</div>
+					<div class="number-pad"></div>
 				</div>
+				<div class="totals-section">
+					<div class="totals"></div>
+				</div>
+				<div class="submit-order-btn">Complete Order</div>
 			</section>`
 		)
-		this.$component = this.wrapper.find('.payment-section');
+		this.$component = this.wrapper.find('.payment-container');
 		this.$payment_modes = this.$component.find('.payment-modes');
-		this.$totals_remarks = this.$component.find('.totals-remarks');
+		this.$totals_section = this.$component.find('.totals-section');
 		this.$totals = this.$component.find('.totals');
-		this.$remarks = this.$component.find('.remarks');
 		this.$numpad = this.$component.find('.number-pad');
-		this.$invoice_details_section = this.$component.find('.invoice-details-section');
+		this.$invoice_fields_section = this.$component.find('.fields-section');
 	}
 
 	make_invoice_fields_control() {
 		frappe.db.get_doc("POS Settings", undefined).then((doc) => {
 			const fields = doc.invoice_fields;
 			if (!fields.length) return;
-
-			this.$invoice_details_section.html(
-				`<div class="text-grey pb-6 mt-2 pointer no-select">
-					ADDITIONAL INFORMATION<span class="octicon octicon-chevron-down collapse-indicator"></span>
-				</div>
-				<div class="invoice-fields grid grid-cols-2 gap-4 mb-6 d-none"></div>`
-			);
-			this.$invoice_fields = this.$invoice_details_section.find('.invoice-fields');
+			
+			this.$invoice_fields = this.$invoice_fields_section.find('.invoice-fields');
+			this.$invoice_fields.html('');
 			const frm = this.events.get_frm();
 
 			fields.forEach(df => {
@@ -127,9 +110,9 @@
 		this.selected_mode.set_value(this.numpad_value);
 
 		function highlight_numpad_btn($btn) {
-			$btn.addClass('shadow-inner bg-selected');
+			$btn.addClass('shadow-base-inner bg-selected');
 			setTimeout(() => {
-				$btn.removeClass('shadow-inner bg-selected');
+				$btn.removeClass('shadow-base-inner bg-selected');
 			}, 100);
 		}
 	}
@@ -142,13 +125,16 @@
 			// if clicked element doesn't have .mode-of-payment class then return
 			if (!$(e.target).is(mode_clicked)) return;
 
+			const scrollLeft = mode_clicked.offset().left - me.$payment_modes.offset().left + me.$payment_modes.scrollLeft();
+			me.$payment_modes.animate({ scrollLeft });
+
 			const mode = mode_clicked.attr('data-mode');
 
 			// hide all control fields and shortcuts
-			$(`.mode-of-payment-control`).addClass('d-none');
-			$(`.cash-shortcuts`).addClass('d-none');
-			me.$payment_modes.find(`.pay-amount`).removeClass('d-none');
-			me.$payment_modes.find(`.loyalty-amount-name`).addClass('d-none');
+			$(`.mode-of-payment-control`).css('display', 'none');
+			$(`.cash-shortcuts`).css('display', 'none');
+			me.$payment_modes.find(`.pay-amount`).css('display', 'inline');
+			me.$payment_modes.find(`.loyalty-amount-name`).css('display', 'none');
 
 			// remove highlight from all mode-of-payments
 			$('.mode-of-payment').removeClass('border-primary');
@@ -157,21 +143,20 @@
 				// clicked one is selected then unselect it
 				mode_clicked.removeClass('border-primary');
 				me.selected_mode = '';
-				me.toggle_numpad(false);
 			} else {
 				// clicked one is not selected then select it
 				mode_clicked.addClass('border-primary');
-				mode_clicked.find('.mode-of-payment-control').removeClass('d-none');
-				mode_clicked.find('.cash-shortcuts').removeClass('d-none');
-				me.$payment_modes.find(`.${mode}-amount`).addClass('d-none');
-				me.$payment_modes.find(`.${mode}-name`).removeClass('d-none');
-				me.toggle_numpad(true);
+				mode_clicked.find('.mode-of-payment-control').css('display', 'flex');
+				mode_clicked.find('.cash-shortcuts').css('display', 'grid');
+				me.$payment_modes.find(`.${mode}-amount`).css('display', 'none');
+				me.$payment_modes.find(`.${mode}-name`).css('display', 'inline');
 
-				me.selected_mode = me[`${mode}_control`];
 				const doc = me.events.get_frm().doc;
-				me.selected_mode?.$input?.get(0).focus();
-				const current_value = me.selected_mode?.get_value()
-				!current_value && doc.grand_total > doc.paid_amount ? me.selected_mode?.set_value(doc.grand_total - doc.paid_amount) : '';
+				me.selected_mode = me[`${mode}_control`];
+				me.selected_mode && me.selected_mode.$input.get(0).focus();
+				const current_value = me.selected_mode ? me.selected_mode.get_value() : undefined;
+				!current_value && doc.grand_total > doc.paid_amount && me.selected_mode ? 
+					me.selected_mode.set_value(doc.grand_total - doc.paid_amount) : '';
 			}
 		})
 
@@ -198,7 +183,7 @@
 			me.selected_mode.set_value(value);
 		})
 
-		this.$component.on('click', '.submit-order', () => {
+		this.$component.on('click', '.submit-order-btn', () => {
 			const doc = this.events.get_frm().doc;
 			const paid_amount = doc.paid_amount;
 			const items = doc.items;
@@ -217,9 +202,9 @@
 			this.update_totals_section(frm.doc);
 
 			// need to re calculate cash shortcuts after discount is applied
-			const is_cash_shortcuts_invisible = this.$payment_modes.find('.cash-shortcuts').hasClass('d-none');
+			const is_cash_shortcuts_invisible = !this.$payment_modes.find('.cash-shortcuts').is(':visible');
 			this.attach_cash_shortcuts(frm.doc);
-			!is_cash_shortcuts_invisible && this.$payment_modes.find('.cash-shortcuts').removeClass('d-none');
+			!is_cash_shortcuts_invisible && this.$payment_modes.find('.cash-shortcuts').css('display', 'grid');
 		})
 
 		frappe.ui.form.on('POS Invoice', 'loyalty_amount', (frm) => {
@@ -235,29 +220,16 @@
 				this[`${mode}_control`].set_value(default_mop.amount);
 			}
 		});
-
-		this.$component.on('click', '.invoice-details-section', function(e) {
-			if ($(e.target).closest('.invoice-fields').length) return;
-
-			me.$payment_modes.addClass('d-none');
-			me.$invoice_fields.toggleClass("d-none");
-			me.toggle_numpad(false);
-		});
-		this.$component.on('click', '.payment-section', () => {
-			this.$invoice_fields.addClass("d-none");
-			this.$payment_modes.toggleClass('d-none');
-			this.toggle_numpad(true);
-		})
 	}
 
 	attach_shortcuts() {
 		const ctrl_label = frappe.utils.is_mac() ? '⌘' : 'Ctrl';
-		this.$component.find('.submit-order').attr("title", `${ctrl_label}+Enter`);
+		this.$component.find('.submit-order-btn').attr("title", `${ctrl_label}+Enter`);
 		frappe.ui.keys.on("ctrl+enter", () => {
 			const payment_is_visible = this.$component.is(":visible");
 			const active_mode = this.$payment_modes.find(".border-primary");
 			if (payment_is_visible && active_mode.length) {
-				this.$component.find('.submit-order').click();
+				this.$component.find('.submit-order-btn').click();
 			}
 		});
 
@@ -287,15 +259,13 @@
 	}
 
 	toggle_numpad(show) {
-		if (show) {
-			this.$numpad.removeClass('d-none');
-			this.$remarks.addClass('d-none');
-			this.$totals_remarks.addClass('w-60 justify-center').removeClass('justify-end w-full');
-		} else {
-			this.$numpad.addClass('d-none');
-			this.$remarks.removeClass('d-none');
-			this.$totals_remarks.removeClass('w-60 justify-center').addClass('justify-end w-full');
-		}
+		// if (show) {
+		// 	this.$numpad.css('display', 'flex');
+		// 	this.$totals_section.addClass('w-60 justify-center').removeClass('justify-end w-full');
+		// } else {
+		// 	this.$numpad.css('display', 'none');
+		// 	this.$totals_section.removeClass('w-60 justify-center').addClass('justify-end w-full');
+		// }
 	}
 
 	render_payment_section() {
@@ -327,7 +297,7 @@
 					fieldtype: 'Data',
 					onchange: function() {}
 				},
-				parent: this.$totals_remarks.find(`.remarks`),
+				parent: this.$totals_section.find(`.remarks`),
 				render_input: true,
 			});
 			this[`remark_control`].set_value('');
@@ -348,12 +318,11 @@
 				const amount = p.amount > 0 ? format_currency(p.amount, currency) : '';
 
 				return (
-					`<div class="w-half ${margin} bg-white">
-						<div class="mode-of-payment rounded border border-grey text-grey text-md
-								mb-4 p-8 pt-4 pb-4 no-select pointer" data-mode="${mode}" data-payment-type="${payment_type}">
+					`<div class="payment-mode-wrapper">
+						<div class="mode-of-payment" data-mode="${mode}" data-payment-type="${payment_type}">
 							${p.mode_of_payment}
-							<div class="${mode}-amount pay-amount inline float-right text-bold">${amount}</div>
-							<div class="${mode} mode-of-payment-control mt-4 flex flex-1 items-center d-none"></div>
+							<div class="${mode}-amount pay-amount">${amount}</div>
+							<div class="${mode} mode-of-payment-control"></div>
 						</div>
 					</div>`
 				)
@@ -405,12 +374,10 @@
 
 		this.$payment_modes.find('.cash-shortcuts').remove();
 		this.$payment_modes.find('[data-payment-type="Cash"]').find('.mode-of-payment-control').after(
-			`<div class="cash-shortcuts grid grid-cols-3 gap-2 flex-1 text-center text-md-0 mb-2 d-none">
+			`<div class="cash-shortcuts">
 				${
 					shortcuts.map(s => {
-						return `<div class="shortcut rounded bg-light-grey text-dark-grey pt-2 pb-2 no-select pointer" data-value="${s}">
-									${format_currency(s, currency, 0)}
-								</div>`
+						return `<div class="shortcut" data-value="${s}">${format_currency(s, currency, 0)}</div>`
 					}).join('')
 				}
 			</div>`
@@ -457,13 +424,12 @@
 		const margin = this.$payment_modes.children().length % 2 === 0 ? 'pr-2' : 'pl-2';
 		const amount = doc.loyalty_amount > 0 ? format_currency(doc.loyalty_amount, doc.currency) : '';
 		this.$payment_modes.append(
-			`<div class="w-half ${margin} bg-white">
-				<div class="mode-of-payment rounded border border-grey text-grey text-md
-						mb-4 p-8 pt-4 pb-4 no-select pointer" data-mode="loyalty-amount" data-payment-type="loyalty-amount">
+			`<div class="payment-mode-wrapper">
+				<div class="mode-of-payment" data-mode="loyalty-amount" data-payment-type="loyalty-amount">
 					Redeem Loyalty Points
-					<div class="loyalty-amount-amount pay-amount inline float-right text-bold">${amount}</div>
-					<div class="loyalty-amount-name inline float-right text-bold text-md-0 d-none">${loyalty_program}</div>
-					<div class="loyalty-amount mode-of-payment-control mt-4 flex flex-1 items-center d-none"></div>
+					<div class="loyalty-amount-amount pay-amount">${amount}</div>
+					<div class="loyalty-amount-name">${loyalty_program}</div>
+					<div class="loyalty-amount mode-of-payment-control"></div>
 				</div>
 			</div>`
 		)
@@ -520,18 +486,24 @@
 		const label = change ? __('Change') : __('To Be Paid');
 
 		this.$totals.html(
-			`<div>
-				<div class="pr-8 border-r-grey">Paid Amount</div>
-				<div class="pr-8 border-r-grey text-bold text-2xl">${format_currency(paid_amount, currency)}</div>
+			`<div class="col">
+				<div class="total-label">Grand Total</div>
+				<div class="value">${format_currency(doc.grand_total, currency)}</div>
 			</div>
-			<div>
-				<div class="pl-8">${label}</div>
-				<div class="pl-8 text-green-400 text-bold text-2xl">${format_currency(change || remaining, currency)}</div>
+			<div class="seperator-y"></div>
+			<div class="col">
+				<div class="total-label">Paid Amount</div>
+				<div class="value">${format_currency(paid_amount, currency)}</div>
+			</div>
+			<div class="seperator-y"></div>
+			<div class="col">
+				<div class="total-label">${label}</div>
+				<div class="value">${format_currency(change || remaining, currency)}</div>
 			</div>`
 		)
 	}
 
 	toggle_component(show) {
-		show ? this.$component.removeClass('d-none') : this.$component.addClass('d-none');
+		show ? this.$component.css('display', 'flex') : this.$component.css('display', 'none');
 	}
  }
\ No newline at end of file
diff --git a/erpnext/selling/workspace/retail/retail.json b/erpnext/selling/workspace/retail/retail.json
new file mode 100644
index 0000000..e20f834
--- /dev/null
+++ b/erpnext/selling/workspace/retail/retail.json
@@ -0,0 +1,114 @@
+{
+ "category": "Domains",
+ "charts": [],
+ "creation": "2020-03-02 17:18:32.505616",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "retail",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Retail",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings & Configurations",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Point-of-Sale Profile",
+   "link_to": "POS Profile",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "POS Settings",
+   "link_to": "POS Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loyalty Program",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loyalty Program",
+   "link_to": "Loyalty Program",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Loyalty Point Entry",
+   "link_to": "Loyalty Point Entry",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Opening & Closing",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "POS Opening Entry",
+   "link_to": "POS Opening Entry",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "POS Closing Entry",
+   "link_to": "POS Closing Entry",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:36.758038",
+ "modified_by": "Administrator",
+ "module": "Selling",
+ "name": "Retail",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "restrict_to_domain": "Retail",
+ "shortcuts": [
+  {
+   "doc_view": "",
+   "label": "Point Of Sale",
+   "link_to": "point-of-sale",
+   "type": "Page"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/selling/workspace/selling/selling.json b/erpnext/selling/workspace/selling/selling.json
new file mode 100644
index 0000000..879034a
--- /dev/null
+++ b/erpnext/selling/workspace/selling/selling.json
@@ -0,0 +1,563 @@
+{
+ "category": "Modules",
+ "charts": [
+  {
+   "chart_name": "Sales Order Trends",
+   "label": "Sales Order Trends"
+  }
+ ],
+ "charts_label": "Selling ",
+ "creation": "2020-01-28 11:49:12.092882",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 1,
+ "icon": "sell",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Selling",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Selling",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Customer",
+   "link_to": "Customer",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Customer",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quotation",
+   "link_to": "Quotation",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Customer",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sales Order",
+   "link_to": "Sales Order",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Customer",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sales Invoice",
+   "link_to": "Sales Invoice",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Customer",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Blanket Order",
+   "link_to": "Blanket Order",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sales Partner",
+   "link_to": "Sales Partner",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Customer",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sales Person",
+   "link_to": "Sales Person",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Items and Pricing",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item",
+   "link_to": "Item",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Price List",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item Price",
+   "link_to": "Item Price",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Price List",
+   "link_to": "Price List",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item Group",
+   "link_to": "Item Group",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Product Bundle",
+   "link_to": "Product Bundle",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Promotional Scheme",
+   "link_to": "Promotional Scheme",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Pricing Rule",
+   "link_to": "Pricing Rule",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Shipping Rule",
+   "link_to": "Shipping Rule",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Coupon Code",
+   "link_to": "Coupon Code",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Selling Settings",
+   "link_to": "Selling Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Terms and Conditions Template",
+   "link_to": "Terms and Conditions",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sales Taxes and Charges Template",
+   "link_to": "Sales Taxes and Charges Template",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Lead Source",
+   "link_to": "Lead Source",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Customer Group",
+   "link_to": "Customer Group",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Contact",
+   "link_to": "Contact",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Address",
+   "link_to": "Address",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Territory",
+   "link_to": "Territory",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Campaign",
+   "link_to": "Campaign",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Key Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Analytics",
+   "link_to": "Sales Analytics",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Order Analysis",
+   "link_to": "Sales Order Analysis",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Sales Funnel",
+   "link_to": "sales-funnel",
+   "link_type": "Page",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Order Trends",
+   "link_to": "Sales Order Trends",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Quotation",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Quotation Trends",
+   "link_to": "Quotation Trends",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Customer",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Customer Acquisition and Loyalty",
+   "link_to": "Customer Acquisition and Loyalty",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Inactive Customers",
+   "link_to": "Inactive Customers",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Person-wise Transaction Summary",
+   "link_to": "Sales Person-wise Transaction Summary",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Item-wise Sales History",
+   "link_to": "Item-wise Sales History",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Other Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Lead",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Lead Details",
+   "link_to": "Lead Details",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Address",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Customer Addresses And Contacts",
+   "link_to": "Address And Contacts",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Available Stock for Packing Items",
+   "link_to": "Available Stock for Packing Items",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Pending SO Items For Purchase Request",
+   "link_to": "Pending SO Items For Purchase Request",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Delivery Note",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Delivery Note Trends",
+   "link_to": "Delivery Note Trends",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Invoice",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Invoice Trends",
+   "link_to": "Sales Invoice Trends",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Customer",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Customer Credit Balance",
+   "link_to": "Customer Credit Balance",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Customer",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Customers Without Any Sales Transactions",
+   "link_to": "Customers Without Any Sales Transactions",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Customer",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Partners Commission",
+   "link_to": "Sales Partners Commission",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Territory Target Variance Based On Item Group",
+   "link_to": "Territory Target Variance Based On Item Group",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Person Target Variance Based On Item Group",
+   "link_to": "Sales Person Target Variance Based On Item Group",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Partner Target Variance Based On Item Group",
+   "link_to": "Sales Partner Target Variance based on Item Group",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:35.971277",
+ "modified_by": "Administrator",
+ "module": "Selling",
+ "name": "Selling",
+ "onboarding": "Selling",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "color": "Grey",
+   "format": "{} Available",
+   "label": "Item",
+   "link_to": "Item",
+   "stats_filter": "{\n    \"disabled\":0\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Yellow",
+   "format": "{}  To Deliver",
+   "label": "Sales Order",
+   "link_to": "Sales Order",
+   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\":[\"in\", [\"To Deliver\", \"To Deliver and Bill\"]]\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Grey",
+   "format": "{} Open",
+   "label": "Sales Analytics",
+   "link_to": "Sales Analytics",
+   "stats_filter": "{ \"Status\": \"Open\" }",
+   "type": "Report"
+  },
+  {
+   "label": "Sales Order Analysis",
+   "link_to": "Sales Order Analysis",
+   "type": "Report"
+  },
+  {
+   "label": "Dashboard",
+   "link_to": "Selling",
+   "type": "Dashboard"
+  }
+ ],
+ "shortcuts_label": "Quick Access"
+}
\ No newline at end of file
diff --git a/erpnext/setup/desk_page/home/home.json b/erpnext/setup/desk_page/home/home.json
deleted file mode 100644
index 0fbd0ec..0000000
--- a/erpnext/setup/desk_page/home/home.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Stock",
-   "links": "[\n    {\n        \"label\": \"Warehouse\",\n        \"name\": \"Warehouse\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Brand\",\n        \"name\": \"Brand\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Unit of Measure (UOM)\",\n        \"name\": \"UOM\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Stock Reconciliation\",\n        \"name\": \"Stock Reconciliation\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Human Resources",
-   "links": "[\n    {\n        \"label\": \"Employee\",\n        \"name\": \"Employee\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Employee\"\n        ],\n        \"hide_count\": true,\n        \"label\": \"Employee Attendance Tool\",\n        \"name\": \"Employee Attendance Tool\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Salary Structure\",\n        \"name\": \"Salary Structure\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "CRM",
-   "links": "[\n    {\n        \"description\": \"Database of potential customers.\",\n        \"label\": \"Lead\",\n        \"name\": \"Lead\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Manage Customer Group Tree.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Customer Group\",\n        \"link\": \"Tree/Customer Group\",\n        \"name\": \"Customer Group\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Manage Territory Tree.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Territory\",\n        \"link\": \"Tree/Territory\",\n        \"name\": \"Territory\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Accounting",
-   "links": "[\n    {\n        \"label\": \"Item\",\n        \"name\": \"Item\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Customer database.\",\n        \"label\": \"Customer\",\n        \"name\": \"Customer\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Supplier database.\",\n        \"label\": \"Supplier\",\n        \"name\": \"Supplier\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Company (not Customer or Supplier) master.\",\n        \"label\": \"Company\",\n        \"name\": \"Company\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Tree of financial accounts.\",\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Chart of Accounts\",\n        \"name\": \"Account\",\n        \"onboard\": 1,\n        \"route\": \"#Tree/Account\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Create Opening Sales and Purchase Invoices\",\n        \"label\": \"Opening Invoice Creation Tool\",\n        \"name\": \"Opening Invoice Creation Tool\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Data Import and Settings",
-   "links": "[\n    {\n        \"description\": \"Import Data from CSV / Excel files.\",\n        \"icon\": \"octicon octicon-cloud-upload\",\n        \"label\": \"Import Data\",\n        \"name\": \"Data Import\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Import Chart of Accounts from CSV / Excel files\",\n        \"label\": \"Chart of Accounts Importer\",\n        \"label\": \"Chart of Accounts Importer\",\n        \"name\": \"Chart of Accounts Importer\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Letter Heads for print templates.\",\n        \"label\": \"Letter Head\",\n        \"name\": \"Letter Head\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Add / Manage Email Accounts.\",\n        \"label\": \"Email Account\",\n        \"name\": \"Email Account\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [],
- "creation": "2020-01-23 13:46:38.833076",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Home",
- "modified": "2020-12-07 14:22:38.667767",
- "modified_by": "Administrator",
- "module": "Setup",
- "name": "Home",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 1,
- "shortcuts": [
-  {
-   "label": "Item",
-   "link_to": "Item",
-   "type": "DocType"
-  },
-  {
-   "label": "Customer",
-   "link_to": "Customer",
-   "type": "DocType"
-  },
-  {
-   "label": "Supplier",
-   "link_to": "Supplier",
-   "type": "DocType"
-  },
-  {
-   "label": "Sales Invoice",
-   "link_to": "Sales Invoice",
-   "type": "DocType"
-  },
-  {
-   "label": "Dashboard",
-   "link_to": "dashboard",
-   "type": "Page"
-  },
-  {
-   "label": "Leaderboard",
-   "link_to": "leaderboard",
-   "type": "Page"
-  }
- ]
-}
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 4a438f7..dc45cc1 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -75,7 +75,7 @@
 
 	def validate_default_accounts(self):
 		accounts = [
-			["Default Bank Account", "default_bank_account"], ["Default Cash  Account", "default_cash_account"],
+			["Default Bank Account", "default_bank_account"], ["Default Cash Account", "default_cash_account"],
 			["Default Receivable Account", "default_receivable_account"], ["Default Payable Account", "default_payable_account"],
 			["Default Expense Account", "default_expense_account"], ["Default Income Account", "default_income_account"],
 			["Stock Received But Not Billed Account", "stock_received_but_not_billed"], ["Stock Adjustment Account", "stock_adjustment_account"],
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index 2225fe1..0bb480b 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -28,6 +28,7 @@
 	create_default_energy_point_rules()
 	add_company_to_session_defaults()
 	add_standard_navbar_items()
+	add_app_name()
 	frappe.db.commit()
 
 
@@ -158,3 +159,7 @@
 		})
 
 	navbar_settings.save()
+
+def add_app_name():
+	settings = frappe.get_doc("System Settings")
+	settings.app_name = _("ERPNext")
\ No newline at end of file
diff --git a/erpnext/setup/page/welcome_to_erpnext/welcome_to_erpnext.html b/erpnext/setup/page/welcome_to_erpnext/welcome_to_erpnext.html
index 5808ce7..7166ba3 100644
--- a/erpnext/setup/page/welcome_to_erpnext/welcome_to_erpnext.html
+++ b/erpnext/setup/page/welcome_to_erpnext/welcome_to_erpnext.html
@@ -21,7 +21,6 @@
 			<h3>{%= __("Next Steps") %}</h3>
 			<ul class="list-unstyled">
 				<li><a class="text-muted" href="#">{%= __("Go to the Desktop and start using ERPNext") %}</a></li>
-				<li><a class="text-muted" href="#modules/Learn">{%= __("View a list of all the help videos") %}</a></li>
 				<li><a class="text-muted" href="https://erpnext.com/docs/user" target="_blank">{%= __("Read the ERPNext Manual") %}</a></li>
 				<li><a class="text-muted" href="https://discuss.erpnext.com" target="_blank">{%= __("Community Forum") %}</a></li>
 			</ul>
diff --git a/erpnext/setup/desk_page/erpnext_settings/erpnext_settings.json b/erpnext/setup/workspace/erpnext_settings/erpnext_settings.json
similarity index 77%
rename from erpnext/setup/desk_page/erpnext_settings/erpnext_settings.json
rename to erpnext/setup/workspace/erpnext_settings/erpnext_settings.json
index 253d711..014f409 100644
--- a/erpnext/setup/desk_page/erpnext_settings/erpnext_settings.json
+++ b/erpnext/setup/workspace/erpnext_settings/erpnext_settings.json
@@ -1,18 +1,20 @@
 {
- "cards": [],
  "category": "Modules",
  "charts": [],
  "creation": "2020-03-12 14:47:51.166455",
  "developer_mode_only": 0,
  "disable_user_customization": 0,
  "docstatus": 0,
- "doctype": "Desk Page",
+ "doctype": "Workspace",
  "extends": "Settings",
  "extends_another_page": 1,
+ "hide_custom": 0,
+ "icon": "settings",
  "idx": 0,
  "is_standard": 1,
  "label": "ERPNext Settings",
- "modified": "2020-04-01 11:28:51.400851",
+ "links": [],
+ "modified": "2020-12-01 13:38:37.759596",
  "modified_by": "Administrator",
  "module": "Setup",
  "name": "ERPNext Settings",
@@ -21,89 +23,89 @@
  "pin_to_top": 0,
  "shortcuts": [
   {
-   "icon": "octicon octicon-rocket",
+   "icon": "project",
    "label": "Projects Settings",
    "link_to": "Projects Settings",
    "type": "DocType"
   },
   {
-   "icon": "octicon octicon-repo",
+   "icon": "accounting",
    "label": "Accounts Settings",
    "link_to": "Accounts Settings",
    "type": "DocType"
   },
   {
-   "icon": "octicon octicon-package",
+   "icon": "stock",
    "label": "Stock Settings",
    "link_to": "Stock Settings",
    "type": "DocType"
   },
   {
-   "icon": "octicon octicon-organization",
+   "icon": "hr",
    "label": "HR Settings",
    "link_to": "HR Settings",
    "type": "DocType"
   },
   {
-   "icon": "octicon octicon-tag",
+   "icon": "sell",
    "label": "Selling Settings",
    "link_to": "Selling Settings",
    "type": "DocType"
   },
   {
-   "icon": "octicon octicon-briefcase",
+   "icon": "buying",
    "label": "Buying Settings",
    "link_to": "Buying Settings",
    "type": "DocType"
   },
   {
-   "icon": "fa fa-life-ring",
+   "icon": "support",
    "label": "Support Settings",
    "link_to": "Support Settings",
    "type": "DocType"
   },
   {
-   "icon": "fa fa-shopping-cart",
+   "icon": "retail",
    "label": "Shopping Cart Settings",
    "link_to": "Shopping Cart Settings",
    "type": "DocType"
   },
   {
-   "icon": "fa fa-globe",
+   "icon": "website",
    "label": "Portal Settings",
    "link_to": "Portal Settings",
    "type": "DocType"
   },
   {
-   "icon": "octicon octicon-tools",
+   "icon": "organization",
    "label": "Manufacturing Settings",
    "link_to": "Manufacturing Settings",
    "restrict_to_domain": "Manufacturing",
    "type": "DocType"
   },
   {
-   "icon": "octicon octicon-mortar-board",
+   "icon": "education",
    "label": "Education Settings",
    "link_to": "Education Settings",
    "restrict_to_domain": "Education",
    "type": "DocType"
   },
   {
-   "icon": "fa fa-bed",
+   "icon": "organization",
    "label": "Hotel Settings",
    "link_to": "Hotel Settings",
    "restrict_to_domain": "Hospitality",
    "type": "DocType"
   },
   {
-   "icon": "fa fa-heartbeat",
+   "icon": "non-profit",
    "label": "Healthcare Settings",
    "link_to": "Healthcare Settings",
    "restrict_to_domain": "Healthcare",
    "type": "DocType"
   },
   {
-   "icon": "fa fa-cog",
+   "icon": "setting",
    "label": "Domain Settings",
    "link_to": "Domain Settings",
    "type": "DocType"
diff --git a/erpnext/setup/workspace/home/home.json b/erpnext/setup/workspace/home/home.json
new file mode 100644
index 0000000..69ca7cf
--- /dev/null
+++ b/erpnext/setup/workspace/home/home.json
@@ -0,0 +1,454 @@
+{
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-01-23 13:46:38.833076",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "getting-started",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Home",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Healthcare",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Patient",
+   "link_to": "Patient",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Diagnosis",
+   "link_to": "Diagnosis",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Agriculture",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Crop",
+   "link_to": "Crop",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Crop Cycle",
+   "link_to": "Crop Cycle",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Location",
+   "link_to": "Location",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Fertilizer",
+   "link_to": "Fertilizer",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Education",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Student",
+   "link_to": "Student",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Course",
+   "link_to": "Course",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Instructor",
+   "link_to": "Instructor",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Room",
+   "link_to": "Room",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Non Profit",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Member",
+   "link_to": "Member",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Volunteer",
+   "link_to": "Volunteer",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Chapter",
+   "link_to": "Chapter",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Donor",
+   "link_to": "Donor",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Stock",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Warehouse",
+   "link_to": "Warehouse",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Brand",
+   "link_to": "Brand",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Unit of Measure (UOM)",
+   "link_to": "UOM",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Stock Reconciliation",
+   "link_to": "Stock Reconciliation",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Human Resources",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee",
+   "link_to": "Employee",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Employee",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Employee Attendance Tool",
+   "link_to": "Employee Attendance Tool",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Salary Structure",
+   "link_to": "Salary Structure",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "CRM",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Lead",
+   "link_to": "Lead",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Customer Group",
+   "link_to": "Customer Group",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Territory",
+   "link_to": "Territory",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Accounting",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item",
+   "link_to": "Item",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Customer",
+   "link_to": "Customer",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Supplier",
+   "link_to": "Supplier",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Company",
+   "link_to": "Company",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Chart of Accounts",
+   "link_to": "Account",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Opening Invoice Creation Tool",
+   "link_to": "Opening Invoice Creation Tool",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Data Import and Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Import Data",
+   "link_to": "Data Import",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Chart of Accounts Importer",
+   "link_to": "Chart of Accounts Importer",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Letter Head",
+   "link_to": "Letter Head",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Email Account",
+   "link_to": "Email Account",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  }
+ ],
+ "modified": "2021-01-01 12:13:16.055668",
+ "modified_by": "Administrator",
+ "module": "Setup",
+ "name": "Home",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 1,
+ "shortcuts": [
+  {
+   "label": "Item",
+   "link_to": "Item",
+   "type": "DocType"
+  },
+  {
+   "label": "Customer",
+   "link_to": "Customer",
+   "type": "DocType"
+  },
+  {
+   "label": "Supplier",
+   "link_to": "Supplier",
+   "type": "DocType"
+  },
+  {
+   "label": "Sales Invoice",
+   "link_to": "Sales Invoice",
+   "type": "DocType"
+  },
+  {
+   "label": "Leaderboard",
+   "link_to": "leaderboard",
+   "type": "Page"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/startup/filters.py b/erpnext/startup/filters.py
index a99e49b..ec07329 100644
--- a/erpnext/startup/filters.py
+++ b/erpnext/startup/filters.py
@@ -2,13 +2,13 @@
 import frappe
 
 def get_filters_config():
-    filters_config = {
+	filters_config = {
 		"fiscal year": {
 			"label": "Fiscal Year",
 			"get_field": "erpnext.accounts.utils.get_fiscal_year_filter_field",
 			"valid_for_fieldtypes": ["Date", "Datetime", "DateRange"],
 			"depends_on": "company",
 		}
-    }
+	}
 
-    return filters_config
\ No newline at end of file
+	return filters_config
\ No newline at end of file
diff --git a/erpnext/startup/leaderboard.py b/erpnext/startup/leaderboard.py
index ef238f1..8819a55 100644
--- a/erpnext/startup/leaderboard.py
+++ b/erpnext/startup/leaderboard.py
@@ -12,6 +12,7 @@
 				{'fieldname': 'outstanding_amount', 'fieldtype': 'Currency'}
 			],
 			"method": "erpnext.startup.leaderboard.get_all_customers",
+			"icon": "customer"
 		},
 		"Item": {
 			"fields": [
@@ -23,6 +24,7 @@
 				{'fieldname': 'available_stock_value', 'fieldtype': 'Currency'}
 			],
 			"method": "erpnext.startup.leaderboard.get_all_items",
+			"icon": "stock"
 		},
 		"Supplier": {
 			"fields": [
@@ -31,6 +33,7 @@
 				{'fieldname': 'outstanding_amount', 'fieldtype': 'Currency'}
 			],
 			"method": "erpnext.startup.leaderboard.get_all_suppliers",
+			"icon": "buying"
 		},
 		"Sales Partner": {
 			"fields": [
@@ -38,12 +41,14 @@
 				{'fieldname': 'total_commission', 'fieldtype': 'Currency'}
 			],
 			"method": "erpnext.startup.leaderboard.get_all_sales_partner",
+			"icon": "hr"
 		},
 		"Sales Person": {
 			"fields": [
 				{'fieldname': 'total_sales_amount', 'fieldtype': 'Currency'}
 			],
 			"method": "erpnext.startup.leaderboard.get_all_sales_person",
+			"icon": "customer"
 		}
 	}
 
diff --git a/erpnext/stock/dashboard/item_dashboard.js b/erpnext/stock/dashboard/item_dashboard.js
index 9bd03d4..f64d593 100644
--- a/erpnext/stock/dashboard/item_dashboard.js
+++ b/erpnext/stock/dashboard/item_dashboard.js
@@ -198,7 +198,7 @@
 			freeze: true,
 			callback: function(r) {
 				frappe.show_alert(__('Stock Entry {0} created',
-					['<a href="#Form/Stock Entry/'+r.message.name+'">' + r.message.name+ '</a>']));
+					['<a href="/app/stock-entry/'+r.message.name+'">' + r.message.name+ '</a>']));
 				dialog.hide();
 				callback(r);
 			},
diff --git a/erpnext/stock/dashboard/item_dashboard_list.html b/erpnext/stock/dashboard/item_dashboard_list.html
index e1914ed..0c10be4 100644
--- a/erpnext/stock/dashboard/item_dashboard_list.html
+++ b/erpnext/stock/dashboard/item_dashboard_list.html
@@ -1,10 +1,10 @@
 {% for d in data %}
 	<div class="dashboard-list-item">
 		<div class="row">
-			<div class="col-sm-3 small" style="margin-top: 8px;">
+			<div class="col-sm-3" style="margin-top: 8px;">
 				<a data-type="warehouse" data-name="{{ d.warehouse }}">{{ d.warehouse }}</a>
 			</div>
-			<div class="col-sm-3 small" style="margin-top: 8px;">
+			<div class="col-sm-3" style="margin-top: 8px;">
 				{% if show_item %}
 					<a data-type="item"
 						data-name="{{ d.item_code }}">{{ d.item_code }}
@@ -12,7 +12,7 @@
 					</a>
 				{% endif %}
 			</div>
-			<div class="col-sm-4 small">
+			<div class="col-sm-4">
 				<span class="inline-graph">
 					<span class="inline-graph-half" title="{{ __("Reserved Qty") }}">
 						<span class="inline-graph-count">{{ d.total_reserved }}</span>
@@ -40,7 +40,7 @@
 				</span>
 			</div>
 			{% if can_write %}
-			<div class="col-sm-2 text-right" style="margin-top: 8px;">
+			<div class="col-sm-2 text-right" style="margin: var(--margin-sm) 0;">
 				{% if d.actual_qty %}
 				<button class="btn btn-default btn-xs btn-move"
 					data-disable_quick_entry="{{ d.disable_quick_entry }}"
diff --git a/erpnext/stock/desk_page/stock/stock.json b/erpnext/stock/desk_page/stock/stock.json
deleted file mode 100644
index 9068e33..0000000
--- a/erpnext/stock/desk_page/stock/stock.json
+++ /dev/null
@@ -1,124 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Items and Pricing",
-   "links": "[\n    {\n        \"label\": \"Item\",\n        \"name\": \"Item\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"icon\": \"fa fa-sitemap\",\n        \"label\": \"Item Group\",\n        \"link\": \"Tree/Item Group\",\n        \"name\": \"Item Group\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Product Bundle\",\n        \"name\": \"Product Bundle\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Price List\",\n        \"name\": \"Price List\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Item Price\",\n        \"name\": \"Item Price\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Shipping Rule\",\n        \"name\": \"Shipping Rule\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Pricing Rule\",\n        \"name\": \"Pricing Rule\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Item Alternative\",\n        \"name\": \"Item Alternative\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Item Manufacturer\",\n        \"name\": \"Item Manufacturer\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Customs Tariff Number\",\n        \"name\": \"Customs Tariff Number\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Stock Transactions",
-   "links": "[\n     {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"label\": \"Material Request\",\n        \"name\": \"Material Request\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"label\": \"Stock Entry\",\n        \"name\": \"Stock Entry\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Customer\"\n        ],\n        \"label\": \"Delivery Note\",\n        \"name\": \"Delivery Note\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\",\n            \"Supplier\"\n        ],\n        \"label\": \"Purchase Receipt\",\n        \"name\": \"Purchase Receipt\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"label\": \"Pick List\",\n        \"name\": \"Pick List\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Shipment\",\n        \"name\": \"Shipment\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Delivery Trip\",\n        \"name\": \"Delivery Trip\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Stock Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Stock Ledger Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Stock Ledger\",\n        \"name\": \"Stock Ledger\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Stock Ledger Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Stock Balance\",\n        \"name\": \"Stock Balance\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Item\",\n        \"is_query_report\": true,\n        \"label\": \"Stock Projected Qty\",\n        \"name\": \"Stock Projected Qty\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"label\": \"Stock Summary\",\n        \"name\": \"stock-balance\",\n        \"type\": \"page\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Item\",\n        \"is_query_report\": true,\n        \"label\": \"Stock Ageing\",\n        \"name\": \"Stock Ageing\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Item\",\n        \"is_query_report\": true,\n        \"label\": \"Item Price Stock\",\n        \"name\": \"Item Price Stock\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Settings",
-   "links": "[\n    {\n        \"label\": \"Stock Settings\",\n        \"name\": \"Stock Settings\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Warehouse\",\n        \"name\": \"Warehouse\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Unit of Measure (UOM)\",\n        \"name\": \"UOM\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Item Variant Settings\",\n        \"name\": \"Item Variant Settings\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Brand\",\n        \"name\": \"Brand\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Item Attribute\",\n        \"name\": \"Item Attribute\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"UOM Conversion Factor\",\n        \"name\": \"UOM Conversion Factor\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Serial No and Batch",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"label\": \"Serial No\",\n        \"name\": \"Serial No\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"label\": \"Batch\",\n        \"name\": \"Batch\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"label\": \"Installation Note\",\n        \"name\": \"Installation Note\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"dependencies\": [\n            \"Serial No\"\n        ],\n        \"doctype\": \"Serial No\",\n        \"label\": \"Serial No Service Contract Expiry\",\n        \"name\": \"Serial No Service Contract Expiry\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Serial No\"\n        ],\n        \"doctype\": \"Serial No\",\n        \"label\": \"Serial No Status\",\n        \"name\": \"Serial No Status\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Serial No\"\n        ],\n        \"doctype\": \"Serial No\",\n        \"label\": \"Serial No Warranty Expiry\",\n        \"name\": \"Serial No Warranty Expiry\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Tools",
-   "links": "[\n    {\n        \"label\": \"Stock Reconciliation\",\n        \"name\": \"Stock Reconciliation\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Landed Cost Voucher\",\n        \"name\": \"Landed Cost Voucher\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Packing Slip\",\n        \"name\": \"Packing Slip\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Quality Inspection\",\n        \"name\": \"Quality Inspection\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Quality Inspection Template\",\n        \"name\": \"Quality Inspection Template\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Quick Stock Balance\",\n        \"name\": \"Quick Stock Balance\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Key Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Item Price\"\n        ],\n        \"doctype\": \"Item Price\",\n        \"is_query_report\": false,\n        \"label\": \"Item-wise Price List Rate\",\n        \"name\": \"Item-wise Price List Rate\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Stock Entry\"\n        ],\n        \"doctype\": \"Stock Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Stock Analytics\",\n        \"name\": \"Stock Analytics\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Item\",\n        \"is_query_report\": true,\n        \"label\": \"Stock Qty vs Serial No Count\",\n        \"name\": \"Stock Qty vs Serial No Count\",\n        \"onboard\": 1,\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Delivery Note\"\n        ],\n        \"doctype\": \"Delivery Note\",\n        \"is_query_report\": true,\n        \"label\": \"Delivery Note Trends\",\n        \"name\": \"Delivery Note Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Receipt\"\n        ],\n        \"doctype\": \"Purchase Receipt\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Receipt Trends\",\n        \"name\": \"Purchase Receipt Trends\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Sales Order\"\n        ],\n        \"doctype\": \"Sales Order\",\n        \"is_query_report\": true,\n        \"label\": \"Sales Order Analysis\",\n        \"name\": \"Sales Order Analysis\",\n        \"type\": \"report\"\n    },\n   {\n         \"dependencies\": [\n            \"Purchase Order\"\n        ],\n        \"doctype\": \"Purchase Order\",\n        \"is_query_report\": true,\n        \"label\": \"Purchase Order Analysis\",\n        \"name\": \"Purchase Order Analysis\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Bin\"\n        ],\n        \"doctype\": \"Bin\",\n        \"is_query_report\": true,\n        \"label\": \"Item Shortage Report\",\n        \"name\": \"Item Shortage Report\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Batch\"\n        ],\n        \"doctype\": \"Batch\",\n        \"is_query_report\": true,\n        \"label\": \"Batch-Wise Balance History\",\n        \"name\": \"Batch-Wise Balance History\",\n        \"type\": \"report\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Other Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Material Request\"\n        ],\n        \"doctype\": \"Material Request\",\n        \"is_query_report\": true,\n        \"label\": \"Requested Items To Be Transferred\",\n        \"name\": \"Requested Items To Be Transferred\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Stock Ledger Entry\"\n        ],\n        \"doctype\": \"Stock Ledger Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Batch Item Expiry Status\",\n        \"name\": \"Batch Item Expiry Status\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Price List\"\n        ],\n        \"doctype\": \"Price List\",\n        \"is_query_report\": true,\n        \"label\": \"Item Prices\",\n        \"name\": \"Item Prices\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Item\",\n        \"is_query_report\": true,\n        \"label\": \"Itemwise Recommended Reorder Level\",\n        \"name\": \"Itemwise Recommended Reorder Level\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Item\"\n        ],\n        \"doctype\": \"Item\",\n        \"is_query_report\": true,\n        \"label\": \"Item Variant Details\",\n        \"name\": \"Item Variant Details\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Order\"\n        ],\n        \"doctype\": \"Purchase Order\",\n        \"is_query_report\": true,\n        \"label\": \"Subcontracted Raw Materials To Be Transferred\",\n        \"name\": \"Subcontracted Raw Materials To Be Transferred\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Purchase Order\"\n        ],\n        \"doctype\": \"Purchase Order\",\n        \"is_query_report\": true,\n        \"label\": \"Subcontracted Item To Be Received\",\n        \"name\": \"Subcontracted Item To Be Received\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Stock Ledger Entry\"\n        ],\n        \"doctype\": \"Stock Ledger Entry\",\n        \"is_query_report\": true,\n        \"label\": \"Stock and Account Value Comparison\",\n        \"name\": \"Stock and Account Value Comparison\",\n        \"type\": \"report\"\n    }\n]"
-  }
- ],
- "cards_label": "Masters & Reports",
- "category": "Modules",
- "charts": [
-  {
-   "chart_name": "Warehouse wise Stock Value"
-  }
- ],
- "creation": "2020-03-02 15:43:10.096528",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Stock",
- "modified": "2020-12-02 15:47:41.532942",
- "modified_by": "Administrator",
- "module": "Stock",
- "name": "Stock",
- "onboarding": "Stock",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "color": "#cef6d1",
-   "format": "{}  Available",
-   "label": "Item",
-   "link_to": "Item",
-   "stats_filter": "{\n    \"disabled\" : 0\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "#ffe8cd",
-   "format": "{} Pending",
-   "label": "Material Request",
-   "link_to": "Material Request",
-   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\": \"Pending\"\n}",
-   "type": "DocType"
-  },
-  {
-   "label": "Stock Entry",
-   "link_to": "Stock Entry",
-   "type": "DocType"
-  },
-  {
-   "color": "#ffe8cd",
-   "format": "{} To Bill",
-   "label": "Purchase Receipt",
-   "link_to": "Purchase Receipt",
-   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\": \"To Bill\"\n}",
-   "type": "DocType"
-  },
-  {
-   "color": "#ffe8cd",
-   "format": "{} To Bill",
-   "label": "Delivery Note",
-   "link_to": "Delivery Note",
-   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\": \"To Bill\"\n}",
-   "type": "DocType"
-  },
-  {
-   "label": "Stock Ledger",
-   "link_to": "Stock Ledger",
-   "type": "Report"
-  },
-  {
-   "label": "Stock Balance",
-   "link_to": "Stock Balance",
-   "type": "Report"
-  },
-  {
-   "label": "Dashboard",
-   "link_to": "Stock",
-   "type": "Dashboard"
-  }
- ],
- "shortcuts_label": "Quick Access"
-}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/batch/batch.js b/erpnext/stock/doctype/batch/batch.js
index e2ea7f9..3b07e4e 100644
--- a/erpnext/stock/doctype/batch/batch.js
+++ b/erpnext/stock/doctype/batch/batch.js
@@ -47,8 +47,7 @@
 						return;
 					}
 
-					var section = frm.dashboard.add_section(`<h5 style="margin-top: 0px;">
-						${ __("Stock Levels") }</a></h5>`);
+					const section = frm.dashboard.add_section('', __("Stock Levels"));
 
 					// sort by qty
 					r.message.sort(function(a, b) { a.qty > b.qty ? 1 : -1 });
@@ -103,7 +102,7 @@
 									},
 									callback: (r) => {
 										frappe.show_alert(__('Stock Entry {0} created',
-											['<a href="#Form/Stock Entry/'+r.message.name+'">' + r.message.name+ '</a>']));
+											['<a href="/app/stock-entry/'+r.message.name+'">' + r.message.name+ '</a>']));
 										frm.refresh();
 									},
 								});
diff --git a/erpnext/stock/doctype/batch/batch_list.js b/erpnext/stock/doctype/batch/batch_list.js
index d4f74c3..0de9fd0 100644
--- a/erpnext/stock/doctype/batch/batch_list.js
+++ b/erpnext/stock/doctype/batch/batch_list.js
@@ -2,9 +2,9 @@
 	add_fields: ["item", "expiry_date", "batch_qty", "disabled"],
 	get_indicator: (doc) => {
 		if (doc.disabled) {
-			return [__("Disabled"), "darkgrey", "disabled,=,1"];
+			return [__("Disabled"), "gray", "disabled,=,1"];
 		} else if (!doc.batch_qty) {
-			return [__("Empty"), "darkgrey", "batch_qty,=,0|disabled,=,0"];
+			return [__("Empty"), "gray", "batch_qty,=,0|disabled,=,0"];
 		} else if (doc.expiry_date && frappe.datetime.get_diff(doc.expiry_date, frappe.datetime.nowdate()) <= 0) {
 			return [__("Expired"), "red", "expiry_date,not in,|expiry_date,<=,Today|batch_qty,>,0|disabled,=,0"]
 		} else {
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index a30cadf..273399c 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -83,7 +83,7 @@
 			}
 		])
 
-	def before_print(self):
+	def before_print(self, settings=None):
 		def toggle_print_hide(meta, fieldname):
 			df = meta.get_field(fieldname)
 			if self.get("print_without_amount"):
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note_list.js b/erpnext/stock/doctype/delivery_note/delivery_note_list.js
index 4a6500c..f08125b 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note_list.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note_list.js
@@ -3,7 +3,7 @@
 		"transporter_name", "grand_total", "is_return", "status", "currency"],
 	get_indicator: function(doc) {
 		if(cint(doc.is_return)==1) {
-			return [__("Return"), "darkgrey", "is_return,=,Yes"];
+			return [__("Return"), "gray", "is_return,=,Yes"];
 		} else if (doc.status === "Closed") {
 			return [__("Closed"), "green", "status,=,Closed"];
 		} else if (flt(doc.per_returned, 2) === 100) {
diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py
index aaca802..5030595 100644
--- a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py
+++ b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py
@@ -5,8 +5,6 @@
 import frappe
 
 from frappe.model.document import Document
-from erpnext.controllers.print_settings import print_settings_for_item_table
 
 class DeliveryNoteItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
\ No newline at end of file
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index faeeb57..9e09411 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -85,7 +85,7 @@
 		}
 		if (frm.doc.variant_of) {
 			frm.set_intro(__('This Item is a Variant of {0} (Template).',
-				[`<a href="#Form/Item/${frm.doc.variant_of}">${frm.doc.variant_of}</a>`]), true);
+				[`<a href="/app/item/${frm.doc.variant_of}">${frm.doc.variant_of}</a>`]), true);
 		}
 
 		if (frappe.defaults.get_default("item_naming_by")!="Naming Series" || frm.doc.variant_of) {
@@ -380,8 +380,7 @@
 		// Show Stock Levels only if is_stock_item
 		if (frm.doc.is_stock_item) {
 			frappe.require('assets/js/item-dashboard.min.js', function() {
-				var section = frm.dashboard.add_section('<h5 style="margin-top: 0px;">\
-					<a href="#stock-balance">' + __("Stock Levels") + '</a></h5>');
+				const section = frm.dashboard.add_section('', __("Stock Levels"));
 				erpnext.item.item_dashboard = new erpnext.stock.ItemDashboard({
 					parent: section,
 					item_code: frm.doc.name
@@ -650,7 +649,7 @@
 					if (r.message) {
 						var variant = r.message;
 						frappe.msgprint_dialog = frappe.msgprint(__("Item Variant {0} already exists with same attributes",
-							[repl('<a href="#Form/Item/%(item_encoded)s" class="strong variant-click">%(item)s</a>', {
+							[repl('<a href="/app/item/%(item_encoded)s" class="strong variant-click">%(item)s</a>', {
 								item_encoded: encodeURIComponent(variant),
 								item: variant
 							})]
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index be845d9..86ce5cc 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -860,7 +860,7 @@
 
 		rows = ''
 		for docname, attr_list in not_included.items():
-			link = "<a href='#Form/Item/{0}'>{0}</a>".format(frappe.bold(_(docname)))
+			link = "<a href='/app/Form/Item/{0}'>{0}</a>".format(frappe.bold(_(docname)))
 			rows += table_row(link, body(attr_list))
 
 		error_description = _('The following deleted attributes exist in Variants but not in the Template. You can either delete the Variants or keep the attribute(s) in template.')
diff --git a/erpnext/stock/doctype/item/item_dashboard.py b/erpnext/stock/doctype/item/item_dashboard.py
index dd4676a..b3e4796 100644
--- a/erpnext/stock/doctype/item/item_dashboard.py
+++ b/erpnext/stock/doctype/item/item_dashboard.py
@@ -32,16 +32,16 @@
 					'Purchase Order', 'Purchase Receipt', 'Purchase Invoice']
 			},
 			{
+				'label': _('Manufacture'),
+				'items': ['Production Plan', 'Work Order', 'Item Manufacturer']
+			},
+			{
 				'label': _('Traceability'),
 				'items': ['Serial No', 'Batch']
 			},
 			{
 				'label': _('Move'),
 				'items': ['Stock Entry']
-			},
-			{
-				'label': _('Manufacture'),
-				'items': ['Production Plan', 'Work Order', 'Item Manufacturer']
 			}
 		]
 	}
diff --git a/erpnext/stock/doctype/item_price/item_price.js b/erpnext/stock/doctype/item_price/item_price.js
index 2729f4b..017d248 100644
--- a/erpnext/stock/doctype/item_price/item_price.js
+++ b/erpnext/stock/doctype/item_price/item_price.js
@@ -14,6 +14,6 @@
 		frm.add_fetch("item_code", "stock_uom", "uom");
 
 		frm.set_df_property("bulk_import_help", "options",
-			'<a href="#data-import-tool/Item Price">' + __("Import in Bulk") + '</a>');
+			'<a href="/app/data-import-tool/Item Price">' + __("Import in Bulk") + '</a>');
 	}
 });
diff --git a/erpnext/stock/doctype/material_request_item/material_request_item.py b/erpnext/stock/doctype/material_request_item/material_request_item.py
index 6c6ecfe..16f007f 100644
--- a/erpnext/stock/doctype/material_request_item/material_request_item.py
+++ b/erpnext/stock/doctype/material_request_item/material_request_item.py
@@ -6,12 +6,10 @@
 from __future__ import unicode_literals
 import frappe
 
-from erpnext.controllers.print_settings import print_settings_for_item_table
 from frappe.model.document import Document
 
 class MaterialRequestItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
 
 def on_doctype_update():
 	frappe.db.add_index("Material Request Item", ["item_code", "warehouse"])
\ No newline at end of file
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
index c9501a4..77711de 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
@@ -3,7 +3,7 @@
 		"transporter_name", "is_return", "status", "per_billed", "currency"],
 	get_indicator: function(doc) {
 		if(cint(doc.is_return)==1) {
-			return [__("Return"), "darkgrey", "is_return,=,Yes"];
+			return [__("Return"), "gray", "is_return,=,Yes"];
 		} else if (doc.status === "Closed") {
 			return [__("Closed"), "green", "status,=,Closed"];
 		} else if (flt(doc.per_returned, 2) === 100) {
diff --git a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py
index 679bd1e..b79bb5d 100644
--- a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py
+++ b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py
@@ -5,8 +5,6 @@
 import frappe
 
 from frappe.model.document import Document
-from erpnext.controllers.print_settings import print_settings_for_item_table
 
 class PurchaseReceiptItem(Document):
-	def __setup__(self):
-		print_settings_for_item_table(self)
+	pass
diff --git a/erpnext/stock/doctype/shipment/shipment.js b/erpnext/stock/doctype/shipment/shipment.js
index 5ccb7d2..7af16af 100644
--- a/erpnext/stock/doctype/shipment/shipment.js
+++ b/erpnext/stock/doctype/shipment/shipment.js
@@ -150,7 +150,9 @@
 							frm.set_value('pickup_contact_name', '');
 							frm.set_value('pickup_contact', '');
 						}
-						frappe.throw(__("Email or Phone/Mobile of the Contact are mandatory to continue.") + "</br>" + __("Please set Email/Phone for the contact") + ` <a href='#Form/Contact/${contact_name}'>${contact_name}</a>`);
+						frappe.throw(__("Email or Phone/Mobile of the Contact are mandatory to continue.") 
+							+ "</br>" + __("Please set Email/Phone for the contact") 
+							+ ` <a href='/app/contact/${contact_name}'>${contact_name}</a>`);
 					}
 					let contact_display = r.message.contact_display;
 					if (r.message.contact_email) {
@@ -242,7 +244,9 @@
 					frm.set_value('pickup_company', '');
 					frm.set_value('pickup_contact', '');
 				}
-				frappe.throw(__("Last Name, Email or Phone/Mobile of the user are mandatory to continue.") + "</br>" + __("Please first set Last Name, Email and Phone for the user") + ` <a href="#Form/User/${frappe.session.user}">${frappe.session.user}</a>`);
+				frappe.throw(__("Last Name, Email or Phone/Mobile of the user are mandatory to continue.") + "</br>" 
+					+ __("Please first set Last Name, Email and Phone for the user") 
+					+ ` <a href="/app/user/${frappe.session.user}">${frappe.session.user}</a>`);
 			}
 			let contact_display = r.full_name;
 			if (r.email) {
diff --git a/erpnext/stock/doctype/warehouse/warehouse_tree.js b/erpnext/stock/doctype/warehouse/warehouse_tree.js
index 918d2f1..3665c05 100644
--- a/erpnext/stock/doctype/warehouse/warehouse_tree.js
+++ b/erpnext/stock/doctype/warehouse/warehouse_tree.js
@@ -19,7 +19,7 @@
 	ignore_fields:["parent_warehouse"],
 	onrender: function(node) {
 		if (node.data && node.data.balance!==undefined) {
-			$('<span class="balance-area pull-right text-muted small">'
+			$('<span class="balance-area pull-right">'
 			+ format_currency(Math.abs(node.data.balance), node.data.company_currency)
 			+ '</span>').insertBefore(node.$ul);
 		}
diff --git a/erpnext/stock/module_onboarding/stock/stock.json b/erpnext/stock/module_onboarding/stock/stock.json
index 1d5bf8c..8474648 100644
--- a/erpnext/stock/module_onboarding/stock/stock.json
+++ b/erpnext/stock/module_onboarding/stock/stock.json
@@ -19,7 +19,7 @@
  "documentation_url": "https://docs.erpnext.com/docs/user/manual/en/stock",
  "idx": 0,
  "is_complete": 0,
- "modified": "2020-07-08 14:22:07.951891",
+ "modified": "2020-10-14 14:54:42.741971",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Stock",
diff --git a/erpnext/stock/onboarding_step/create_a_product/create_a_product.json b/erpnext/stock/onboarding_step/create_a_product/create_a_product.json
index d2068e1..335137d 100644
--- a/erpnext/stock/onboarding_step/create_a_product/create_a_product.json
+++ b/erpnext/stock/onboarding_step/create_a_product/create_a_product.json
@@ -8,7 +8,7 @@
  "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-12 18:30:02.489949",
+ "modified": "2020-10-14 14:53:00.133574",
  "modified_by": "Administrator",
  "name": "Create a Product",
  "owner": "Administrator",
diff --git a/erpnext/stock/onboarding_step/create_a_purchase_receipt/create_a_purchase_receipt.json b/erpnext/stock/onboarding_step/create_a_purchase_receipt/create_a_purchase_receipt.json
index b7811a4..9012493 100644
--- a/erpnext/stock/onboarding_step/create_a_purchase_receipt/create_a_purchase_receipt.json
+++ b/erpnext/stock/onboarding_step/create_a_purchase_receipt/create_a_purchase_receipt.json
@@ -8,7 +8,7 @@
  "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-19 18:59:13.266713",
+ "modified": "2020-10-14 14:53:25.618434",
  "modified_by": "Administrator",
  "name": "Create a Purchase Receipt",
  "owner": "Administrator",
diff --git a/erpnext/stock/onboarding_step/create_a_stock_entry/create_a_stock_entry.json b/erpnext/stock/onboarding_step/create_a_stock_entry/create_a_stock_entry.json
index 2b83f65..09902b8 100644
--- a/erpnext/stock/onboarding_step/create_a_stock_entry/create_a_stock_entry.json
+++ b/erpnext/stock/onboarding_step/create_a_stock_entry/create_a_stock_entry.json
@@ -8,7 +8,7 @@
  "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-15 03:30:58.047696",
+ "modified": "2020-10-14 14:53:00.105905",
  "modified_by": "Administrator",
  "name": "Create a Stock Entry",
  "owner": "Administrator",
diff --git a/erpnext/stock/onboarding_step/create_a_supplier/create_a_supplier.json b/erpnext/stock/onboarding_step/create_a_supplier/create_a_supplier.json
index 7a64224..ef61fa3 100644
--- a/erpnext/stock/onboarding_step/create_a_supplier/create_a_supplier.json
+++ b/erpnext/stock/onboarding_step/create_a_supplier/create_a_supplier.json
@@ -8,7 +8,7 @@
  "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-14 22:09:10.043554",
+ "modified": "2020-10-14 14:53:00.120455",
  "modified_by": "Administrator",
  "name": "Create a Supplier",
  "owner": "Administrator",
diff --git a/erpnext/stock/onboarding_step/introduction_to_stock_entry/introduction_to_stock_entry.json b/erpnext/stock/onboarding_step/introduction_to_stock_entry/introduction_to_stock_entry.json
index 009a44f..212e505 100644
--- a/erpnext/stock/onboarding_step/introduction_to_stock_entry/introduction_to_stock_entry.json
+++ b/erpnext/stock/onboarding_step/introduction_to_stock_entry/introduction_to_stock_entry.json
@@ -8,7 +8,7 @@
  "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-26 15:55:41.457289",
+ "modified": "2020-10-14 14:53:00.075177",
  "modified_by": "Administrator",
  "name": "Introduction to Stock Entry",
  "owner": "Administrator",
diff --git a/erpnext/stock/onboarding_step/setup_your_warehouse/setup_your_warehouse.json b/erpnext/stock/onboarding_step/setup_your_warehouse/setup_your_warehouse.json
index 9457dee..75940ed 100644
--- a/erpnext/stock/onboarding_step/setup_your_warehouse/setup_your_warehouse.json
+++ b/erpnext/stock/onboarding_step/setup_your_warehouse/setup_your_warehouse.json
@@ -8,7 +8,7 @@
  "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-07-04 12:33:16.970031",
+ "modified": "2020-10-14 14:53:25.538900",
  "modified_by": "Administrator",
  "name": "Setup your Warehouse",
  "owner": "Administrator",
diff --git a/erpnext/stock/onboarding_step/stock_settings/stock_settings.json b/erpnext/stock/onboarding_step/stock_settings/stock_settings.json
index 7591bff..ae34afa 100644
--- a/erpnext/stock/onboarding_step/stock_settings/stock_settings.json
+++ b/erpnext/stock/onboarding_step/stock_settings/stock_settings.json
@@ -8,7 +8,7 @@
  "is_mandatory": 0,
  "is_single": 1,
  "is_skipped": 0,
- "modified": "2020-05-15 03:55:15.444151",
+ "modified": "2020-10-14 14:53:00.092504",
  "modified_by": "Administrator",
  "name": "Stock Settings",
  "owner": "Administrator",
diff --git a/erpnext/stock/workspace/stock/stock.json b/erpnext/stock/workspace/stock/stock.json
new file mode 100644
index 0000000..3221dc4
--- /dev/null
+++ b/erpnext/stock/workspace/stock/stock.json
@@ -0,0 +1,721 @@
+{
+ "cards_label": "Masters & Reports",
+ "category": "Modules",
+ "charts": [
+  {
+   "chart_name": "Warehouse wise Stock Value"
+  }
+ ],
+ "creation": "2020-03-02 15:43:10.096528",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "stock",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Stock",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Items and Pricing",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item",
+   "link_to": "Item",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item Group",
+   "link_to": "Item Group",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Product Bundle",
+   "link_to": "Product Bundle",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Price List",
+   "link_to": "Price List",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item Price",
+   "link_to": "Item Price",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Shipping Rule",
+   "link_to": "Shipping Rule",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Pricing Rule",
+   "link_to": "Pricing Rule",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item Alternative",
+   "link_to": "Item Alternative",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item Manufacturer",
+   "link_to": "Item Manufacturer",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Customs Tariff Number",
+   "link_to": "Customs Tariff Number",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Stock Transactions",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Material Request",
+   "link_to": "Material Request",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Stock Entry",
+   "link_to": "Stock Entry",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Customer",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Delivery Note",
+   "link_to": "Delivery Note",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item, Supplier",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Purchase Receipt",
+   "link_to": "Purchase Receipt",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Pick List",
+   "link_to": "Pick List",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Delivery Trip",
+   "link_to": "Delivery Trip",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Stock Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Stock Ledger",
+   "link_to": "Stock Ledger",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Stock Balance",
+   "link_to": "Stock Balance",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Stock Projected Qty",
+   "link_to": "Stock Projected Qty",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Stock Summary",
+   "link_to": "stock-balance",
+   "link_type": "Page",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Stock Ageing",
+   "link_to": "Stock Ageing",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Item Price Stock",
+   "link_to": "Item Price Stock",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Stock Settings",
+   "link_to": "Stock Settings",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Warehouse",
+   "link_to": "Warehouse",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Unit of Measure (UOM)",
+   "link_to": "UOM",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item Variant Settings",
+   "link_to": "Item Variant Settings",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Brand",
+   "link_to": "Brand",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item Attribute",
+   "link_to": "Item Attribute",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "UOM Conversion Factor",
+   "link_to": "UOM Conversion Factor",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Serial No and Batch",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Serial No",
+   "link_to": "Serial No",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Batch",
+   "link_to": "Batch",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Installation Note",
+   "link_to": "Installation Note",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Serial No",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Serial No Service Contract Expiry",
+   "link_to": "Serial No Service Contract Expiry",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Serial No",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Serial No Status",
+   "link_to": "Serial No Status",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Serial No",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Serial No Warranty Expiry",
+   "link_to": "Serial No Warranty Expiry",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Tools",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Stock Reconciliation",
+   "link_to": "Stock Reconciliation",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Landed Cost Voucher",
+   "link_to": "Landed Cost Voucher",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Packing Slip",
+   "link_to": "Packing Slip",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quality Inspection",
+   "link_to": "Quality Inspection",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quality Inspection Template",
+   "link_to": "Quality Inspection Template",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Quick Stock Balance",
+   "link_to": "Quick Stock Balance",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Key Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Item Price",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Item-wise Price List Rate",
+   "link_to": "Item-wise Price List Rate",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Stock Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Stock Analytics",
+   "link_to": "Stock Analytics",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Stock Qty vs Serial No Count",
+   "link_to": "Stock Qty vs Serial No Count",
+   "link_type": "Report",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Delivery Note",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Delivery Note Trends",
+   "link_to": "Delivery Note Trends",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Purchase Receipt",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Purchase Receipt Trends",
+   "link_to": "Purchase Receipt Trends",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Sales Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Sales Order Analysis",
+   "link_to": "Sales Order Analysis",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Purchase Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Purchase Order Analysis",
+   "link_to": "Purchase Order Analysis",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Bin",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Item Shortage Report",
+   "link_to": "Item Shortage Report",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Batch",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Batch-Wise Balance History",
+   "link_to": "Batch-Wise Balance History",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Other Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Material Request",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Requested Items To Be Transferred",
+   "link_to": "Requested Items To Be Transferred",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Stock Ledger Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Batch Item Expiry Status",
+   "link_to": "Batch Item Expiry Status",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Price List",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Item Prices",
+   "link_to": "Item Prices",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Itemwise Recommended Reorder Level",
+   "link_to": "Itemwise Recommended Reorder Level",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Item",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Item Variant Details",
+   "link_to": "Item Variant Details",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Purchase Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Subcontracted Raw Materials To Be Transferred",
+   "link_to": "Subcontracted Raw Materials To Be Transferred",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Purchase Order",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Subcontracted Item To Be Received",
+   "link_to": "Subcontracted Item To Be Received",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "Stock Ledger Entry",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "Stock and Account Value Comparison",
+   "link_to": "Stock and Account Value Comparison",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:36.282890",
+ "modified_by": "Administrator",
+ "module": "Stock",
+ "name": "Stock",
+ "onboarding": "Stock",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "color": "Green",
+   "format": "{}  Available",
+   "label": "Item",
+   "link_to": "Item",
+   "stats_filter": "{\n    \"disabled\" : 0\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Yellow",
+   "format": "{} Pending",
+   "label": "Material Request",
+   "link_to": "Material Request",
+   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\": \"Pending\"\n}",
+   "type": "DocType"
+  },
+  {
+   "label": "Stock Entry",
+   "link_to": "Stock Entry",
+   "type": "DocType"
+  },
+  {
+   "color": "Yellow",
+   "format": "{} To Bill",
+   "label": "Purchase Receipt",
+   "link_to": "Purchase Receipt",
+   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\": \"To Bill\"\n}",
+   "type": "DocType"
+  },
+  {
+   "color": "Yellow",
+   "format": "{} To Bill",
+   "label": "Delivery Note",
+   "link_to": "Delivery Note",
+   "stats_filter": "{\n    \"company\": [\"like\", '%' + frappe.defaults.get_global_default(\"company\") + '%'],\n    \"status\": \"To Bill\"\n}",
+   "type": "DocType"
+  },
+  {
+   "label": "Stock Ledger",
+   "link_to": "Stock Ledger",
+   "type": "Report"
+  },
+  {
+   "label": "Stock Balance",
+   "link_to": "Stock Balance",
+   "type": "Report"
+  },
+  {
+   "label": "Dashboard",
+   "link_to": "Stock",
+   "type": "Dashboard"
+  }
+ ],
+ "shortcuts_label": "Quick Access"
+}
\ No newline at end of file
diff --git a/erpnext/support/desk_page/support/support.json b/erpnext/support/desk_page/support/support.json
deleted file mode 100644
index dba2b14..0000000
--- a/erpnext/support/desk_page/support/support.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Issues",
-   "links": "[\n    {\n        \"description\": \"Support queries from customers.\",\n        \"label\": \"Issue\",\n        \"name\": \"Issue\",\n        \"onboard\": 1,\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Issue Type.\",\n        \"label\": \"Issue Type\",\n        \"name\": \"Issue Type\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Issue Priority.\",\n        \"label\": \"Issue Priority\",\n        \"name\": \"Issue Priority\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Maintenance",
-   "links": "[\n    {\n        \"label\": \"Maintenance Schedule\",\n        \"name\": \"Maintenance Schedule\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"label\": \"Maintenance Visit\",\n        \"name\": \"Maintenance Visit\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Service Level Agreement",
-   "links": "[\n    {\n        \"description\": \"Service Level Agreement.\",\n        \"label\": \"Service Level Agreement\",\n        \"name\": \"Service Level Agreement\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Warranty",
-   "links": "[\n    {\n        \"description\": \"Warranty Claim against Serial No.\",\n        \"label\": \"Warranty Claim\",\n        \"name\": \"Warranty Claim\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Single unit of an Item.\",\n        \"label\": \"Serial No\",\n        \"name\": \"Serial No\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Settings",
-   "links": "[\n    {\n        \"label\": \"Support Settings\",\n        \"name\": \"Support Settings\",\n        \"type\": \"doctype\"\n    }\n]"
-  },
-  {
-   "hidden": 0,
-   "label": "Reports",
-   "links": "[\n    {\n        \"dependencies\": [\n            \"Issue\"\n        ],\n        \"doctype\": \"Issue\",\n        \"is_query_report\": true,\n        \"label\": \"First Response Time for Issues\",\n        \"name\": \"First Response Time for Issues\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Issue\"\n        ],\n        \"doctype\": \"Issue\",\n        \"is_query_report\": true,\n        \"label\": \"Issue Analytics\",\n        \"name\": \"Issue Analytics\",\n        \"type\": \"report\"\n    },\n    {\n        \"dependencies\": [\n            \"Issue\"\n        ],\n        \"doctype\": \"Issue\",\n        \"is_query_report\": true,\n        \"label\": \"Issue Summary\",\n        \"name\": \"Issue Summary\",\n        \"type\": \"report\"\n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [],
- "creation": "2020-03-02 15:48:23.224699",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Support",
- "modified": "2021-01-13 20:15:03.064256",
- "modified_by": "Administrator",
- "module": "Support",
- "name": "Support",
- "owner": "Administrator",
- "pin_to_bottom": 0,
- "pin_to_top": 0,
- "shortcuts": [
-  {
-   "color": "#ffc4c4",
-   "format": "{} Assigned",
-   "label": "Issue",
-   "link_to": "Issue",
-   "stats_filter": "{\n    \"_assign\": [\"like\", '%' + frappe.session.user + '%'],\n    \"status\": \"Open\"\n}",
-   "type": "DocType"
-  },
-  {
-   "label": "Maintenance Visit",
-   "link_to": "Maintenance Visit",
-   "type": "DocType"
-  },
-  {
-   "label": "Service Level Agreement",
-   "link_to": "Service Level Agreement",
-   "type": "DocType"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/support/doctype/issue/issue.js b/erpnext/support/doctype/issue/issue.js
index 086755b..935b6e8 100644
--- a/erpnext/support/doctype/issue/issue.js
+++ b/erpnext/support/doctype/issue/issue.js
@@ -154,55 +154,71 @@
 
 
 	timeline_refresh: function(frm) {
-		// create button for "Help Article"
-		if (frappe.model.can_create("Help Article")) {
-			// Removing Help Article button if exists to avoid multiple occurance
-			frm.timeline.wrapper.find('.comment-header .asset-details .btn-add-to-kb').remove();
-			$('<button class="btn btn-xs btn-link btn-add-to-kb text-muted hidden-xs pull-right">'+
-				__('Help Article') + '</button>')
-				.appendTo(frm.timeline.wrapper.find('.comment-header .asset-details:not([data-communication-type="Comment"])'))
-				.on("click", function() {
-					var content = $(this).parents(".timeline-item:first").find(".timeline-item-content").html();
-					var doc = frappe.model.get_new_doc("Help Article");
-					doc.title = frm.doc.subject;
-					doc.content = content;
-					frappe.set_route("Form", "Help Article", doc.name);
-				});
-		}
-
 		if (!frm.timeline.wrapper.find(".btn-split-issue").length) {
-			let split_issue = __("Split Issue")
-			$(`<button class="btn btn-xs btn-link btn-add-to-kb text-muted hidden-xs btn-split-issue pull-right" style="display:inline-block; margin-right: 15px">
-				${split_issue}
-			</button>`)
-				.appendTo(frm.timeline.wrapper.find('.comment-header .asset-details:not([data-communication-type="Comment"])'))
-			if (!frm.timeline.wrapper.data("split-issue-event-attached")){
-				frm.timeline.wrapper.on("click", ".btn-split-issue", (e) => {
+			let split_issue_btn = $(`
+				<a class="action-btn btn-split-issue" title="${__("Split Issue")}">
+					${frappe.utils.icon('branch', 'sm')}
+				</a>
+			`);
+
+			let communication_box = frm.timeline.wrapper.find('.timeline-item[data-doctype="Communication"]');
+			communication_box.find('.actions').prepend(split_issue_btn);
+
+			if (!frm.timeline.wrapper.data("split-issue-event-attached")) {
+				frm.timeline.wrapper.on('click', '.btn-split-issue', (e) => {
 					var dialog = new frappe.ui.Dialog({
 						title: __("Split Issue"),
 						fields: [
-							{fieldname: "subject", fieldtype: "Data", reqd: 1, label: __("Subject"), description: __("All communications including and above this shall be moved into the new Issue")}
+							{
+								fieldname: "subject",
+								fieldtype: "Data",
+								reqd: 1,
+								label: __("Subject"),
+								description: __("All communications including and above this shall be moved into the new Issue")
+							}
 						],
 						primary_action_label: __("Split"),
-						primary_action: function() {
+						primary_action: () => {
 							frm.call("split_issue", {
 								subject: dialog.fields_dict.subject.value,
 								communication_id: e.currentTarget.closest(".timeline-item").getAttribute("data-name")
 							}, (r) => {
-								let url = window.location.href
-								let arr = url.split("/");
-								let result = arr[0] + "//" + arr[2]
-								frappe.msgprint(`New issue created: <a href="${result}/desk#Form/Issue/${r.message}">${r.message}</a>`)
+								frappe.msgprint(`New issue created: <a href="/app/issue/${r.message}">${r.message}</a>`);
 								frm.reload_doc();
 								dialog.hide();
 							});
 						}
 					});
-					dialog.show()
-				})
-				frm.timeline.wrapper.data("split-issue-event-attached", true)
+					dialog.show();
+				});
+				frm.timeline.wrapper.data("split-issue-event-attached", true);
 			}
 		}
+
+		// create button for "Help Article"
+		if (frappe.model.can_create("Help Article")) {
+			// Removing Help Article button if exists to avoid multiple occurrence
+			frm.timeline.wrapper.find('.action-btn .btn-add-to-kb').remove();
+
+			let help_article = $(`
+				<a class="action-btn btn-add-to-kb" title="${__('Help Article')}">
+					${frappe.utils.icon('solid-info', 'sm')}
+				</a>
+			`);
+
+			let communication_box = frm.timeline.wrapper.find('.timeline-item[data-doctype="Communication"]');
+			communication_box.find('.actions').prepend(help_article);
+			if (!frm.timeline.wrapper.data("help-article-event-attached")) {
+				frm.timeline.wrapper.on('click', '.btn-add-to-kb', function () {
+					const content = $(this).parents('.timeline-item[data-doctype="Communication"]:first').find(".content").html();
+					const doc = frappe.model.get_new_doc("Help Article");
+					doc.title = frm.doc.subject;
+					doc.content = content;
+					frappe.set_route("Form", "Help Article", doc.name);
+				});
+			}
+			frm.timeline.wrapper.data("help-article-event-attached", true);
+		}
 	},
 });
 
diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py
index 02d10a4..1dcb2cd 100644
--- a/erpnext/support/doctype/issue/issue.py
+++ b/erpnext/support/doctype/issue/issue.py
@@ -207,7 +207,7 @@
 			"comment_type": "Info",
 			"reference_doctype": "Issue",
 			"reference_name": replicated_issue.name,
-			"content": " - Split the Issue from <a href='#Form/Issue/{0}'>{1}</a>".format(self.name, frappe.bold(self.name)),
+			"content": " - Split the Issue from <a href='/app/Form/Issue/{0}'>{1}</a>".format(self.name, frappe.bold(self.name)),
 		}).insert(ignore_permissions=True)
 
 		return replicated_issue.name
diff --git a/erpnext/support/doctype/issue/issue_list.js b/erpnext/support/doctype/issue/issue_list.js
index 513a8dc..e04498e 100644
--- a/erpnext/support/doctype/issue/issue_list.js
+++ b/erpnext/support/doctype/issue/issue_list.js
@@ -28,7 +28,7 @@
 		} else if (doc.status === 'Closed') {
 			return [__(doc.status), "green", "status,=," + doc.status];
 		} else {
-			return [__(doc.status), "darkgrey", "status,=," + doc.status];
+			return [__(doc.status), "gray", "status,=," + doc.status];
 		}
 	}
 }
diff --git a/erpnext/support/workspace/support/support.json b/erpnext/support/workspace/support/support.json
new file mode 100644
index 0000000..01a8676
--- /dev/null
+++ b/erpnext/support/workspace/support/support.json
@@ -0,0 +1,186 @@
+{
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-03-02 15:48:23.224699",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "icon": "support",
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Support",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Issues",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Issue",
+   "link_to": "Issue",
+   "link_type": "DocType",
+   "onboard": 1,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Issue Type",
+   "link_to": "Issue Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Issue Priority",
+   "link_to": "Issue Priority",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Maintenance",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Maintenance Schedule",
+   "link_to": "Maintenance Schedule",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Maintenance Visit",
+   "link_to": "Maintenance Visit",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Service Level Agreement",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Service Level Agreement",
+   "link_to": "Service Level Agreement",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Warranty",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Warranty Claim",
+   "link_to": "Warranty Claim",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Serial No",
+   "link_to": "Serial No",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Settings",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Support Settings",
+   "link_to": "Support Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Reports",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "Issue",
+   "hidden": 0,
+   "is_query_report": 1,
+   "label": "First Response Time for Issues",
+   "link_to": "First Response Time for Issues",
+   "link_type": "Report",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:37.073482",
+ "modified_by": "Administrator",
+ "module": "Support",
+ "name": "Support",
+ "owner": "Administrator",
+ "pin_to_bottom": 0,
+ "pin_to_top": 0,
+ "shortcuts": [
+  {
+   "color": "Yellow",
+   "format": "{} Assigned",
+   "label": "Issue",
+   "link_to": "Issue",
+   "stats_filter": "{\n    \"_assign\": [\"like\", '%' + frappe.session.user + '%'],\n    \"status\": \"Open\"\n}",
+   "type": "DocType"
+  },
+  {
+   "label": "Maintenance Visit",
+   "link_to": "Maintenance Visit",
+   "type": "DocType"
+  },
+  {
+   "label": "Service Level Agreement",
+   "link_to": "Service Level Agreement",
+   "type": "DocType"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/templates/emails/birthday_reminder.html b/erpnext/templates/emails/birthday_reminder.html
new file mode 100644
index 0000000..e4c91c7
--- /dev/null
+++ b/erpnext/templates/emails/birthday_reminder.html
@@ -0,0 +1,16 @@
+<div class="gray-container text-center">
+	<div>
+		{% for person in birthday_persons %}
+		<span class="avatar avatar-small " title="Mitali">
+			<span class="avatar-frame standard-image" style="{% if person.image %}background-image: url({{person.image}}); {% endif %}  margin-right: 5px;"
+				title={{person.name}}>
+				{% if not person.image %} {{ person.name[:1] }} {% endif %}
+			</span>
+		</span>
+		{% endfor %}
+	</div>
+	<div style="margin-top: 15px">
+		<span>{{ reminder_text }}</span>
+		<p class="text-muted">{{ message }}</p>
+	</div>
+</div>
\ No newline at end of file
diff --git a/erpnext/templates/includes/address_row.html b/erpnext/templates/includes/address_row.html
index dadd2df..6d4dd54 100644
--- a/erpnext/templates/includes/address_row.html
+++ b/erpnext/templates/includes/address_row.html
@@ -2,7 +2,7 @@
     <a href="/addresses?name={{ doc.name | urlencode }}" class="no-underline text-reset">
 	    <div class="row">
 	        <div class="col-3">
-	                 <span class="indicator {{ "red" if doc.address_type=="Office" else "green" if doc.address_type=="Billing" else "blue" if doc.address_type=="Shipping" else "darkgrey" }}">{{ doc.address_title }}</span>
+	                 <span class="indicator {{ "red" if doc.address_type=="Office" else "green" if doc.address_type=="Billing" else "blue" if doc.address_type=="Shipping" else "gray" }}">{{ doc.address_title }}</span>
 			</div>
 			<div class="col-2"> {{ _(doc.address_type) }} </div>
 			<div class="col-2"> {{ doc.city }} </div>
diff --git a/erpnext/templates/includes/footer/footer_extension.html b/erpnext/templates/includes/footer/footer_extension.html
index 6171b61..c7f0d06 100644
--- a/erpnext/templates/includes/footer/footer_extension.html
+++ b/erpnext/templates/includes/footer/footer_extension.html
@@ -1,12 +1,12 @@
 {% if not hide_footer_signup %}
 <div class="input-group">
-	<input type="text" class="form-control border-secondary"
+	<input type="text" class="form-control"
 		id="footer-subscribe-email"
 		placeholder="{{ _('Your email address...') }}"
 		aria-label="{{ _('Your email address...') }}"
 		aria-describedby="footer-subscribe-button">
 	<div class="input-group-append">
-		<button class="btn btn-sm btn-outline-secondary"
+		<button class="btn btn-sm btn-default"
 			type="button" id="footer-subscribe-button">{{ _("Get Updates") }}</button>
 	</div>
 </div>
diff --git a/erpnext/templates/includes/issue_row.html b/erpnext/templates/includes/issue_row.html
index ff868fa..d909c5f 100644
--- a/erpnext/templates/includes/issue_row.html
+++ b/erpnext/templates/includes/issue_row.html
@@ -2,7 +2,7 @@
 	<a href="/issues?name={{ doc.name }}" class="no-underline">
 		<div class="row py-4 border-bottom">
 			<div class="col-3 d-flex align-items-center">
-				{% set indicator = 'red' if doc.status == 'Open' else 'darkgrey' %}
+				{% set indicator = 'red' if doc.status == 'Open' else 'gray' %}
 				{% set indicator = 'green' if doc.status == 'Closed' else indicator %}
 				<span class="d-inline-flex indicator {{ indicator }}"></span>
 					{{ doc.name }}
@@ -10,7 +10,7 @@
 			<div class="col-5 text-muted">
 				{{ doc.subject }}</div>
 			<div class="col-2 d-flex align-items-center text-muted">
-				{% set indicator = 'red' if doc.status == 'Open' else 'darkgrey' %}
+				{% set indicator = 'red' if doc.status == 'Open' else 'gray' %}
 				{% set indicator = 'green' if doc.status == 'Closed' else indicator %}
 				{% set indicator = 'orange' if doc.status == 'Open' and doc.priority == 'Medium' else indicator %}
 				{% set indicator = 'yellow' if doc.status == 'Open' and doc.priority == 'Low' else indicator %}
diff --git a/erpnext/templates/includes/projects/project_row.html b/erpnext/templates/includes/projects/project_row.html
index 73c83ef..4c8c40d 100644
--- a/erpnext/templates/includes/projects/project_row.html
+++ b/erpnext/templates/includes/projects/project_row.html
@@ -15,7 +15,7 @@
 					  </div>
 					</div>
 				{% else %}
-					<span class="indicator {{ "red" if doc.status=="Open" else "darkgrey"  }}">
+					<span class="indicator {{ "red" if doc.status=="Open" else "gray"  }}">
 						{{ doc.status }}</span>
 				{% endif %}
 			</div>
diff --git a/erpnext/templates/includes/projects/project_tasks.html b/erpnext/templates/includes/projects/project_tasks.html
index 94c692c..50b9f4b 100644
--- a/erpnext/templates/includes/projects/project_tasks.html
+++ b/erpnext/templates/includes/projects/project_tasks.html
@@ -3,7 +3,7 @@
 		<a class="no-decoration task-link {{ task.css_seen }}" href="/tasks?name={{ task.name }}">
 		<div class='row project-item'>
 			<div class='col-xs-9'>
-				<span class="indicator {{ "red" if task.status=="Open" else "green" if task.status=="Closed" else "darkgrey" }}" title="{{ task.status }}"  > {{ task.subject }}</span> 
+				<span class="indicator {{ "red" if task.status=="Open" else "green" if task.status=="Closed" else "gray" }}" title="{{ task.status }}"  > {{ task.subject }}</span>
 	 				<div class="small text-muted item-timestamp"
 	 					title="{{ frappe.utils.pretty_date(task.modified) }}">
 						{{ _("modified") }} {{ frappe.utils.pretty_date(task.modified) }}
@@ -16,9 +16,9 @@
 						</span>
 					{% else %}
 						<span class="avatar avatar-small standard-image" title="Assigned to {{ task.todo.owner }}">
-							
+
 						</span>
-					{% endif %}		
+					{% endif %}
 				{% endif %}	 </div>
 			<div class='col-xs-2'>
 				<span class="pull-right list-comment-count small {{ "text-extra-muted" if task.comment_count==0 else "text-muted" }}">
diff --git a/erpnext/templates/includes/projects/project_timesheets.html b/erpnext/templates/includes/projects/project_timesheets.html
index fb3806c..05a07c1 100644
--- a/erpnext/templates/includes/projects/project_timesheets.html
+++ b/erpnext/templates/includes/projects/project_timesheets.html
@@ -3,19 +3,19 @@
 	<a class="no-decoration timesheet-link {{ timesheet.css_seen }}" href="/timesheet/{{ timesheet.info.name}}">
 		<div class='row project-item'>
 			<div class='col-xs-10'>
-				<span class="indicator {{ "blue" if timesheet.info.status=="Submitted" else "red" if timesheet.info.status=="Draft" else "darkgrey" }}" title="{{ timesheet.info.status }}"  > {{ timesheet.info.name }} </span> 
+				<span class="indicator {{ "blue" if timesheet.info.status=="Submitted" else "red" if timesheet.info.status=="Draft" else "gray" }}" title="{{ timesheet.info.status }}"  > {{ timesheet.info.name }} </span>
 				<div class="small text-muted item-timestamp">
 				{{ _("From") }} {{ frappe.format_date(timesheet.from_time) }} {{ _("to") }} {{ frappe.format_date(timesheet.to_time) }}
 			</div>
 			</div>
 				<div class='col-xs-1' style="margin-right:-30px;">
 				<span class="avatar avatar-small" title="{{ timesheet.info.modified_by }}"> <img src="{{ timesheet.info.user_image }}" style="display:flex;"></span>
-			</div> 
+			</div>
 			<div class='col-xs-1'>
 				<span class="pull-right list-comment-count small {{ "text-extra-muted" if timesheet.comment_count==0 else "text-muted" }}">
 				<i class="octicon octicon-comment-discussion"></i>
 				{{ timesheet.info.comment_count }}
-				</span> 
+				</span>
 			</div>
 		</div>
 	</a>
diff --git a/erpnext/templates/includes/timesheet/timesheet_row.html b/erpnext/templates/includes/timesheet/timesheet_row.html
index 4852f59..0f9cc77 100644
--- a/erpnext/templates/includes/timesheet/timesheet_row.html
+++ b/erpnext/templates/includes/timesheet/timesheet_row.html
@@ -1,7 +1,7 @@
 <div class="web-list-item transaction-list-item">
 	<div class="row">
 		<div class="col-xs-3">
-			<span class='indicator {{ "red" if doc.status=="Cancelled" else "green" if doc.status=="Billed" else "blue" if doc.status=="Submitted" else "darkgrey" }} small'>
+			<span class='indicator {{ "red" if doc.status=="Cancelled" else "green" if doc.status=="Billed" else "blue" if doc.status=="Submitted" else "gray" }} small'>
 				{{ doc.name }}
 			</span>
 		</div>
diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html
index fd4835e..930d0c2 100644
--- a/erpnext/templates/includes/transaction_row.html
+++ b/erpnext/templates/includes/transaction_row.html
@@ -1,7 +1,7 @@
 <div class="web-list-item transaction-list-item">
 	<div class="row">
 		<div class="col-sm-4">
-			<span class="indicator small {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "darkgrey") }}">
+			<span class="indicator small {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "gray") }}">
 			{{ doc.name }}</span>
 			<div class="small text-muted transaction-time"
 				title="{{ frappe.utils.format_datetime(doc.modified, "medium") }}">
diff --git a/erpnext/templates/pages/material_request_info.html b/erpnext/templates/pages/material_request_info.html
index c7a7802..0c2772e 100644
--- a/erpnext/templates/pages/material_request_info.html
+++ b/erpnext/templates/pages/material_request_info.html
@@ -20,7 +20,7 @@
 <div class="row transaction-subheading">
 	<div class="col-xs-6">
 
-		<span class="indicator {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "darkgrey") }}">
+		<span class="indicator {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "gray") }}">
 			{{ _(doc.get('indicator_title')) or _(doc.status) or _("Submitted") }}
 		</span>
 	</div>
diff --git a/erpnext/templates/pages/rfq.html b/erpnext/templates/pages/rfq.html
index 5b27a94..6e2edb6 100644
--- a/erpnext/templates/pages/rfq.html
+++ b/erpnext/templates/pages/rfq.html
@@ -77,13 +77,13 @@
 							<div class="web-list-item transaction-list-item quotations" idx="{{d.name}}">
 								<div class="row">
 									<div class="col-sm-6">
-										<span class="indicator darkgrey">{{d.name}}</span>
+										<span class="indicator gray">{{d.name}}</span>
 									</div>
 									<div class="col-sm-3">
-										<span class="small darkgrey">{{d.status}}</span>
+										<span class="small gray">{{d.status}}</span>
 									</div>
 									<div class="col-sm-3">
-										<span class="small darkgrey">{{d.transaction_date}}</span>
+										<span class="small gray">{{d.transaction_date}}</span>
 									</div>
 								</div>
 								<a class="transaction-item-link" href="/quotations/{{d.name}}">Link</a>
diff --git a/erpnext/templates/print_formats/includes/item_table_description.html b/erpnext/templates/print_formats/includes/item_table_description.html
index 070cca5..7569e50 100644
--- a/erpnext/templates/print_formats/includes/item_table_description.html
+++ b/erpnext/templates/print_formats/includes/item_table_description.html
@@ -1,7 +1,7 @@
-{%- set compact = doc.flags.compact_item_print -%}
-{%- set compact_fields = doc.flags.compact_item_fields -%}
+{%- set compact = print_settings.compact_item_print -%}
+{%- set compact_fields = parent_doc.flags.compact_item_fields -%}
 {%- set display_columns = visible_columns|map(attribute="fieldname")| list -%}
-{%- set columns = doc.flags.format_columns(display_columns, compact_fields) -%}
+{%- set columns = parent_doc.flags.format_columns(display_columns, compact_fields) -%}
 
 {% if doc.in_format_data("image") and doc.get("image") and "image" in display_columns -%}
 <div class="pull-left" style="max-width: 40%; margin-right: 10px;">
@@ -11,11 +11,11 @@
 
 <div>
 	{% if doc.in_format_data("item_code") and "item_code" in display_columns -%}
-		<div class="primary">
-			{% if compact %}<strong>{% endif %}
-				{{ _(doc.item_code) }}
-			{% if compact %}</strong>{% endif %}
+		{% if compact %}
+		<div class="primary compact-item">
+			{{ _(doc.item_code) }}
 		</div>
+		{% endif %}
 	{%- endif %}
 
 	{%- if doc.in_format_data("item_name") and "item_name" in display_columns and
diff --git a/erpnext/templates/print_formats/includes/item_table_qty.html b/erpnext/templates/print_formats/includes/item_table_qty.html
index ecaaef4..8e68f1c 100644
--- a/erpnext/templates/print_formats/includes/item_table_qty.html
+++ b/erpnext/templates/print_formats/includes/item_table_qty.html
@@ -1,4 +1,4 @@
-{% set qty_first=frappe.db.get_single_value("Print Settings", "print_uom_after_quantity") %}
+{% set qty_first=print_settings.print_uom_after_quantity %}
 {% if qty_first %}
 	{{ doc.get_formatted("qty", doc) }}
 	{% if (doc.uom and not doc.is_print_hide("uom")) %} {{ _(doc.uom) }}
diff --git a/erpnext/templates/print_formats/includes/items.html b/erpnext/templates/print_formats/includes/items.html
new file mode 100644
index 0000000..55598e7
--- /dev/null
+++ b/erpnext/templates/print_formats/includes/items.html
@@ -0,0 +1,37 @@
+{%- if data -%}
+	{%- set visible_columns = get_visible_columns(doc.get(df.fieldname),
+		table_meta, df) -%}
+	<div {{ fieldmeta(df) }}>
+		<table class="table table-bordered table-condensed">
+			<thead>
+				<tr>
+					<th style="width: 40px" class="table-sr">{{ _("Sr") }}</th>
+					{% for tdf in visible_columns %}
+					{% if (data and not print_settings.compact_item_print) or tdf.fieldname in doc.flags.compact_item_fields %}
+						<th style="width: {{ get_width(tdf) }};" class="{{ get_align_class(tdf) }}" {{ fieldmeta(df) }}>
+							{{ _(tdf.label) }}</th>
+					{% endif %}
+					{% endfor %}
+				</tr>
+			</thead>
+			<tbody>
+				{% for d in data %}
+				<tr>
+					<td class="table-sr">{{ d.idx }}</td>
+					{% for tdf in visible_columns %}
+					{% if not print_settings.compact_item_print or tdf.fieldname in doc.flags.compact_item_fields %}
+						<td class="{{ get_align_class(tdf) }}" {{ fieldmeta(df) }}>
+						{% if doc.child_print_templates %}
+							{%- set child_templates = doc.child_print_templates.get(df.fieldname) %}
+							<div class="value">{{ print_value(tdf, d, doc, visible_columns, child_templates) }}</div></td>
+						{% else %}
+							<div class="value">{{ print_value(tdf, d, doc, visible_columns) }}</div></td>
+						{% endif %}
+					{% endif %}
+					{% endfor %}
+				</tr>
+				{% endfor %}
+			</tbody>
+		</table>
+	</div>
+{%- endif -%}
diff --git a/erpnext/templates/print_formats/includes/taxes.html b/erpnext/templates/print_formats/includes/taxes.html
index 304e845..1935542 100644
--- a/erpnext/templates/print_formats/includes/taxes.html
+++ b/erpnext/templates/print_formats/includes/taxes.html
@@ -17,7 +17,7 @@
 			{{ render_discount_amount(doc) }}
 		{%- endif -%}
 		{%- for charge in data -%}
-			{%- if (charge.tax_amount or doc.flags.print_taxes_with_zero_amount) and (not charge.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}
+			{%- if (charge.tax_amount or print_settings.print_taxes_with_zero_amount) and (not charge.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}
 			<div class="row">
 				<div class="col-xs-5 {%- if doc.align_labels_right %} text-right{%- endif -%}">
 					<label>{{ charge.get_formatted("description") }}</label>
diff --git a/erpnext/tests/test_search.py b/erpnext/tests/test_search.py
index 566495f..f60e5e4 100644
--- a/erpnext/tests/test_search.py
+++ b/erpnext/tests/test_search.py
@@ -6,13 +6,13 @@
 class TestSearch(unittest.TestCase):
 	# Search for the word "cond", part of the word "conduire" (Lead) in french.
 	def test_contact_search_in_foreign_language(self):
-		frappe.local.lang = 'fr'
-		output = filter_dynamic_link_doctypes("DocType", "cond", "name", 0, 20, {
-			'fieldtype': 'HTML',
-			'fieldname': 'contact_html'
-		})
-		result = [['found' for x in y if x=="Lead"] for y in output]
-		self.assertTrue(['found'] in result)
-
-	def tearDown(self):
-		frappe.local.lang = 'en'
\ No newline at end of file
+		try:
+			frappe.local.lang = 'fr'
+			output = filter_dynamic_link_doctypes("DocType", "cond", "name", 0, 20, {
+				'fieldtype': 'HTML',
+				'fieldname': 'contact_html'
+			})
+			result = [['found' for x in y if x=="Lead"] for y in output]
+			self.assertTrue(['found'] in result)
+		finally:
+			frappe.local.lang = 'en'
diff --git a/erpnext/utilities/bot.py b/erpnext/utilities/bot.py
index 0e5e95d..b2e74da 100644
--- a/erpnext/utilities/bot.py
+++ b/erpnext/utilities/bot.py
@@ -26,12 +26,12 @@
 					for warehouse in warehouses:
 						qty = frappe.db.get_value("Bin", {'item_code': item[0], 'warehouse': warehouse.name}, 'actual_qty')
 						if qty:
-							out.append(_('{0} units of [{1}](#Form/Item/{1}) found in [{2}](#Form/Warehouse/{2})').format(qty,
+							out.append(_('{0} units of [{1}](/app/Form/Item/{1}) found in [{2}](/app/Form/Warehouse/{2})').format(qty,
 								item[0], warehouse.name))
 							found = True
 
 					if not found:
-						out.append(_('[{0}](#Form/Item/{0}) is out of stock').format(item[0]))
+						out.append(_('[{0}](/app/Form/Item/{0}) is out of stock').format(item[0]))
 
 				return "\n\n".join(out)
 
diff --git a/erpnext/utilities/desk_page/utilities/utilities.json b/erpnext/utilities/desk_page/utilities/utilities.json
deleted file mode 100644
index 591eab5..0000000
--- a/erpnext/utilities/desk_page/utilities/utilities.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "cards": [
-  {
-   "hidden": 0,
-   "label": "Video",
-   "links": "[\n    {\n        \"description\": \"Video\",\n        \"label\": \"Video\",\n        \"name\": \"Video\",\n        \"type\": \"doctype\"\n    },\n    {\n        \"description\": \"Video settings\",\n        \"label\": \"Video Settings\",\n        \"name\": \"Video Settings\",\n        \"type\": \"doctype\"\n    }\n]"
-  }
- ],
- "category": "Modules",
- "charts": [],
- "creation": "2020-09-10 12:21:22.335307",
- "developer_mode_only": 0,
- "disable_user_customization": 0,
- "docstatus": 0,
- "doctype": "Desk Page",
- "extends_another_page": 0,
- "hide_custom": 0,
- "idx": 0,
- "is_standard": 1,
- "label": "Utilities",
- "modified": "2020-09-10 12:33:30.089853",
- "modified_by": "user@erpnext.com",
- "module": "Utilities",
- "name": "Utilities",
- "owner": "user@erpnext.com",
- "pin_to_bottom": 1,
- "pin_to_top": 0,
- "shortcuts": []
-}
\ No newline at end of file
diff --git a/erpnext/utilities/workspace/utilities/utilities.json b/erpnext/utilities/workspace/utilities/utilities.json
new file mode 100644
index 0000000..2f9250e
--- /dev/null
+++ b/erpnext/utilities/workspace/utilities/utilities.json
@@ -0,0 +1,51 @@
+{
+ "category": "Modules",
+ "charts": [],
+ "creation": "2020-09-10 12:21:22.335307",
+ "developer_mode_only": 0,
+ "disable_user_customization": 0,
+ "docstatus": 0,
+ "doctype": "Workspace",
+ "extends_another_page": 0,
+ "hide_custom": 0,
+ "idx": 0,
+ "is_standard": 1,
+ "label": "Utilities",
+ "links": [
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Video",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Video",
+   "link_to": "Video",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Video Settings",
+   "link_to": "Video Settings",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  }
+ ],
+ "modified": "2020-12-01 13:38:36.711884",
+ "modified_by": "Administrator",
+ "module": "Utilities",
+ "name": "Utilities",
+ "owner": "user@erpnext.com",
+ "pin_to_bottom": 1,
+ "pin_to_top": 0,
+ "shortcuts": []
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index 1b2dc9e..d12661b 100644
--- a/package.json
+++ b/package.json
@@ -15,6 +15,7 @@
     "snyk": "^1.290.1"
   },
   "dependencies": {
+    "onscan.js": "^1.5.2"
   },
   "scripts": {
     "snyk-protect": "snyk protect",
diff --git a/yarn.lock b/yarn.lock
index 97a0635..e5a2da1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1217,6 +1217,11 @@
   dependencies:
     mimic-fn "^1.0.0"
 
+onscan.js@^1.5.2:
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/onscan.js/-/onscan.js-1.5.2.tgz#14ed636e5f4c3f0a78bacbf9a505dad3140ee341"
+  integrity sha512-9oGYy2gXYRjvXO9GYqqVca0VuCTAmWhbmX3egBSBP13rXiMNb+dKPJzKFEeECGqPBpf0m40Zoo+GUQ7eCackdw==
+
 opn@^5.5.0:
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"