# 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', ), ), ]