# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt


import frappe
from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
from frappe.permissions import add_permission, update_permission_property


def setup(company=None, patch=True):
	make_custom_fields()
	add_permissions()


def make_custom_fields(update=True):
	is_zero_rated = dict(
		fieldname="is_zero_rated",
		label="Is Zero Rated",
		fieldtype="Check",
		fetch_from="item_code.is_zero_rated",
		insert_after="description",
		print_hide=1,
	)
	custom_fields = {
		"Item": [
			dict(
				fieldname="is_zero_rated",
				label="Is Zero Rated",
				fieldtype="Check",
				insert_after="item_group",
				print_hide=1,
			)
		],
		"Sales Invoice Item": is_zero_rated,
		"Purchase Invoice Item": is_zero_rated,
	}

	create_custom_fields(custom_fields, update=update)


def add_permissions():
	"""Add Permissions for South Africa VAT Settings and South Africa VAT Account
	and VAT Audit Report"""
	for doctype in ("South Africa VAT Settings", "South Africa VAT Account"):
		add_permission(doctype, "All", 0)
		for role in ("Accounts Manager", "Accounts User", "System Manager"):
			add_permission(doctype, role, 0)
			update_permission_property(doctype, role, 0, "write", 1)
			update_permission_property(doctype, role, 0, "create", 1)

	if not frappe.db.get_value("Custom Role", dict(report="VAT Audit Report")):
		frappe.get_doc(
			doctype="Custom Role",
			report="VAT Audit Report",
			roles=[dict(role="Accounts User"), dict(role="Accounts Manager"), dict(role="Auditor")],
		).insert()
