# Generated by Django 6.0.4 on 2026-07-18 09:01

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


class Migration(migrations.Migration):

    dependencies = [
        ('finance', '0008_budgetitem_allocation'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.AddField(
            model_name='invoice',
            name='approved_at',
            field=models.DateTimeField(blank=True, null=True),
        ),
        migrations.AddField(
            model_name='invoice',
            name='approved_by',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='approved_receivable_invoices', to=settings.AUTH_USER_MODEL),
        ),
        migrations.AddField(
            model_name='invoice',
            name='created_by',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='created_receivable_invoices', to=settings.AUTH_USER_MODEL),
        ),
        migrations.AddField(
            model_name='invoice',
            name='issued_by',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='issued_receivable_invoices', to=settings.AUTH_USER_MODEL),
        ),
        migrations.AddField(
            model_name='invoice',
            name='void_reason',
            field=models.TextField(blank=True),
        ),
        migrations.AddField(
            model_name='invoice',
            name='voided_by',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='voided_receivable_invoices', to=settings.AUTH_USER_MODEL),
        ),
        migrations.AlterField(
            model_name='invoice',
            name='status',
            field=models.CharField(choices=[('draft', 'Draft'), ('approved', 'Approved'), ('issued', 'Issued'), ('sent', 'Sent'), ('partially_paid', 'Partially Paid'), ('paid', 'Paid'), ('overdue', 'Overdue'), ('void', 'Void')], default='draft', max_length=20),
        ),
        migrations.CreateModel(
            name='BankStatementImport',
            fields=[
                ('id', models.UUIDField(default=apps.finance.models.uuid7, editable=False, primary_key=True, serialize=False)),
                ('statement_file', models.FileField(upload_to='finance/bank-statements/%Y/%m/')),
                ('import_method', models.CharField(choices=[('csv', 'CSV/XLSX'), ('ocr_pdf', 'PDF OCR')], max_length=10)),
                ('status', models.CharField(choices=[('uploaded', 'Uploaded'), ('extracting', 'Extracting'), ('needs_review', 'Needs Review'), ('confirmed', 'Confirmed'), ('closed', 'Closed')], default='uploaded', max_length=20)),
                ('extraction', models.JSONField(blank=True, default=dict)),
                ('confidence', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True)),
                ('confirmed_at', models.DateTimeField(blank=True, null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('bank_account', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='statement_imports', to='finance.bankaccount')),
                ('confirmed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='confirmed_bank_statement_imports', to=settings.AUTH_USER_MODEL)),
                ('uploaded_by', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='bank_statement_imports', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'db_table': 'finance_bank_statement_imports',
                'ordering': ['-created_at'],
            },
        ),
    ]
