"""
URL configuration for the accounting module.
"""

from django.urls import path
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
import sys

# Simple test view (no auth required)
@csrf_exempt
def test_view(request):
    """Test page to diagnose issues"""
    info = ['<html><body><h1>Django Test Page</h1>']
    info.append(f'<p>Python: {sys.version}</p>')
    
    try:
        from accounting.models import Account
        count = Account.objects.count()
        info.append(f'<p style="color:green">✓ Accounting: {count} accounts</p>')
    except Exception as e:
        info.append(f'<p style="color:red">✗ Accounting error: {e}</p>')
    
    try:
        if hasattr(request, 'session'):
            info.append(f'<p style="color:green">✓ Session available</p>')
        else:
            info.append(f'<p style="color:orange">! No session</p>')
    except Exception as e:
        info.append(f'<p style="color:red">✗ Session error: {e}</p>')
    
    info.append('</body></html>')
    return HttpResponse(''.join(info))

from . import views

app_name = 'accounting'

urlpatterns = [
    # Test page
    path('test/', test_view, name='test'),
    # Account URLs
    path('accounts/', views.account_list, name='account_list'),
    path('accounts/create/', views.account_create, name='account_create'),
    path('accounts/<int:account_id>/', views.account_detail, name='account_detail'),
    path('accounts/<int:account_id>/edit/', views.account_edit, name='account_edit'),
    path('accounts/<int:account_id>/toggle-status/', views.account_toggle_status, name='account_toggle_status'),
    
    # Journal Entry URLs
    path('journal/', views.journal_entry_list, name='journal_entry_list'),
    path('journal/create/', views.journal_entry_create, name='journal_entry_create'),
    path('journal/<str:reference_number>/', views.journal_entry_detail, name='journal_entry_detail'),
    path('journal/<str:reference_number>/post/', views.journal_entry_post, name='journal_entry_post'),
    path('journal/<str:reference_number>/reverse/', views.journal_entry_reverse, name='journal_entry_reverse'),
    
    # Report URLs (placeholder views created, full implementation in Task 13)
    path('reports/dashboard/', views.reports_dashboard, name='reports_dashboard'),
    path('reports/trial-balance/', views.trial_balance_report, name='trial_balance_report'),
    path('reports/income-statement/', views.income_statement_report, name='income_statement_report'),
    path('reports/balance-sheet/', views.balance_sheet_report, name='balance_sheet_report'),
    path('reports/cash-flow/', views.cash_flow_report, name='cash_flow_report'),
    path('reports/account-analysis/', views.account_analysis_report, name='account_analysis_report'),
    
    # AJAX endpoints
    path('api/accounts/search/', views.account_search_ajax, name='account_search_ajax'),
    
    # Export URLs
    path('reports/trial-balance/export/', views.trial_balance_export, name='trial_balance_export'),
    path('reports/income-statement/export/', views.income_statement_export, name='income_statement_export'),
    path('reports/balance-sheet/export/', views.balance_sheet_export, name='balance_sheet_export'),
    path('reports/cash-flow/export/', views.cash_flow_export, name='cash_flow_export'),
    path('reports/account-analysis/export/', views.account_analysis_export, name='account_analysis_export'),
    
    # Fiscal Period URLs
    path('periods/', views.fiscal_period_list, name='fiscal_period_list'),
    path('periods/create/', views.fiscal_period_create, name='fiscal_period_create'),
    path('periods/<int:period_id>/', views.fiscal_period_detail, name='fiscal_period_detail'),
    path('periods/<int:period_id>/close/', views.fiscal_period_close, name='fiscal_period_close'),
    path('periods/<int:period_id>/reopen/', views.fiscal_period_reopen, name='fiscal_period_reopen'),
    
    # Audit Log URLs
    path('reports/audit-log/', views.audit_log_report, name='audit_log_report'),
]
