Merge pull request #16490 from nabinhait/gst_settings_perm

GST Settings permission and regional taxes creation
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 69ad5d1..1544f99 100755
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -581,4 +581,5 @@
 erpnext.patches.v11_0.set_missing_gst_hsn_code
 erpnext.patches.v11_0.rename_bom_wo_fields
 erpnext.patches.v11_0.rename_additional_salary_component_additional_salary
-erpnext.patches.v11_0.renamed_from_to_fields_in_project
\ No newline at end of file
+erpnext.patches.v11_0.renamed_from_to_fields_in_project
+erpnext.patches.v11_0.add_permissions_in_gst_settings
\ No newline at end of file
diff --git a/erpnext/patches/v11_0/add_permissions_in_gst_settings.py b/erpnext/patches/v11_0/add_permissions_in_gst_settings.py
new file mode 100644
index 0000000..e8fcf33
--- /dev/null
+++ b/erpnext/patches/v11_0/add_permissions_in_gst_settings.py
@@ -0,0 +1,12 @@
+import frappe
+from frappe.permissions import add_permission, update_permission_property
+
+def execute():
+	company = frappe.get_all('Company', filters = {'country': 'India'})
+	if not company:
+		return
+
+	for doctype in ('GST HSN Code', 'GST Settings'):
+		add_permission(doctype, 'Accounts Manager', 0)
+		update_permission_property(doctype, 'Accounts Manager', 0, 'write', 1)
+		update_permission_property(doctype, 'Accounts Manager', 0, 'create', 1)
\ No newline at end of file
diff --git a/erpnext/regional/doctype/gst_settings/gst_settings.js b/erpnext/regional/doctype/gst_settings/gst_settings.js
index ab2358f..808f9bc 100644
--- a/erpnext/regional/doctype/gst_settings/gst_settings.js
+++ b/erpnext/regional/doctype/gst_settings/gst_settings.js
@@ -21,5 +21,23 @@
 				</tr>
 			</tbody></table>`
 		);
+	},
+
+	setup: function(frm) {
+		$.each(["cgst_account", "sgst_account", "igst_account", "cess_account"], function(i, field) {
+			frm.events.filter_accounts(frm, field);
+		});
+	},
+
+	filter_accounts: function(frm, account_field) {
+		frm.set_query(account_field, "gst_accounts", function(doc, cdt, cdn) {
+			var row = locals[cdt][cdn];
+			return {
+				filters: {
+					company: row.company,
+					is_group: 0
+				}
+			};
+		});
 	}
 });
diff --git a/erpnext/regional/india/setup.py b/erpnext/regional/india/setup.py
index ec4da0d..a6d723a 100644
--- a/erpnext/regional/india/setup.py
+++ b/erpnext/regional/india/setup.py
@@ -5,7 +5,7 @@
 
 import frappe, os, json
 from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-from frappe.permissions import add_permission
+from frappe.permissions import add_permission, update_permission_property
 from erpnext.regional.india import states
 from erpnext.accounts.utils import get_fiscal_year
 from frappe.utils import today
@@ -79,6 +79,9 @@
 def add_permissions():
 	for doctype in ('GST HSN Code', 'GST Settings'):
 		add_permission(doctype, 'All', 0)
+		add_permission(doctype, 'Accounts Manager', 0)
+		update_permission_property(doctype, 'Accounts Manager', 0, 'write', 1)
+		update_permission_property(doctype, 'Accounts Manager', 0, 'create', 1)
 
 def add_print_formats():
 	frappe.reload_doc("regional", "print_format", "gst_tax_invoice")
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 09ff5a8..c49c264 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -94,6 +94,9 @@
 
 		if frappe.flags.country_change:
 			install_country_fixtures(self.name)
+			self.create_default_tax_template()
+
+
 
 		if not frappe.db.get_value("Department", {"company": self.name}):
 			from erpnext.setup.setup_wizard.operations.install_fixtures import install_post_company_fixtures
@@ -336,6 +339,9 @@
 		frappe.db.sql("delete from tabDepartment where company=%s", self.name)
 		frappe.db.sql("delete from `tabTax Withholding Account` where company=%s", self.name)
 
+		frappe.db.sql("delete from `tabSales Taxes and Charges Template` where company=%s", self.name)
+		frappe.db.sql("delete from `tabPurchase Taxes and Charges Template` where company=%s", self.name)
+
 @frappe.whitelist()
 def enqueue_replace_abbr(company, old, new):
 	kwargs = dict(company=company, old=old, new=new)
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index e062e28..b293f5d 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -6,7 +6,7 @@
 import frappe
 from frappe import _
 
-from .operations import install_fixtures as fixtures, company_setup, taxes_setup, sample_data
+from .operations import install_fixtures as fixtures, company_setup, sample_data
 
 def get_setup_stages(args=None):
 	if frappe.db.sql("select name from tabCompany"):
@@ -37,18 +37,13 @@
 				]
 			},
 			{
-				'status': _('Setting up company and taxes'),
+				'status': _('Setting up company'),
 				'fail_msg': _('Failed to setup company'),
 				'tasks': [
 					{
 						'fn': setup_company,
 						'args': args,
 						'fail_msg': _("Failed to setup company")
-					},
-					{
-						'fn': setup_taxes,
-						'args': args,
-						'fail_msg': _("Failed to setup taxes")
 					}
 				]
 			},
@@ -94,9 +89,6 @@
 def setup_company(args):
 	fixtures.install_company(args)
 
-def setup_taxes(args):
-	taxes_setup.create_sales_tax(args)
-
 def setup_post_company_fixtures(args):
 	fixtures.install_post_company_fixtures(args)
 
@@ -132,7 +124,6 @@
 def setup_complete(args=None):
 	stage_fixtures(args)
 	setup_company(args)
-	setup_taxes(args)
 	setup_post_company_fixtures(args)
 	setup_defaults(args)
 	stage_four(args)