# Generated by Django 4.2.13 on 2026-04-22 00:59

from decimal import Decimal
from django.conf import settings
import django.core.validators
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),
    ]

    operations = [
        migrations.CreateModel(
            name='VerificationClaim',
            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)),
                ('claim_reference_number', models.CharField(max_length=64, unique=True)),
                ('date_received', models.DateField()),
                ('applicant_name_arabic', models.CharField(max_length=255)),
                ('applicant_name_english', models.CharField(max_length=255)),
                ('first_document_request_sent_at', models.DateField(blank=True, null=True)),
                ('second_reminder_sent_at', models.DateField(blank=True, null=True)),
                ('final_report_without_missing_docs_sent_at', models.DateField(blank=True, null=True)),
                ('preliminary_report_with_missing_docs_sent_at', models.DateField(blank=True, null=True)),
                ('reminder_email_sent_at', models.DateField(blank=True, null=True)),
                ('final_report_sent_at', models.DateField(blank=True, null=True)),
                ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='verification_claims_created', to=settings.AUTH_USER_MODEL)),
                ('updated_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='verification_claims_updated', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'ordering': ['-updated_at', '-id'],
            },
        ),
        migrations.CreateModel(
            name='VerificationInvoice',
            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)),
                ('goods_services', models.CharField(default='SERVICE', max_length=120)),
                ('transaction_type', models.CharField(default='TAX INVOICE', max_length=120)),
                ('transaction_number', models.CharField(max_length=64)),
                ('transaction_date', models.DateField()),
                ('line_item', models.CharField(max_length=32)),
                ('supplier_trn', models.CharField(max_length=32)),
                ('supplier_name', models.CharField(max_length=255)),
                ('total_amount_paid', models.DecimalField(decimal_places=2, max_digits=14, validators=[django.core.validators.MinValueValidator(Decimal('0.00'))])),
                ('vat_amount', models.DecimalField(decimal_places=2, default=Decimal('0.00'), max_digits=14, validators=[django.core.validators.MinValueValidator(Decimal('0.00'))])),
                ('vat_approved', models.DecimalField(decimal_places=2, default=Decimal('0.00'), max_digits=14, validators=[django.core.validators.MinValueValidator(Decimal('0.00'))])),
                ('vat_paid', models.DecimalField(decimal_places=2, default=Decimal('0.00'), max_digits=14, validators=[django.core.validators.MinValueValidator(Decimal('0.00'))])),
                ('description', models.CharField(blank=True, default='OK', max_length=255)),
                ('sort_order', models.PositiveIntegerField(default=1)),
                ('claim', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='invoices', to='verification.verificationclaim')),
            ],
            options={
                'ordering': ['sort_order', 'id'],
            },
        ),
        migrations.CreateModel(
            name='VerificationActivityLog',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('action', models.CharField(choices=[('create', 'Create'), ('update', 'Update'), ('delete', 'Delete')], max_length=16)),
                ('message', models.TextField()),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('actor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='verification_activity_logs', to=settings.AUTH_USER_MODEL)),
                ('claim', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activity_logs', to='verification.verificationclaim')),
                ('invoice', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='activity_logs', to='verification.verificationinvoice')),
            ],
            options={
                'ordering': ['-created_at', '-id'],
            },
        ),
        migrations.AddIndex(
            model_name='verificationinvoice',
            index=models.Index(fields=['claim', 'sort_order'], name='verificatio_claim_i_dc3996_idx'),
        ),
        migrations.AddIndex(
            model_name='verificationinvoice',
            index=models.Index(fields=['transaction_date'], name='verificatio_transac_a9877c_idx'),
        ),
        migrations.AddConstraint(
            model_name='verificationinvoice',
            constraint=models.UniqueConstraint(fields=('claim', 'transaction_number'), name='verification_unique_claim_transaction_number'),
        ),
        migrations.AddIndex(
            model_name='verificationclaim',
            index=models.Index(fields=['claim_reference_number'], name='verificatio_claim_r_574136_idx'),
        ),
        migrations.AddIndex(
            model_name='verificationclaim',
            index=models.Index(fields=['date_received'], name='verificatio_date_re_a83a87_idx'),
        ),
        migrations.AddIndex(
            model_name='verificationclaim',
            index=models.Index(fields=['updated_at'], name='verificatio_updated_ff7463_idx'),
        ),
        migrations.AddIndex(
            model_name='verificationactivitylog',
            index=models.Index(fields=['claim', 'created_at'], name='verificatio_claim_i_1406e4_idx'),
        ),
        migrations.AddIndex(
            model_name='verificationactivitylog',
            index=models.Index(fields=['action', 'created_at'], name='verificatio_action_f00e15_idx'),
        ),
    ]
