63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2019, Frappe and Contributors
 | |
| # License: GNU General Public License v3. See license.txt
 | |
| 
 | |
| 
 | |
| import frappe
 | |
| from frappe.custom.doctype.custom_field.custom_field import create_custom_field
 | |
| 
 | |
| import erpnext
 | |
| 
 | |
| 
 | |
| def execute():
 | |
| 
 | |
| 	doctypes = [
 | |
| 		"salary_component",
 | |
| 		"Employee Tax Exemption Declaration",
 | |
| 		"Employee Tax Exemption Proof Submission",
 | |
| 		"Employee Tax Exemption Declaration Category",
 | |
| 		"Employee Tax Exemption Proof Submission Detail",
 | |
| 		"gratuity_rule",
 | |
| 		"gratuity_rule_slab",
 | |
| 		"gratuity_applicable_component",
 | |
| 	]
 | |
| 
 | |
| 	for doctype in doctypes:
 | |
| 		frappe.reload_doc("Payroll", "doctype", doctype, force=True)
 | |
| 
 | |
| 	reports = ["Professional Tax Deductions", "Provident Fund Deductions", "E-Invoice Summary"]
 | |
| 	for report in reports:
 | |
| 		frappe.reload_doc("Regional", "Report", report)
 | |
| 		frappe.reload_doc("Regional", "Report", report)
 | |
| 
 | |
| 	if erpnext.get_region() == "India":
 | |
| 		create_custom_field(
 | |
| 			"Salary Component",
 | |
| 			dict(
 | |
| 				fieldname="component_type",
 | |
| 				label="Component Type",
 | |
| 				fieldtype="Select",
 | |
| 				insert_after="description",
 | |
| 				options="\nProvident Fund\nAdditional Provident Fund\nProvident Fund Loan\nProfessional Tax",
 | |
| 				depends_on='eval:doc.type == "Deduction"',
 | |
| 			),
 | |
| 		)
 | |
| 
 | |
| 	if frappe.db.exists("Salary Component", "Income Tax"):
 | |
| 		frappe.db.set_value("Salary Component", "Income Tax", "is_income_tax_component", 1)
 | |
| 	if frappe.db.exists("Salary Component", "TDS"):
 | |
| 		frappe.db.set_value("Salary Component", "TDS", "is_income_tax_component", 1)
 | |
| 
 | |
| 	components = frappe.db.sql(
 | |
| 		"select name from `tabSalary Component` where variable_based_on_taxable_salary = 1", as_dict=1
 | |
| 	)
 | |
| 	for component in components:
 | |
| 		frappe.db.set_value("Salary Component", component.name, "is_income_tax_component", 1)
 | |
| 
 | |
| 	if erpnext.get_region() == "India":
 | |
| 		if frappe.db.exists("Salary Component", "Provident Fund"):
 | |
| 			frappe.db.set_value("Salary Component", "Provident Fund", "component_type", "Provident Fund")
 | |
| 		if frappe.db.exists("Salary Component", "Professional Tax"):
 | |
| 			frappe.db.set_value(
 | |
| 				"Salary Component", "Professional Tax", "component_type", "Professional Tax"
 | |
| 			)
 |