Create tax template based on country
This commit is contained in:
parent
d23835be84
commit
6fb7b162e8
@ -69,55 +69,6 @@ def setup_complete(args=None):
|
|||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def create_sales_tax(args):
|
|
||||||
country_wise_tax = get_country_wise_tax(args.get("country"))
|
|
||||||
if len(country_wise_tax)>0:
|
|
||||||
for sales_tax, tax_data in country_wise_tax.items():
|
|
||||||
account = create_account(tax_data, args)
|
|
||||||
if account:
|
|
||||||
create_sales_template(sales_tax, account, args)
|
|
||||||
|
|
||||||
def create_account(tax_data, args):
|
|
||||||
try:
|
|
||||||
account = frappe.get_doc({
|
|
||||||
"doctype": "Account",
|
|
||||||
"is_group": 0,
|
|
||||||
"root_type": "Liability",
|
|
||||||
"company": args.get("company_name"),
|
|
||||||
"parent_account": "Duties and Taxes - %s"%(args.get('company_abbr')),
|
|
||||||
"account_name": tax_data.get('account_name'),
|
|
||||||
"account_type": "Tax",
|
|
||||||
"tax_rate": tax_data.get('tax_rate'),
|
|
||||||
"currency": args.get('currency')
|
|
||||||
}).insert(ignore_permissions=True)
|
|
||||||
|
|
||||||
return account.name
|
|
||||||
except:
|
|
||||||
return None
|
|
||||||
|
|
||||||
def create_sales_template(sales_tax, account, args):
|
|
||||||
sales_tax_template = frappe.get_doc({
|
|
||||||
"doctype": "Sales Taxes and Charges Template",
|
|
||||||
"title": sales_tax,
|
|
||||||
"company": args.get("company_name"),
|
|
||||||
"taxes": [{
|
|
||||||
"doctype": "Sales Taxes and Charges",
|
|
||||||
"charge_type": "On Net Total",
|
|
||||||
"account_head": account,
|
|
||||||
"description": sales_tax.split("-")[0]
|
|
||||||
}]
|
|
||||||
}).insert(ignore_permissions=True)
|
|
||||||
|
|
||||||
sales_tax_template.set_missing_values()
|
|
||||||
sales_tax_template.save()
|
|
||||||
|
|
||||||
def get_country_wise_tax(country):
|
|
||||||
data = {}
|
|
||||||
with open (os.path.join(os.path.dirname(__file__), "data", "country_wise_tax.json")) as countrywise_tax:
|
|
||||||
data = json.load(countrywise_tax).get(country)
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
||||||
def create_fiscal_year_and_company(args):
|
def create_fiscal_year_and_company(args):
|
||||||
if (args.get('fy_start_date')):
|
if (args.get('fy_start_date')):
|
||||||
curr_fiscal_year = get_fy_details(args.get('fy_start_date'), args.get('fy_end_date'))
|
curr_fiscal_year = get_fy_details(args.get('fy_start_date'), args.get('fy_end_date'))
|
||||||
@ -294,20 +245,34 @@ def get_fy_details(fy_start_date, fy_end_date):
|
|||||||
fy = cstr(start_year) + '-' + cstr(start_year + 1)
|
fy = cstr(start_year) + '-' + cstr(start_year + 1)
|
||||||
return fy
|
return fy
|
||||||
|
|
||||||
def create_taxes(args):
|
def create_sales_tax(args):
|
||||||
|
country_wise_tax = get_country_wise_tax(args.get("country"))
|
||||||
|
if len(country_wise_tax)>0:
|
||||||
|
for sales_tax, tax_data in country_wise_tax.items():
|
||||||
|
make_tax_account_and_template(args.get("company_name").strip(),
|
||||||
|
tax_data.get('account_name'), tax_data.get('tax_rate'), sales_tax)
|
||||||
|
|
||||||
|
def get_country_wise_tax(country):
|
||||||
|
data = {}
|
||||||
|
with open (os.path.join(os.path.dirname(__file__), "data", "country_wise_tax.json")) as countrywise_tax:
|
||||||
|
data = json.load(countrywise_tax).get(country)
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
def create_taxes(args):
|
||||||
for i in xrange(1,6):
|
for i in xrange(1,6):
|
||||||
if args.get("tax_" + str(i)):
|
if args.get("tax_" + str(i)):
|
||||||
# replace % in case someone also enters the % symbol
|
# replace % in case someone also enters the % symbol
|
||||||
tax_rate = cstr(args.get("tax_rate_" + str(i)) or "").replace("%", "")
|
tax_rate = cstr(args.get("tax_rate_" + str(i)) or "").replace("%", "")
|
||||||
|
account_name = args.get("tax_" + str(i))
|
||||||
|
|
||||||
|
make_tax_account_and_template(args.get("company_name").strip(), account_name, tax_rate)
|
||||||
|
|
||||||
|
def make_tax_account_and_template(company, account_name, tax_rate, template_name=None):
|
||||||
try:
|
try:
|
||||||
tax_group = frappe.db.get_value("Account", {"company": args.get("company_name"),
|
account = make_tax_account(company, account_name, tax_rate)
|
||||||
"is_group": 1, "account_type": "Tax", "root_type": "Liability"})
|
if account:
|
||||||
if tax_group:
|
make_sales_and_purchase_tax_templates(account, template_name)
|
||||||
account = make_tax_head(args, i, tax_group, tax_rate)
|
|
||||||
make_sales_and_purchase_tax_templates(account)
|
|
||||||
|
|
||||||
except frappe.NameError, e:
|
except frappe.NameError, e:
|
||||||
if e.args[2][0]==1062:
|
if e.args[2][0]==1062:
|
||||||
pass
|
pass
|
||||||
@ -316,22 +281,38 @@ def create_taxes(args):
|
|||||||
except RootNotEditable, e:
|
except RootNotEditable, e:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def make_tax_head(args, i, tax_group, tax_rate):
|
def get_tax_account_group(company):
|
||||||
|
tax_group = frappe.db.get_value("Account",
|
||||||
|
{"account_name": "Duties and Taxes", "is_group": 1, "company": company})
|
||||||
|
if not tax_group:
|
||||||
|
tax_group = frappe.db.get_value("Account", {"is_group": 1, "root_type": "Liability",
|
||||||
|
"account_type": "Tax", "company": company})
|
||||||
|
|
||||||
|
return tax_group
|
||||||
|
|
||||||
|
def make_tax_account(company, account_name, tax_rate):
|
||||||
|
tax_group = get_tax_account_group(company)
|
||||||
|
if tax_group:
|
||||||
return frappe.get_doc({
|
return frappe.get_doc({
|
||||||
"doctype":"Account",
|
"doctype":"Account",
|
||||||
"company": args.get("company_name").strip(),
|
"company": company,
|
||||||
"parent_account": tax_group,
|
"parent_account": tax_group,
|
||||||
"account_name": args.get("tax_" + str(i)),
|
"account_name": account_name,
|
||||||
"is_group": 0,
|
"is_group": 0,
|
||||||
"report_type": "Balance Sheet",
|
"report_type": "Balance Sheet",
|
||||||
|
"root_type": "Liability",
|
||||||
"account_type": "Tax",
|
"account_type": "Tax",
|
||||||
"tax_rate": flt(tax_rate) if tax_rate else None
|
"tax_rate": flt(tax_rate) if tax_rate else None
|
||||||
}).insert(ignore_permissions=True)
|
}).insert(ignore_permissions=True)
|
||||||
|
|
||||||
def make_sales_and_purchase_tax_templates(account):
|
def make_sales_and_purchase_tax_templates(account, template_name=None):
|
||||||
doc = {
|
if not template_name:
|
||||||
|
template_name = account.name
|
||||||
|
|
||||||
|
sales_tax_template = {
|
||||||
"doctype": "Sales Taxes and Charges Template",
|
"doctype": "Sales Taxes and Charges Template",
|
||||||
"title": account.name,
|
"title": template_name,
|
||||||
|
"company": account.company,
|
||||||
"taxes": [{
|
"taxes": [{
|
||||||
"category": "Valuation and Total",
|
"category": "Valuation and Total",
|
||||||
"charge_type": "On Net Total",
|
"charge_type": "On Net Total",
|
||||||
@ -342,11 +323,12 @@ def make_sales_and_purchase_tax_templates(account):
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Sales
|
# Sales
|
||||||
frappe.get_doc(copy.deepcopy(doc)).insert()
|
frappe.get_doc(copy.deepcopy(sales_tax_template)).insert(ignore_permissions=True)
|
||||||
|
|
||||||
# Purchase
|
# Purchase
|
||||||
doc["doctype"] = "Purchase Taxes and Charges Template"
|
purchase_tax_template = copy.deepcopy(sales_tax_template)
|
||||||
frappe.get_doc(copy.deepcopy(doc)).insert()
|
purchase_tax_template["doctype"] = "Purchase Taxes and Charges Template"
|
||||||
|
frappe.get_doc(purchase_tax_template).insert(ignore_permissions=True)
|
||||||
|
|
||||||
def create_items(args):
|
def create_items(args):
|
||||||
for i in xrange(1,6):
|
for i in xrange(1,6):
|
||||||
|
Loading…
Reference in New Issue
Block a user