"""
Standalone test for export service without Django ORM.
"""
from decimal import Decimal
from datetime import date, timedelta
import os
import sys

# Set Django settings module before importing anything else
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'branch_system.settings')

# Import Django and setup
import django
django.setup()

from accounting.services.export_service import ExportService

def test_export_service():
    """Test export service functions."""
    export_service = ExportService()
    
    # Test data
    trial_balance_data = {
        'report_date': date.today(),
        'branch': 'Main Branch',
        'accounts': [
            {
                'code': '202001',
                'name': 'Loan Portfolio',
                'type': 'asset',
                'debit_balance': Decimal('1000000.00'),
                'credit_balance': Decimal('0.00')
            },
            {
                'code': '301001',
                'name': 'Share Capital',
                'type': 'equity',
                'debit_balance': Decimal('0.00'),
                'credit_balance': Decimal('1000000.00')
            },
        ],
        'totals': {
            'total_debits': Decimal('1000000.00'),
            'total_credits': Decimal('1000000.00'),
            'balanced': True
        }
    }
    
    print("Testing PDF exports...")
    
    # Test PDF export
    try:
        pdf_buffer = export_service.export_trial_balance_pdf(trial_balance_data, 'testuser')
        print(f"✓ Trial Balance PDF generated: {pdf_buffer.getbuffer().nbytes} bytes")
    except Exception as e:
        print(f"✗ Trial Balance PDF failed: {e}")
        import traceback
        traceback.print_exc()
    
    # Test Excel export
    try:
        excel_buffer = export_service.export_trial_balance_excel(trial_balance_data)
        print(f"✓ Trial Balance Excel generated: {excel_buffer.getbuffer().nbytes} bytes")
    except Exception as e:
        print(f"✗ Trial Balance Excel failed: {e}")
        import traceback
        traceback.print_exc()
    
    # Test income statement
    income_statement_data = {
        'period': {'start': date.today() - timedelta(days=30), 'end': date.today()},
        'branch': 'Main Branch',
        'income': {
            'Interest Income': Decimal('50000.00'),
            'Fee Income': Decimal('10000.00'),
        },
        'gross_income': Decimal('60000.00'),
        'expenses': {
            'Operating Expenses': Decimal('20000.00'),
        },
        'total_expenses': Decimal('20000.00'),
        'net_income': Decimal('40000.00')
    }
    
    try:
        pdf_buffer = export_service.export_income_statement_pdf(income_statement_data, 'testuser')
        print(f"✓ Income Statement PDF generated: {pdf_buffer.getbuffer().nbytes} bytes")
    except Exception as e:
        print(f"✗ Income Statement PDF failed: {e}")
    
    try:
        excel_buffer = export_service.export_income_statement_excel(income_statement_data)
        print(f"✓ Income Statement Excel generated: {excel_buffer.getbuffer().nbytes} bytes")
    except Exception as e:
        print(f"✗ Income Statement Excel failed: {e}")
    
    print("\nAll export tests completed!")

if __name__ == '__main__':
    test_export_service()
