# Generated by Django 5.2.6 on 2026-06-29 10:52

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


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('auth', '0013_user_is_new_employee'),
        ('base', '0002_initial'),
        ('budget', '0001_initial'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='RevenueHead',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('name', models.CharField(max_length=200, unique=True, verbose_name='Head Name')),
                ('code', models.CharField(editable=False, max_length=20, unique=True, verbose_name='Revenue Code')),
                ('description', models.TextField(blank=True, verbose_name='Description')),
                ('allowed_recorder_group', models.ForeignKey(blank=True, help_text='Only members of this group can record revenue under this head. Leave blank to allow all.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='auth.group', verbose_name='Allowed Recorder Group')),
                ('created_by', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
                ('modified_by', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_modified_by', to=settings.AUTH_USER_MODEL, verbose_name='Modified By')),
            ],
            options={
                'verbose_name': 'Revenue Head',
                'verbose_name_plural': 'Revenue Heads',
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='RevenueItem',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('name', models.CharField(max_length=200, verbose_name='Item Name')),
                ('code', models.CharField(editable=False, max_length=40, unique=True, verbose_name='Revenue Code')),
                ('description', models.TextField(blank=True, verbose_name='Description')),
                ('budget_item', models.ForeignKey(blank=True, help_text='Optional. Links this revenue item to a budget item for budget-vs-actual analysis.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='revenue_items', to='budget.budgetitem', verbose_name='Linked Budget Item')),
                ('created_by', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
                ('modified_by', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_modified_by', to=settings.AUTH_USER_MODEL, verbose_name='Modified By')),
            ],
            options={
                'verbose_name': 'Revenue Item',
                'verbose_name_plural': 'Revenue Items',
                'ordering': ['sub_head__head__name', 'sub_head__name', 'name'],
            },
        ),
        migrations.CreateModel(
            name='RevenueRecord',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('reference_number', models.CharField(editable=False, max_length=30, unique=True, verbose_name='Reference No.')),
                ('amount', models.DecimalField(decimal_places=2, max_digits=15, verbose_name='Amount (₦)')),
                ('transaction_date', models.DateField(verbose_name='Transaction Date')),
                ('description', models.TextField(blank=True, verbose_name='Description')),
                ('created_by', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
                ('department', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='base.department', verbose_name='Department')),
                ('item', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='records', to='revenue.revenueitem', verbose_name='Revenue Item')),
                ('modified_by', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_modified_by', to=settings.AUTH_USER_MODEL, verbose_name='Modified By')),
                ('recorded_by', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='revenue_records_recorded', to=settings.AUTH_USER_MODEL, verbose_name='Recorded By')),
            ],
            options={
                'verbose_name': 'Revenue Record',
                'verbose_name_plural': 'Revenue Records',
                'ordering': ['-transaction_date', '-created_at'],
            },
        ),
        migrations.CreateModel(
            name='RevenueSubHead',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('name', models.CharField(max_length=200, verbose_name='Sub-Head Name')),
                ('code', models.CharField(editable=False, max_length=30, unique=True, verbose_name='Revenue Code')),
                ('description', models.TextField(blank=True, verbose_name='Description')),
                ('created_by', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
                ('head', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sub_heads', to='revenue.revenuehead', verbose_name='Revenue Head')),
                ('modified_by', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)s_modified_by', to=settings.AUTH_USER_MODEL, verbose_name='Modified By')),
            ],
            options={
                'verbose_name': 'Revenue Sub-Head',
                'verbose_name_plural': 'Revenue Sub-Heads',
                'ordering': ['head__name', 'name'],
                'unique_together': {('head', 'name')},
            },
        ),
        migrations.AddField(
            model_name='revenueitem',
            name='sub_head',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='revenue.revenuesubhead', verbose_name='Revenue Sub-Head'),
        ),
        migrations.AlterUniqueTogether(
            name='revenueitem',
            unique_together={('sub_head', 'name')},
        ),
    ]
