import frappe
from frappe.custom.doctype.custom_field.custom_field import create_custom_field

def create_custom_fields():
    custom_fields = {
        "Asset": [
            # Asset Category checkboxes
            dict(
                fieldname='land',
                label='Land',
                fieldtype='Check',
                insert_after='asset_name',
                reqd=0,
                in_list_view=1,
                columns=3
            ),
            
            dict(
                fieldname='property',
                label='Property',
                fieldtype='Check',
                insert_after='land',
                reqd=0,
                in_list_view=1,
                columns=3
            ),
            
            # Main Asset Type field (initially hidden)
            dict(
                fieldname='custom_asset_type',
                label='Asset Type',
                fieldtype='Select',
                options='',  # Options will be set dynamically
                insert_after='property',
                reqd=0,
                hidden=1,
                columns=6
            ),
            
            # === AGRICULTURAL LAND SECTION ===
            dict(
                fieldname='agricultural_land_section',
                label='Agricultural Land Information',
                fieldtype='Section Break',
                insert_after='custom_asset_type',
                collapsible=1,
                depends_on='eval:doc.custom_asset_type == "Kənd təsərrüfatı təyinatlı torpaq sahələri"'
            ),
            
            dict(
                fieldname='agricultural_purpose',
                label='Purpose',
                fieldtype='Link',
                options='Agricultural Purpose Type',
                insert_after='agricultural_land_section',
                depends_on='eval:doc.custom_asset_type == "Kənd təsərrüfatı təyinatlı torpaq sahələri"',
                reqd=0
            ),
            
            dict(
                fieldname='cadastral_district_name',
                label='Name of the Cadastral Valuation District',
                fieldtype='Link',
                options='Cadastral Valuation District',
                insert_after='agricultural_purpose',
                depends_on='eval:doc.custom_asset_type == "Kənd təsərrüfatı təyinatlı torpaq sahələri"',
                reqd=0
            ),
            dict(
                fieldname='cadastral_district_code',
                label='Code of the Cadastral Valuation District',
                fieldtype='Int',
                insert_after='cadastral_district_name',
                depends_on='eval:doc.custom_asset_type == "Kənd təsərrüfatı təyinatlı torpaq sahələri"',
                reqd=0
            ),
            dict(
                fieldname='quality_groups',
                label='Quality Groups',
                fieldtype='Select',
                options='\nI\nII\nIII\nIV\nV',
                insert_after='cadastral_district_code',
                depends_on='eval:doc.custom_asset_type == "Kənd təsərrüfatı təyinatlı torpaq sahələri"',
                reqd=0
            ),
            
            dict(
                fieldname='agricultural_land_purpose',
                label='Purpose of the Land Plot',
                fieldtype='Select',
                options='\nƏkin, dinc və çoxillik əkmələr\nBiçənək, örüş və otlaqlar',
                insert_after='quality_groups',
                depends_on='eval:doc.custom_asset_type == "Kənd təsərrüfatı təyinatlı torpaq sahələri"',
                reqd=0
            ),
            
            # Column Break для размещения справа
            dict(
                fieldname='agricultural_column_break',
                fieldtype='Column Break',
                insert_after='agricultural_land_purpose',
                depends_on='eval:doc.custom_asset_type == "Kənd təsərrüfatı təyinatlı torpaq sahələri"'
            ),
            
            # Tax Article for Agricultural Land
            dict(
                fieldname='agricultural_tax_article',
                label='Tax Article',
                fieldtype='Link',
                options='Tax Article',
                insert_after='agricultural_column_break',
                depends_on='eval:doc.custom_asset_type == "Kənd təsərrüfatı təyinatlı torpaq sahələri"',
                reqd=0
            ),
            
            # === INDUSTRIAL/COMMERCIAL LAND SECTION ===
            dict(
                fieldname='industrial_land_section',
                label='Industrial/Commercial Land Information',
                fieldtype='Section Break',
                insert_after='agricultural_tax_article',
                collapsible=1,
                depends_on='eval:doc.custom_asset_type == "Sənaye, tikinti, nəqliyyat, rabitə, ticarət-məişət xidməti və digər xüsusi təyinatlı torpaq sahələri"'
            ),
            
            dict(
                fieldname='territorial_unit_name',
                label='Name of the Territorial Unit',
                fieldtype='Select',
                options='\nBakı\nGəncə, Sumqayıt, Xırdalan, Abşeron\nDigər şəhərlər (rayon tabeliyində olan şəhərlər istisna olmaqla), Rayon mərkəzləri\nRayon tabeçiliyində olan şəhərlərdə, qəsəbələrdə və kəndlərdə (Bakı və Sumqayıt şəhərlərinin qəsəbə və kəndləri istisna olmaqla)',
                insert_after='industrial_land_section',
                depends_on='eval:doc.custom_asset_type == "Sənaye, tikinti, nəqliyyat, rabitə, ticarət-məişət xidməti və digər xüsusi təyinatlı torpaq sahələri"',
                reqd=0
            ),
            
            dict(
                fieldname='territorial_unit_code',
                label='Code of the Territorial Unit',
                fieldtype='Data',
                insert_after='territorial_unit_name',
                depends_on='eval:doc.custom_asset_type == "Sənaye, tikinti, nəqliyyat, rabitə, ticarət-məişət xidməti və digər xüsusi təyinatlı torpaq sahələri"'
            ),
            
            dict(
                fieldname='industrial_land_purpose',
                label='Purpose of the Land Plot',
                fieldtype='Select',
                options='\nSənaye, tikinti, nəqliyyat, rabitə, ticarət-məişət xid-ti və dig. xüs. təy-tlı sahələr\nYaşayış fondları, həyətyanı və bağsahələri üzrə sahələr',
                insert_after='territorial_unit_code',
                depends_on='eval:doc.custom_asset_type == "Sənaye, tikinti, nəqliyyat, rabitə, ticarət-məişət xidməti və digər xüsusi təyinatlı torpaq sahələri"',
                reqd=0
            ),
            
            dict(
                fieldname='mining_note',
                label='Note on Mining',
                fieldtype='Check',
                insert_after='industrial_land_purpose',
                depends_on='eval:doc.custom_asset_type == "Sənaye, tikinti, nəqliyyat, rabitə, ticarət-məişət xidməti və digər xüsusi təyinatlı torpaq sahələri"'
            ),
            
            # Column Break для размещения справа
            dict(
                fieldname='industrial_column_break',
                fieldtype='Column Break',
                insert_after='mining_note',
                depends_on='eval:doc.custom_asset_type == "Sənaye, tikinti, nəqliyyat, rabitə, ticarət-məişət xidməti və digər xüsusi təyinatlı torpaq sahələri"'
            ),
            
            # Tax Article for Industrial Land
            dict(
                fieldname='industrial_tax_article',
                label='Tax Article',
                fieldtype='Link',
                options='Tax Article',
                insert_after='industrial_column_break',
                depends_on='eval:doc.custom_asset_type == "Sənaye, tikinti, nəqliyyat, rabitə, ticarət-məişət xidməti və digər xüsusi təyinatlı torpaq sahələri"',
                reqd=0
            ),
            
            # === TAX EXEMPT ASSETS SECTION ===
            dict(
                fieldname='tax_exempt_assets_section',
                label='Tax Exempt Assets Information',
                fieldtype='Section Break',
                insert_after='industrial_tax_article',
                collapsible=1,
                depends_on='eval:doc.custom_asset_type == "Vergidən azad olunan əsas vəsaitlər"'
            ),
            
            dict(
                fieldname='tax_exempt_tax_article',
                label='Tax Article',
                fieldtype='Link',
                options='Tax Article',
                insert_after='tax_exempt_assets_section',
                depends_on='eval:doc.custom_asset_type == "Vergidən azad olunan əsas vəsaitlər"',
                reqd=0
            ),
            
            dict(
                fieldname='tax_exempt_settlements',
                label='Settlements',
                fieldtype='Select',
                options='\nBakı\nGəncə, Sumqayıt şəhərləri və Abşeron rayonu\nDigər şəhərlər, rayon mərkəzləri\nRayon tabeliyində olan şəhərlərdə, qəsəbələrdə və kəndlərdə',
                insert_after='tax_exempt_tax_article',
                depends_on='eval:doc.custom_asset_type == "Vergidən azad olunan əsas vəsaitlər"',
                reqd=0
            ),
            
            # === TAXABLE ASSETS SECTION ===
            dict(
                fieldname='taxable_assets_section',
                label='Taxable Assets Information',
                fieldtype='Section Break',
                insert_after='tax_exempt_settlements',
                collapsible=1,
                depends_on='eval:doc.custom_asset_type == "Vergiyə cəlb olunan əsas vəsaitlər"'
            ),
            
            dict(
                fieldname='taxable_settlements',
                label='Settlements',
                fieldtype='Select',
                options='\nBakı\nGəncə, Sumqayıt şəhərləri və Abşeron rayonu\nDigər şəhərlər, rayon mərkəzləri\nRayon tabeliyində olan şəhərlərdə, qəsəbələrdə və kəndlərdə',
                insert_after='taxable_assets_section',
                depends_on='eval:doc.custom_asset_type == "Vergiyə cəlb olunan əsas vəsaitlər"',
                reqd=0
            ),
            
            dict(
                fieldname='taxable_asset_type',
                label='Taxable Asset Type',
                fieldtype='Select',
                options='\nBinalar, tikililər və qurğular\nÇoxmərtəbəli (çoxmənzilli) yaşayış binalar\nQeyri-yaşayış binaları (sahələri)\nƏmlak kompleksi kimi müəssisələr\nQurğular\nMənzillər\nFərdi yaşayış və bağ evləri\nMaşınlar və avadanlıqlar\nYüksək texnologiyalar məhsulu olan hesablama texnikası\nNəqliyyat vasitələri\nDigər əsas vəsaitlər',
                insert_after='taxable_settlements',
                depends_on='eval:doc.custom_asset_type == "Vergiyə cəlb olunan əsas vəsaitlər"',
                reqd=0
            ),
            
            # === COMMON SECTION (ALWAYS VISIBLE) ===
            dict(
                fieldname='common_land_section',
                label='Common Information',
                fieldtype='Section Break',
                insert_after='taxable_asset_type',
                collapsible=1
            ),
            
            dict(
                fieldname='tax_exempt_area',
                label='Tax-exempt Area',
                fieldtype='Data',
                insert_after='common_land_section',
                description='Enter the tax-exempt area value'
            ),
            dict(
                fieldname='area',
                label='Area',
                fieldtype='Float',
                insert_after='tax_exempt_area',
                description='For agricultural: hectares. For industrial: square meters.',
                precision=4
            )
        ],
        "Payment Entry": [
            dict(
                fieldname='custom_note',
                label='Note',
                fieldtype='Data',
                insert_after='status'
            )
        ],
        "Purchase Order": [
            dict(
                fieldname='is_taxes_doc',
                label='Is taxes document',
                fieldtype='Check',
                insert_after='is_subcontracted',
                hidden=1
            ),
            dict(
                fieldname='taxes_doc',
                label='taxes_doc',
                fieldtype='Link',
                options='E-Taxes Purchase',
                insert_after='is_taxes_doc',
                hidden=1
            )
        ],
        "Purchase Invoice": [
            dict(
                fieldname='is_taxes_doc',
                label='Is taxes document',
                fieldtype='Check',
                insert_after='is_paid',
                hidden=0
            )
        ],
        "Sales Order": [
            dict(
                fieldname='is_taxes_doc',
                label='Is taxes document',
                fieldtype='Check',
                insert_after='is_subcontracted',
                hidden=1
            ),
            dict(
                fieldname='taxes_doc',
                label='taxes_doc',
                fieldtype='Link',
                options='E-Taxes Sales',
                insert_after='is_taxes_doc',
                hidden=1
            )
        ],
        "Sales Order Item": [
            dict(
                fieldname='vat_18_percent_with_amount',
                label='VAT 18% with amount',
                fieldtype='Currency',
                insert_after='amount',
                in_list_view=1,
                read_only=1,
                columns=2,
                precision=2
            ),
            dict(
                fieldname='vat_amount',
                label='VAT Amount',
                fieldtype='Currency',
                insert_after='vat_18_percent_with_amount',
                in_list_view=1,
                columns=2,
                precision=2,
                read_only=1,
                description='Calculated as: VAT 18% with amount - Amount'
            ),
            dict(
                fieldname='vat_0_percent_with_amount', 
                label='VAT 0% with amount',
                fieldtype='Currency',
                insert_after='vat_amount',
                in_list_view=1,
                read_only=1,
                columns=2,
                precision=2
            ),
            dict(
                fieldname='amount_without_vat',
                label='Amount without VAT',
                fieldtype='Currency',
                insert_after='vat_0_percent_with_amount',
                in_list_view=1,
                read_only=1,
                columns=2,
                precision=2
            ),
            dict(
                fieldname='vat_free_amount',
                label='VAT free amount',
                fieldtype='Currency', 
                insert_after='amount_without_vat',
                in_list_view=1,
                read_only=1,
                columns=2,
                precision=2
            ),
            dict(
                fieldname='tax_article',
                label='Tax Article',
                fieldtype='Link',
                options='Tax Article',
                insert_after='vat_free_amount',
                in_list_view=1,
                columns=2,
                description='Tax Article field for VAT purposes'
            )
        ],
        "Sales Invoice": [
            dict(
                fieldname='is_taxes_doc',
                label='Is taxes document',
                fieldtype='Check',
                insert_after='is_paid',
                hidden=0
            ),
            # Hidden field to fetch company main activity
            dict(
                fieldname='company_main_activity',
                label='Company Main Activity',
                fieldtype='Data',
                insert_after='is_taxes_doc',
                hidden=1,
                fetch_from='company.main_activity',
                read_only=1
            ),
            # Organizer and Seller checkboxes
            dict(
                fieldname='organizer',
                label='Organizer',
                fieldtype='Check',
                insert_after='is_debit_note',
                depends_on='eval:doc.company_main_activity && ["92000", "9200003", "9200004", "9200001", "9200002", "9200005"].includes(doc.company_main_activity)',
                allow_on_submit=1
            ),
            dict(
                fieldname='seller',
                label='Seller',
                fieldtype='Check',
                insert_after='organizer',
                depends_on='eval:doc.company_main_activity && ["92000", "9200003", "9200004", "9200001", "9200002", "9200005"].includes(doc.company_main_activity)',
                allow_on_submit=1
            ),
            # Won and Lost checkboxes after section_break_42 (только HTML для v15)
            dict(
                fieldname='won_lost_html',
                fieldtype='HTML',
                insert_after='section_break_42',
                depends_on='eval:doc.company_main_activity && ["92000", "9200003", "9200004", "9200001", "9200002", "9200005"].includes(doc.company_main_activity)',
                options="""
                <div style="display: flex; gap: 50px; margin: 8px 0;">
                    <label style="display: flex; align-items: center; gap: 8px;">
                        <input type="checkbox" class="won-checkbox" checked style="margin: 0;">
                        <span style="font-weight: 500;">Won</span>
                    </label>
                    <label style="display: flex; align-items: center; gap: 8px;">
                        <input type="checkbox" class="lost-checkbox" style="margin: 0;">
                        <span style="font-weight: 500;">Lost</span>
                    </label>
                </div>
                """
            ),
            # Скрытые поля для хранения значений
            dict(
                fieldname='won',
                label='Won',
                fieldtype='Check',
                insert_after='won_lost_html',
                hidden=1,
                default=1,
                allow_on_submit=1
            ),
            dict(
                fieldname='lost',
                label='Lost', 
                fieldtype='Check',
                insert_after='won',
                hidden=1,
                default=0,
                allow_on_submit=1
            ),
            # New comments section after time_sheet_list
            dict(
                fieldname='comments_section',
                label='Comments',
                fieldtype='Section Break',
                insert_after='time_sheet_list',
                collapsible=1
            ),
            # Comment field
            dict(
                fieldname='comment',
                label='Comment',
                fieldtype='Small Text',
                insert_after='comments_section'
            ),
            # Column break for grouping
            dict(
                fieldname='comments_column_break',
                fieldtype='Column Break',
                insert_after='comment'
            ),
            # Additional comment field
            dict(
                fieldname='additional_comment',
                label='Additional Comment',
                fieldtype='Small Text',
                insert_after='comments_column_break'
            )
        ],
        "Sales Invoice Item": [
            dict(
                fieldname='vat_18_percent_with_amount',
                label='VAT 18% with amount',
                fieldtype='Currency',
                insert_after='amount',
                in_list_view=1,
                read_only=1,
                columns=2,
                precision=2
            ),
            dict(
                fieldname='vat_amount',
                label='VAT Amount',
                fieldtype='Currency',
                insert_after='vat_18_percent_with_amount',
                in_list_view=1,
                columns=2,
                precision=2,
                read_only=1,
                description='Calculated as: VAT 18% with amount - Amount'
            ),
            dict(
                fieldname='vat_0_percent_with_amount', 
                label='VAT 0% with amount',
                fieldtype='Currency',
                insert_after='vat_amount',
                in_list_view=1,
                read_only=1,
                columns=2,
                precision=2
            ),
            dict(
                fieldname='amount_without_vat',
                label='Amount without VAT',
                fieldtype='Currency',
                insert_after='vat_0_percent_with_amount',
                in_list_view=1,
                read_only=1,
                columns=2,
                precision=2
            ),
            dict(
                fieldname='vat_free_amount',
                label='VAT free amount',
                fieldtype='Currency', 
                insert_after='amount_without_vat',
                in_list_view=1,
                read_only=1,
                columns=2,
                precision=2
            ),
            dict(
                fieldname='tax_article',
                label='Tax Article',
                fieldtype='Link',
                options='Tax Article',
                insert_after='vat_free_amount',
                in_list_view=1,
                columns=2,
                description='Tax Article field for VAT purposes'
            )
        ],
        "Sales Taxes and Charges": [
            dict(
                fieldname='tax_free_amount',
                label='Tax Free Amount',
                fieldtype='Currency',
                insert_after='tax_amount',
                in_list_view=1,
                columns=2
            )
        ],
        "Item": [
            # Product Group Code field in Details tab
            dict(
                fieldname='product_group_code',
                label='Product Group Code',
                fieldtype='Data',
                insert_after='item_name',
                in_list_view=0,
                in_standard_filter=0
            ),
            dict(
                fieldname='eqm_code',
                label='EQM Code',
                fieldtype='Link',
                options='EQM Codes',
                insert_after='product_group_code',
                in_list_view=0,
                in_standard_filter=0
            ),
            # Product Category field
            dict(
                fieldname='product_category',
                label='Product Category',
                fieldtype='Link',
                options='Item Category',
                insert_after='product_group_code',
                in_list_view=1,
                in_standard_filter=1
            )
        ],
        "Item Group": [
            dict(
                fieldname='is_standard',
                label='Is Standard',
                fieldtype='Check',
                insert_after='is_group',
                hidden=1,
                read_only=1
            )
        ],        
        "Bank": [
            dict(
                fieldname='bank_code',
                label='Bank Code',
                fieldtype='Data',
                insert_after='swift_number'
            )
        ],
        "Bank Account": [
            dict(
                fieldname='payment_account',
                label='Payment account (h/h)',
                fieldtype='Data',
                insert_after='iban'
            ),
            dict(
                fieldname='сorrespondent_account',
                label='Correspondent account (m/h)',
                fieldtype='Data',
                insert_after='payment_account'
            )
        ],
        "Employee Transfer": [
            dict(
                fieldname='reason',
                label='Reason',
                fieldtype='Data',
                insert_after='amended_from'
            ),
            dict(
                fieldname='order_number',
                label='Order number',
                fieldtype='Data',
                insert_after='reason'
            )
        ],
        "Employee Onboarding": [
            dict(
                fieldname='from_date_temporary',
                label='A temporary employee starts working from',
                fieldtype='Date',
                insert_after='boarding_begins_on'
            ),
            dict(
                fieldname='to_date_temporary',
                label='A temporary employee starts working to',
                fieldtype='Date',
                insert_after='from_date_temporary'
            )
        ],
        "Account": [
            dict(
                fieldname='is_account',
                label='Is Account',
                fieldtype='Check',
                insert_after='is_group'
            ),
            dict(
                fieldname='is_sub_account',
                label='Is Sub Account',
                fieldtype='Check',
                insert_after='is_account'
            ),
            dict(
                fieldname='description',
                label='Description',
                fieldtype='Text',
                insert_after='balance_must_be'
            )            
        ],        
        "Company": [
            # === MANAGEMENT INFORMATION SECTION ===
            dict(
                fieldname='management_section',
                label='Management Information',
                fieldtype='Section Break',
                insert_after='default_holiday_list',
                collapsible=1
            ),
            dict(
                fieldname='ceo',
                label='Chief Executive Officer',
                fieldtype='Link',
                options='Employee',
                insert_after='management_section',
                read_only=1
            ),
            dict(
                fieldname='director',
                label='Director',
                fieldtype='Link',
                options='Employee',
                insert_after='ceo'
            ),
            dict(
                fieldname='city_print',
                label='City (for print formats)',
                fieldtype='Data',
                insert_after='director'
            ),
            # NEW: Director information from E-Taxes
            dict(
                fieldname='director_name_etaxes',
                label='Director Name (E-Taxes)',
                fieldtype='Data',
                insert_after='city_print',
                read_only=1
            ),
            dict(
                fieldname='director_pin',
                label='Director PIN',
                fieldtype='Data',
                insert_after='director_name_etaxes',
                read_only=1
            ),
            
            # === TAX POLICY TAB ===
            dict(
                fieldname='tax_policy_tab',
                label='Tax Policy',
                fieldtype='Tab Break',
                insert_after='dashboard_tab'
            ),
            
            # === BUSINESS ACTIVITIES SECTION ===
            dict(
                fieldname='business_activities_section',
                label='Business Activities',
                fieldtype='Section Break',
                insert_after='tax_policy_tab',
                collapsible=1
            ),
            dict(
                fieldname='main_activity',
                label='Main type of activity',
                fieldtype='Link',
                options='Main type of activity',
                insert_after='business_activities_section',
                read_only=1
            ),
            dict(
                fieldname='organizer',
                label='Organizer',
                fieldtype='Check',
                insert_after='main_activity',
                depends_on='eval:["92000", "9200003", "9200004", "9200001", "9200002", "9200005"].some(id => doc.main_activity && doc.main_activity.includes(id))',
                allow_on_submit=1
            ),
            dict(
                fieldname='seller',
                label='Seller', 
                fieldtype='Check',
                insert_after='organizer',
                depends_on='eval:["92000", "9200003", "9200004", "9200001", "9200002", "9200005"].some(id => doc.main_activity && doc.main_activity.includes(id))',
                allow_on_submit=1
            ),  
            dict(
                fieldname='additional_activity_types',
                label='Additional Activity Types',
                fieldtype='Table',
                options='Company Additional Activity',
                insert_after='main_activity',
                columns=12,
                read_only=1
            ),
            
            # === TAX INFORMATION SECTION ===
            dict(
                fieldname='tax_information_section',
                label='Tax Information',
                fieldtype='Section Break',
                insert_after='additional_activity_types',
                collapsible=1
            ),
            dict(
                fieldname='taxation_system',
                label='Taxation system',
                fieldtype='Select',
                options='18% Value-added tax\n0% Value-added tax',
                insert_after='tax_information_section',
                read_only=1
            ),
            dict(
                fieldname='business_classification',
                label='Business Classification',
                fieldtype='Link',
                options='Business Classification',
                insert_after='taxation_system',
                read_only=1
            ),
            dict(
                fieldname='tax_authority',
                label='Tax Authority',
                fieldtype='Data',
                insert_after='business_classification',
                read_only=1
            ),
            dict(
                fieldname='state_registration_authority',
                label='State Registration Authority',
                fieldtype='Data',
                insert_after='tax_authority',
                read_only=1
            ),
            dict(
                fieldname='property_type',
                label='Property Type',
                fieldtype='Data',
                insert_after='state_registration_authority',
                read_only=1
            ),
            dict(
                fieldname='taxpayer_activity_group',
                label='Taxpayer Activity Group',
                fieldtype='Data',
                insert_after='property_type',
                read_only=1
            ),
            
            # NEW: Additional tax information fields
            dict(
                fieldname='legal_form_code',
                label='Legal Form Code',
                fieldtype='Data',
                insert_after='taxpayer_activity_group',
                read_only=1
            ),
            dict(
                fieldname='special_tax_regime',
                label='Special Tax Regime',
                fieldtype='Check',
                insert_after='legal_form_code',
                read_only=1
            ),
            dict(
                fieldname='tin_type',
                label='TIN Type',
                fieldtype='Data',
                insert_after='special_tax_regime',
                read_only=1
            ),
            dict(
                fieldname='is_risky_taxpayer',
                label='Is Risky Taxpayer',
                fieldtype='Check',
                insert_after='tin_type',
                read_only=1
            ),
            dict(
                fieldname='is_sport_betting_operator',
                label='Sport Betting Operator',
                fieldtype='Check',
                insert_after='is_risky_taxpayer',
                read_only=1
            ),
            dict(
                fieldname='has_active_production_object',
                label='Has Active Production Object',
                fieldtype='Check',
                insert_after='is_sport_betting_operator',
                read_only=1
            ),
            dict(
                fieldname='tax_system_type',
                label='Tax System Type',
                fieldtype='Data',
                insert_after='has_active_production_object',
                read_only=1
            ),
            dict(
                fieldname='is_taxpayer_in_cancellation_process',
                label='Is Taxpayer in Cancellation Process',
                fieldtype='Check',
                insert_after='tax_system_type',
                read_only=1
            ),
            dict(
                fieldname='is_chief_of_any_legal_entity',
                label='Is Chief of Any Legal Entity',
                fieldtype='Check',
                insert_after='is_taxpayer_in_cancellation_process',
                read_only=1
            ),
            
            # === VAT INFORMATION SECTION ===
            dict(
                fieldname='vat_information_section',
                label='VAT Information',
                fieldtype='Section Break',
                insert_after='is_chief_of_any_legal_entity',
                collapsible=1
            ),
            dict(
                fieldname='vat_registration_date',
                label='VAT registration date',
                fieldtype='Date',
                insert_after='vat_information_section',
                read_only=1
            ),        
            dict(
                fieldname='vat_certificate_number',
                label='VAT certificate number',
                fieldtype='Data',
                insert_after='vat_registration_date',
                read_only=1
            ),                  
            dict(
                fieldname='vat_certificate_date',
                label='VAT certificate date',
                fieldtype='Date',
                insert_after='vat_certificate_number',
                read_only=1
            ),
            
            # === ORGANIZATIONAL STRUCTURE SECTION ===
            dict(
                fieldname='organizational_structure_section',
                label='Organizational Structure',
                fieldtype='Section Break',
                insert_after='vat_certificate_date',
                collapsible=1
            ),
            dict(
                fieldname='parent_organization',
                label='Parent Organization',
                fieldtype='Data',
                insert_after='organizational_structure_section',
                read_only=1,
                description='Main organization from E-Taxes'
            ),
            dict(
                fieldname='parent_organization_tin',
                label='Parent Organization TIN',
                fieldtype='Data',
                insert_after='parent_organization',
                read_only=1
            ),
            dict(
                fieldname='affiliate_organizations',
                label='Affiliate Organizations',
                fieldtype='Table',
                options='Company Affiliate Organization',
                insert_after='parent_organization_tin',
                columns=12,
                read_only=1
            ),
            dict(
                fieldname='employee_count',
                label='Employee Count',
                fieldtype='Int',
                insert_after='affiliate_organizations',
                read_only=1
            ),
            
            # === REGISTRATION INFORMATION SECTION ===
            dict(
                fieldname='registration_information_section',
                label='Registration Information',
                fieldtype='Section Break',
                insert_after='employee_count',
                collapsible=1
            ),
            dict(
                fieldname='state_registration_document_issued_date',
                label='State Registration Document Issued Date',
                fieldtype='Date',
                insert_after='registration_information_section',
                read_only=1
            ),
            dict(
                fieldname='suspension_start_date',
                label='Suspension Start Date',
                fieldtype='Date',
                insert_after='state_registration_document_issued_date',
                read_only=1
            ),
            dict(
                fieldname='suspension_end_date',
                label='Suspension End Date',
                fieldtype='Date',
                insert_after='suspension_start_date',
                read_only=1
            ),
            dict(
                fieldname='liquidation_date',
                label='Liquidation Date',
                fieldtype='Date',
                insert_after='suspension_end_date',
                read_only=1
            ),
            
            # === ADDRESS INFORMATION SECTION ===
            dict(
                fieldname='address_information_section',
                label='Address Information',
                fieldtype='Section Break',
                insert_after='liquidation_date',
                collapsible=1
            ),
            dict(
                fieldname='legal_address_full',
                label='Legal Address (Full)',
                fieldtype='Data',
                insert_after='address_information_section',
                read_only=1
            ),
            dict(
                fieldname='actual_address_full',
                label='Actual Address (Full)',
                fieldtype='Data',
                insert_after='legal_address_full',
                read_only=1
            ),
            dict(
                fieldname='address_for_mail',
                label='Address for Mail',
                fieldtype='Select',
                options='legal\nactual',
                insert_after='actual_address_full',
                read_only=1
            ),
            dict(
                fieldname='legal_address_postcode',
                label='Legal Address Postcode',
                fieldtype='Data',
                insert_after='address_for_mail',
                read_only=1
            ),
            dict(
                fieldname='legal_address_region',
                label='Legal Address Region',
                fieldtype='Data',
                insert_after='legal_address_postcode',
                read_only=1
            ),
            dict(
                fieldname='legal_address_locality',
                label='Legal Address Locality',
                fieldtype='Data',
                insert_after='legal_address_region',
                read_only=1
            ),
            dict(
                fieldname='legal_address_street',
                label='Legal Address Street',
                fieldtype='Data',
                insert_after='legal_address_locality',
                read_only=1
            ),
            dict(
                fieldname='legal_address_house',
                label='Legal Address House Number',
                fieldtype='Data',
                insert_after='legal_address_street',
                read_only=1
            ),
            dict(
                fieldname='legal_address_room',
                label='Legal Address Room Number',
                fieldtype='Data',
                insert_after='legal_address_house',
                read_only=1
            ),
            
            # === CONTACT INFORMATION SECTION ===
            dict(
                fieldname='contact_information_section',
                label='Contact Information (E-Taxes)',
                fieldtype='Section Break',
                insert_after='legal_address_room',
                collapsible=1
            ),
            dict(
                fieldname='landline_phone',
                label='Landline Phone',
                fieldtype='Data',
                insert_after='contact_information_section',
                read_only=1
            ),
            dict(
                fieldname='mobile_phone',
                label='Mobile Phone',
                fieldtype='Data',
                insert_after='landline_phone',
                read_only=1
            ),
            
            # === TAX SYSTEMS SECTION ===
            dict(
                fieldname='tax_systems_section',
                label='Tax Systems',
                fieldtype='Section Break',
                insert_after='mobile_phone',
                collapsible=1
            ),
            dict(
                fieldname='tax_systems_list',
                label='Tax Systems List',
                fieldtype='Small Text',
                insert_after='tax_systems_section',
                read_only=1,
                description='List of tax systems applied'
            ),
            
            # === EMPLOYER INFORMATION SECTION ===
            dict(
                fieldname='employer_information_section',
                label='Employer Information',
                fieldtype='Section Break',
                insert_after='tax_systems_list',
                collapsible=1
            ),
            dict(
                fieldname='employer_name',
                label='Employer Name',
                fieldtype='Data',
                insert_after='employer_information_section',
                read_only=1
            ),
            dict(
                fieldname='employer_position',
                label='Employer Position',
                fieldtype='Data',
                insert_after='employer_name',
                read_only=1
            )
        ]                        
    }

    for doctype, fields in custom_fields.items():
        for field in fields:
            # Проверяем наличие fieldname перед обработкой
            if 'fieldname' not in field:
                print(f"Skipping field without fieldname in {doctype}: {field}")
                continue
            
            # Удаление существующего поля, если оно уже есть
            if frappe.db.exists("Custom Field", {"dt": doctype, "fieldname": field['fieldname']}):
                try:
                    custom_field_name = frappe.db.get_value("Custom Field", {"dt": doctype, "fieldname": field['fieldname']}, "name")
                    frappe.delete_doc("Custom Field", custom_field_name)
                    frappe.db.commit()
                    print(f"Deleted field {field['fieldname']} in {doctype}")
                except Exception as e:
                    print(f"Failed to delete field {field['fieldname']} in {doctype}: {e}")

            # Создание нового поля
            try:
                create_custom_field(doctype, field)
                print(f"Created field {field['fieldname']} in {doctype}")
            except Exception as e:
                print(f"Failed to create field {field['fieldname']} in {doctype}: {e}")

    # Коммит всех изменений
    frappe.db.commit()
    print("Setting up VAT calculation hooks...")
    
create_custom_fields()