# 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" )