app_name = "jey_erp"
app_title = "Jey Erp"
app_publisher = "JeyERP"
app_description = "Azərbaycan localization for JeyERP"
app_email = "info@jeyerp.az"
app_license = "unlicense"
# required_apps = []

boot_session = "jey_erp.extend_party_types.add_company_to_party_account_types"

app_include_js = [
    "/assets/jey_erp/js/vat_calculator.js",
    "/assets/jey_erp/js/sales_invoice.js",
    "/assets/jey_erp/js/sales_invoice_vat.js",
    "/assets/jey_erp/js/sales_order_vat.js",
    "/assets/jey_erp/js/asset.js",
    "/assets/jey_erp/js/link_field_fix.js",
]

app_include_css = [
    "/assets/jey_erp/css/bank_reconciliation_tool.css",
    "/assets/jey_erp/css/account_tree_fix.css",
]

doctype_js = {
    "Payment Entry": "/public/js/payment_entry_mod.js",
    "Sales Invoice": "public/js/sales_invoice.js",
    "Employee": "public/js/employee.js",
    "Bank Reconciliation Tool": "public/js/bank_reconciliation_tool.js",
    "Company": "public/js/company_form.js",
    "Landed Cost Voucher": "public/js/landed_cost_voucher.js",
    "Item": "public/js/item_landed_cost.js",
}

doctype_list_js = {
    "Currency Exchange": "public/js/currency_exchange_list.js",
    "Salary Component": "public/js/salary_component_list.js",
    "Account": "public/js/account_list.js",
    "Leave Type": "public/js/leave_type_list.js",
    "Bank Transaction": "public/js/bank_transaction_list.js",
}

extend_doctype_class = {
    "Payment Request": "jey_erp.custom.payment_request.PaymentRequestMixin",
}

override_doctype_class = {
    "Bulk Salary Structure Assignment": "jey_erp.custom.bulk_salary_structure_assignment.CustomBulkSalaryStructureAssignment",
    "Payroll Entry": "jey_erp.custom.payroll_entry.CustomPayrollEntry",
}

doc_events = {
    "Employee Onboarding": {
        "on_update": "jey_erp.custom_employee_onboarding.on_update"
    },
    "Sales Invoice": {
        "validate": [
            "jey_erp.custom.sales_invoice.calculate_tax_free_amounts",
        ],
        "on_update": [
            "jey_erp.custom.sales_invoice.calculate_tax_free_amounts",
        ]
    },
    "Sales Order": {
        "validate": [
            "jey_erp.custom.sales_order_vat.set_vat_fields_permissions"
        ],
        "on_update": [
            "jey_erp.custom.sales_order_vat.set_vat_fields_permissions"
        ],
        "before_save": "jey_erp.custom.sales_order_vat.set_vat_fields_permissions"
    },
    "Company": {
        "on_update": "jey_erp.custom.create_asset_categories.create_asset_categories_on_company_update"
    },
    "Asset Category": {
        "validate": "jey_erp.custom.create_asset_categories.prevent_create_new_asset_categories",
        "on_trash": "jey_erp.custom.create_asset_categories.prevent_delete_system_asset_categories"
    },
    "Landed Cost Voucher": {
        "before_submit": [
            "jey_erp.custom.landed_cost_voucher.validate_taxes_rows",
            "jey_erp.custom.landed_cost_voucher.validate_total_services_against_invoices",
        ]
    }
}

# REMOVED: setup_wizard_complete hook
# Asset categories are now created automatically via Company.on_update event
# setup_wizard_complete = "jey_erp.setup.setup_wizard_handler.setup_wizard_complete_handler"

setup_wizard_complete = [
    "jey_erp.setup.setup_wizard_handler.create_default_salary_components",
    "jey_erp.setup.setup_wizard_handler.create_default_leave_types",
    "jey_erp.setup.setup_wizard_handler.create_default_company_accounts",
    "jey_erp.custom.rename_default_groups.rename_default_groups",
]

after_migrate = "jey_erp.hooks.after_migrate_combined"

def after_migrate_combined():

    from jey_erp.custom_fields import create_custom_fields
    create_custom_fields()
    from jey_erp.custom.show_item_tax_template_in_sales_invoice import show_item_tax_template_in_sales_invoice
    show_item_tax_template_in_sales_invoice()
    from jey_erp.custom.vat_calculations import patch_sales_documents
    patch_sales_documents()
    from jey_erp.custom.rename_default_groups import rename_default_groups
    rename_default_groups()
    # Rebuild NSM tree for Tax Free Indicator — fixtures loader doesn't
    # recompute lft/rgt, so tree view and descendant queries need this.
    import frappe
    from frappe.utils.nestedset import rebuild_tree
    if frappe.db.exists("DocType", "Tax Free Indicator"):
        try:
            rebuild_tree("Tax Free Indicator")
        except Exception as e:
            print(f"Tax Free Indicator NSM rebuild failed: {e}")
    # Order matters: Salary Component must sync first because Leave Type's
    # earning_component field references it.
    from jey_erp.setup.setup_wizard_handler import (
        sync_salary_components,
        sync_leave_types,
        sync_company_defaults,
    )
    try:
        sync_salary_components()
    except Exception as e:
        print(f"Salary Component sync failed: {e}")
    try:
        sync_leave_types()
    except Exception as e:
        print(f"Leave Type sync failed: {e}")
    try:
        sync_company_defaults()
    except Exception as e:
        print(f"Company defaults sync failed: {e}")
    # Link kb-mapped Bank Accounts to Kapital Bank Settings via the
    # Dynamic Link fields used by the universal Create & Reconcile resolver.
    try:
        from jey_erp.bank_integration.migrations import (
            link_kb_bank_accounts_to_bi,
            rename_bip_purposes,
            migrate_standard_field_codes_to_labels,
            copy_excel_preset_into_bank_integration,
            add_importer_link_to_invoicing_workspace,
        )
        link_kb_bank_accounts_to_bi()
        rename_bip_purposes()
        migrate_standard_field_codes_to_labels()
        copy_excel_preset_into_bank_integration()
        add_importer_link_to_invoicing_workspace()
    except Exception as e:
        print(f"BI: post-migrate sync failed: {e}")
    # REMOVED: Asset categories creation moved to setup_wizard_complete hook
    # from jey_erp.custom.create_asset_categories import create_asset_categories
    # create_asset_categories()

# REMOVED: Asset categories creation moved to setup_wizard_complete hook
# after_install = "jey_erp.custom.create_asset_categories.create_asset_categories"

fixtures = [
    {
        "doctype": "Print Format"
    },
]

# Includes in <head>
# ------------------

# include js, css files in header of desk.html
# app_include_css = "/assets/jey_erp/css/jey_erp.css"
# app_include_js = "/assets/jey_erp/js/jey_erp.js"

# include js, css files in header of web template
# web_include_css = "/assets/jey_erp/css/jey_erp.css"
# web_include_js = "/assets/jey_erp/js/jey_erp.js"

# include custom scss in every website theme (without file extension ".scss")
# website_theme_scss = "jey_erp/public/scss/website"

# include js, css files in header of web form
# webform_include_js = {"doctype": "public/js/doctype.js"}
# webform_include_css = {"doctype": "public/css/doctype.css"}

# include js in page
# page_js = {"page" : "public/js/file.js"}

# include js in doctype views
# doctype_js = {"doctype" : "public/js/doctype.js"}
# doctype_list_js = {"doctype" : "public/js/doctype_list.js"}
# doctype_tree_js = {"doctype" : "public/js/doctype_tree.js"}
# doctype_calendar_js = {"doctype" : "public/js/doctype_calendar.js"}

# Svg Icons
# ------------------
# include app icons in desk
# app_include_icons = "jey_erp/public/icons.svg"

# Home Pages
# ----------

# application home page (will override Website Settings)
# home_page = "login"

# website user home page (by Role)
# role_home_page = {
# 	"Role": "home_page"
# }

# Generators
# ----------

# automatically create page for each record of this doctype
# website_generators = ["Web Page"]

# Jinja
# ----------

# add methods and filters to jinja environment
# jinja = {
# 	"methods": "jey_erp.utils.jinja_methods",
# 	"filters": "jey_erp.utils.jinja_filters"
# }

# Installation
# ------------

# before_install = "jey_erp.install.before_install"
# after_install = "jey_erp.install.after_install"

# Uninstallation
# ------------

# before_uninstall = "jey_erp.uninstall.before_uninstall"
# after_uninstall = "jey_erp.uninstall.after_uninstall"

# Integration Setup
# ------------------
# To set up dependencies/integrations with other apps
# Name of the app being installed is passed as an argument

# before_app_install = "jey_erp.utils.before_app_install"
# after_app_install = "jey_erp.utils.after_app_install"

# Integration Cleanup
# -------------------
# To clean up dependencies/integrations with other apps
# Name of the app being uninstalled is passed as an argument

# before_app_uninstall = "jey_erp.utils.before_app_uninstall"
# after_app_uninstall = "jey_erp.utils.after_app_uninstall"

# Desk Notifications
# ------------------
# See frappe.core.notifications.get_notification_config

# notification_config = "jey_erp.notifications.get_notification_config"

# Permissions
# -----------
# Permissions evaluated in scripted ways

# permission_query_conditions = {
# 	"Event": "frappe.desk.doctype.event.event.get_permission_query_conditions",
# }
#
# has_permission = {
# 	"Event": "frappe.desk.doctype.event.event.has_permission",
# }

# DocType Class
# ---------------
# Override standard doctype classes

# override_doctype_class = {
# 	"ToDo": "custom_app.overrides.CustomToDo"
# }

# Document Events
# ---------------
# Hook on document methods and events

# doc_events = {
# 	"*": {
# 		"on_update": "method",
# 		"on_cancel": "method",
# 		"on_trash": "method"
# 	}
# }

# Scheduled Tasks
# ---------------

# scheduler_events = {
# 	"all": [
# 		"jey_erp.tasks.all"
# 	],
# 	"daily": [
# 		"jey_erp.tasks.daily"
# 	],
# 	"hourly": [
# 		"jey_erp.tasks.hourly"
# 	],
# 	"weekly": [
# 		"jey_erp.tasks.weekly"
# 	],
# 	"monthly": [
# 		"jey_erp.tasks.monthly"
# 	],
# }

# Testing
# -------

# before_tests = "jey_erp.install.before_tests"

# Overriding Methods
# ------------------------------
#
# override_whitelisted_methods = {
# 	"frappe.desk.doctype.event.event.get_events": "jey_erp.event.get_events"
# }
#
# each overriding function accepts a `data` argument;
# generated from the base implementation of the doctype dashboard,
# along with any modifications made in other Frappe apps
# override_doctype_dashboards = {
# 	"Task": "jey_erp.task.get_dashboard_data"
# }

# exempt linked doctypes from being automatically cancelled
#
# auto_cancel_exempted_doctypes = ["Auto Repeat"]

# Ignore links to specified DocTypes when deleting documents
# -----------------------------------------------------------

# ignore_links_on_delete = ["Communication", "ToDo"]

# Request Events
# ----------------
# before_request = ["jey_erp.utils.before_request"]
# after_request = ["jey_erp.utils.after_request"]

# Job Events
# ----------
# before_job = ["jey_erp.utils.before_job"]
# after_job = ["jey_erp.utils.after_job"]

# User Data Protection
# --------------------

# user_data_fields = [
# 	{
# 		"doctype": "{doctype_1}",
# 		"filter_by": "{filter_by}",
# 		"redact_fields": ["{field_1}", "{field_2}"],
# 		"partial": 1,
# 	},
# 	{
# 		"doctype": "{doctype_2}",
# 		"filter_by": "{filter_by}",
# 		"partial": 1,
# 	},
# 	{
# 		"doctype": "{doctype_3}",
# 		"strict": False,
# 	},
# 	{
# 		"doctype": "{doctype_4}"
# 	}
# ]

# Authentication and authorization
# --------------------------------

# auth_hooks = [
# 	"jey_erp.auth.validate"
# ]

# Automatically update python controller files with type annotations for this app.
# export_python_type_annotations = True

# default_log_clearing_doctypes = {
# 	"Logging DocType Name": 30  # days to retain logs
# }

