# Phase 4: Generalize EmailEingang + Rechnungsworkflow
# - Rename DestinataerEmailEingang → EmailEingang
# - Add kategorie, verwaltungskosten FK, land FK, verpachtung FK
# - Expand status choices (rechnung_erfasst, zahlung_gebucht)
# - Add verwaltungskosten FK to DokumentDatei

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


class Migration(migrations.Migration):

    dependencies = [
        ('stiftung', '0049_phase3_email_dms_m2m'),
    ]

    operations = [
        # 1. Rename model (preserves DB table, updates Django state)
        migrations.RenameModel(
            old_name='DestinataerEmailEingang',
            new_name='EmailEingang',
        ),

        # 2. Add kategorie field to EmailEingang
        migrations.AddField(
            model_name='emaileingang',
            name='kategorie',
            field=models.CharField(
                choices=[
                    ('destinataer', 'Destinataer'),
                    ('rechnung', 'Rechnung'),
                    ('land_pacht', 'Grundstueck / Pacht'),
                    ('allgemein', 'Allgemein'),
                ],
                default='allgemein',
                max_length=20,
                verbose_name='Kategorie',
            ),
        ),

        # 3. Add verwaltungskosten FK to EmailEingang
        migrations.AddField(
            model_name='emaileingang',
            name='verwaltungskosten',
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name='email_eingaenge',
                to='stiftung.verwaltungskosten',
                verbose_name='Verwaltungskosten / Rechnung',
            ),
        ),

        # 4. Add land FK to EmailEingang
        migrations.AddField(
            model_name='emaileingang',
            name='land',
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name='email_eingaenge',
                to='stiftung.land',
                verbose_name='Laenderei',
            ),
        ),

        # 5. Add verpachtung FK to EmailEingang
        migrations.AddField(
            model_name='emaileingang',
            name='verpachtung',
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name='email_eingaenge',
                to='stiftung.landverpachtung',
                verbose_name='Verpachtung',
            ),
        ),

        # 6. Update status choices on EmailEingang
        migrations.AlterField(
            model_name='emaileingang',
            name='status',
            field=models.CharField(
                choices=[
                    ('neu', 'Neu / Unbearbeitet'),
                    ('zugewiesen', 'Destinataer zugewiesen'),
                    ('verarbeitet', 'Verarbeitet'),
                    ('rechnung_erfasst', 'Rechnung erfasst'),
                    ('zahlung_gebucht', 'Zahlung gebucht'),
                    ('unbekannt', 'Unbekannter Absender'),
                    ('fehler', 'Fehler bei Verarbeitung'),
                ],
                default='neu',
                max_length=20,
                verbose_name='Status',
            ),
        ),

        # 7. Update Meta on EmailEingang
        migrations.AlterModelOptions(
            name='emaileingang',
            options={
                'ordering': ['-eingangsdatum'],
                'verbose_name': 'E-Mail-Eingang',
                'verbose_name_plural': 'E-Mail-Eingaenge',
            },
        ),

        # 8. Set kategorie='destinataer' for existing emails that have a destinataer FK
        migrations.RunSQL(
            sql="UPDATE stiftung_emaileingang SET kategorie = 'destinataer' WHERE destinataer_id IS NOT NULL;",
            reverse_sql=migrations.RunSQL.noop,
        ),

        # 9. Add verwaltungskosten FK to DokumentDatei
        migrations.AddField(
            model_name='dokumentdatei',
            name='verwaltungskosten',
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name='dms_dokumente',
                to='stiftung.verwaltungskosten',
                verbose_name='Verwaltungskosten / Rechnung',
            ),
        ),
    ]
