# Generated by Django 4.2.7 on 2025-07-08 12:25

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('campaigns', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='Advertiser',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('is_deleted', models.BooleanField(default=False)),
                ('deleted_at', models.DateTimeField(blank=True, null=True)),
                ('name', models.CharField(max_length=255)),
                ('company_name', models.CharField(blank=True, max_length=255)),
                ('advertiser_type', models.CharField(choices=[('direct', 'Direct Client'), ('agency', 'Agency Client'), ('network', 'Network Client')], default='direct', max_length=20)),
                ('contact_person', models.CharField(blank=True, max_length=255)),
                ('email', models.EmailField(blank=True, max_length=254)),
                ('phone', models.CharField(blank=True, max_length=20)),
                ('website', models.URLField(blank=True)),
                ('address_line1', models.CharField(blank=True, max_length=255)),
                ('address_line2', models.CharField(blank=True, max_length=255)),
                ('city', models.CharField(blank=True, max_length=100)),
                ('state', models.CharField(blank=True, max_length=100)),
                ('postal_code', models.CharField(blank=True, max_length=20)),
                ('country', models.CharField(blank=True, max_length=100)),
                ('tax_id', models.CharField(blank=True, max_length=50)),
                ('industry', models.CharField(blank=True, max_length=100)),
                ('is_active', models.BooleanField(default=True)),
                ('credit_limit', models.DecimalField(blank=True, decimal_places=2, max_digits=12, null=True)),
                ('payment_terms', models.CharField(blank=True, help_text='e.g., Net 30, Net 60', max_length=100)),
                ('account_manager', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='managed_advertisers', to=settings.AUTH_USER_MODEL)),
                ('parent_agency', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='advertisers', to='campaigns.agency')),
            ],
            options={
                'db_table': 'advertisers',
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='AdvertiserNote',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('is_deleted', models.BooleanField(default=False)),
                ('deleted_at', models.DateTimeField(blank=True, null=True)),
                ('title', models.CharField(blank=True, max_length=255)),
                ('content', models.TextField()),
                ('is_important', models.BooleanField(default=False)),
                ('is_private', models.BooleanField(default=False)),
                ('advertiser', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='advertisers.advertiser')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'db_table': 'advertiser_notes',
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='AdvertiserContact',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('is_deleted', models.BooleanField(default=False)),
                ('deleted_at', models.DateTimeField(blank=True, null=True)),
                ('contact_type', models.CharField(choices=[('primary', 'Primary Contact'), ('billing', 'Billing Contact'), ('technical', 'Technical Contact'), ('marketing', 'Marketing Contact')], max_length=20)),
                ('first_name', models.CharField(max_length=100)),
                ('last_name', models.CharField(max_length=100)),
                ('title', models.CharField(blank=True, max_length=100)),
                ('email', models.EmailField(max_length=254)),
                ('phone', models.CharField(blank=True, max_length=20)),
                ('mobile', models.CharField(blank=True, max_length=20)),
                ('is_primary', models.BooleanField(default=False)),
                ('receive_reports', models.BooleanField(default=True)),
                ('receive_notifications', models.BooleanField(default=True)),
                ('advertiser', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contacts', to='advertisers.advertiser')),
            ],
            options={
                'db_table': 'advertiser_contacts',
                'ordering': ['advertiser', 'contact_type', 'last_name'],
            },
        ),
        migrations.CreateModel(
            name='AdvertiserBilling',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('is_deleted', models.BooleanField(default=False)),
                ('deleted_at', models.DateTimeField(blank=True, null=True)),
                ('billing_method', models.CharField(choices=[('credit_card', 'Credit Card'), ('bank_transfer', 'Bank Transfer'), ('check', 'Check'), ('invoice', 'Invoice')], default='invoice', max_length=20)),
                ('card_last_four', models.CharField(blank=True, max_length=4)),
                ('card_type', models.CharField(blank=True, max_length=20)),
                ('card_expiry', models.CharField(blank=True, max_length=7)),
                ('bank_name', models.CharField(blank=True, max_length=255)),
                ('account_number', models.CharField(blank=True, max_length=50)),
                ('routing_number', models.CharField(blank=True, max_length=50)),
                ('swift_code', models.CharField(blank=True, max_length=20)),
                ('billing_address_line1', models.CharField(blank=True, max_length=255)),
                ('billing_address_line2', models.CharField(blank=True, max_length=255)),
                ('billing_city', models.CharField(blank=True, max_length=100)),
                ('billing_state', models.CharField(blank=True, max_length=100)),
                ('billing_postal_code', models.CharField(blank=True, max_length=20)),
                ('billing_country', models.CharField(blank=True, max_length=100)),
                ('auto_pay', models.BooleanField(default=False)),
                ('billing_threshold', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)),
                ('advertiser', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='billing', to='advertisers.advertiser')),
            ],
            options={
                'db_table': 'advertiser_billing',
            },
        ),
        migrations.CreateModel(
            name='UserAdvertiser',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('is_deleted', models.BooleanField(default=False)),
                ('deleted_at', models.DateTimeField(blank=True, null=True)),
                ('permission_level', models.CharField(choices=[('view', 'View Only'), ('edit', 'Edit'), ('manage', 'Full Management')], default='view', max_length=20)),
                ('can_view_campaigns', models.BooleanField(default=True)),
                ('can_create_campaigns', models.BooleanField(default=False)),
                ('can_edit_campaigns', models.BooleanField(default=False)),
                ('can_approve_campaigns', models.BooleanField(default=False)),
                ('can_view_reports', models.BooleanField(default=True)),
                ('can_manage_creatives', models.BooleanField(default=False)),
                ('advertiser', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_access', to='advertisers.advertiser')),
                ('granted_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='granted_advertiser_access', to=settings.AUTH_USER_MODEL)),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='advertiser_access', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'db_table': 'user_advertisers',
                'ordering': ['advertiser', 'user'],
                'unique_together': {('user', 'advertiser')},
            },
        ),
    ]
