feat: add comprehensive GitHub workflow and development tools
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
# Generated by Django 5.0.6 on 2025-08-24 17:48
|
||||
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stiftung', '0009_alter_dokumentlink_paperless_document_id'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Rentmeister',
|
||||
fields=[
|
||||
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
||||
('anrede', models.CharField(blank=True, choices=[('herr', 'Herr'), ('frau', 'Frau'), ('dr', 'Dr.'), ('prof', 'Prof.'), ('prof_dr', 'Prof. Dr.')], max_length=10, verbose_name='Anrede')),
|
||||
('vorname', models.CharField(max_length=100, verbose_name='Vorname')),
|
||||
('nachname', models.CharField(max_length=100, verbose_name='Nachname')),
|
||||
('titel', models.CharField(blank=True, max_length=50, verbose_name='Titel')),
|
||||
('email', models.EmailField(blank=True, max_length=254, verbose_name='E-Mail')),
|
||||
('telefon', models.CharField(blank=True, max_length=20, verbose_name='Telefon')),
|
||||
('mobil', models.CharField(blank=True, max_length=20, verbose_name='Mobil')),
|
||||
('strasse', models.CharField(blank=True, max_length=200, verbose_name='Straße')),
|
||||
('plz', models.CharField(blank=True, max_length=10, verbose_name='PLZ')),
|
||||
('ort', models.CharField(blank=True, max_length=100, verbose_name='Ort')),
|
||||
('iban', models.CharField(blank=True, max_length=34, verbose_name='IBAN')),
|
||||
('bic', models.CharField(blank=True, max_length=11, verbose_name='BIC')),
|
||||
('bank_name', models.CharField(blank=True, max_length=100, verbose_name='Bank')),
|
||||
('seit_datum', models.DateField(verbose_name='Rentmeister seit')),
|
||||
('bis_datum', models.DateField(blank=True, null=True, verbose_name='Rentmeister bis')),
|
||||
('aktiv', models.BooleanField(default=True, verbose_name='Aktiv')),
|
||||
('monatliche_verguetung', models.DecimalField(blank=True, decimal_places=2, max_digits=8, null=True, verbose_name='Monatliche Vergütung (€)')),
|
||||
('km_pauschale', models.DecimalField(decimal_places=2, default=0.3, max_digits=4, verbose_name='Kilometerpauschale (€/km)')),
|
||||
('notizen', models.TextField(blank=True, verbose_name='Notizen')),
|
||||
('erstellt_am', models.DateTimeField(auto_now_add=True)),
|
||||
('aktualisiert_am', models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Rentmeister',
|
||||
'verbose_name_plural': 'Rentmeister',
|
||||
'ordering': ['nachname', 'vorname'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='StiftungsKonto',
|
||||
fields=[
|
||||
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
||||
('kontoname', models.CharField(max_length=200, verbose_name='Kontoname')),
|
||||
('bank_name', models.CharField(max_length=200, verbose_name='Bank')),
|
||||
('iban', models.CharField(max_length=34, verbose_name='IBAN')),
|
||||
('bic', models.CharField(blank=True, max_length=11, verbose_name='BIC')),
|
||||
('konto_typ', models.CharField(choices=[('girokonto', 'Girokonto'), ('sparkonto', 'Sparkonto'), ('festgeld', 'Festgeld'), ('tagesgeld', 'Tagesgeld'), ('depot', 'Depot'), ('sonstiges', 'Sonstiges')], default='girokonto', max_length=20, verbose_name='Kontotyp')),
|
||||
('saldo', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='Aktueller Saldo')),
|
||||
('saldo_datum', models.DateField(blank=True, null=True, verbose_name='Saldo-Datum')),
|
||||
('zinssatz', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='Zinssatz (%)')),
|
||||
('laufzeit_bis', models.DateField(blank=True, null=True, verbose_name='Laufzeit bis')),
|
||||
('aktiv', models.BooleanField(default=True, verbose_name='Aktiv')),
|
||||
('notizen', models.TextField(blank=True, verbose_name='Notizen')),
|
||||
('erstellt_am', models.DateTimeField(auto_now_add=True)),
|
||||
('aktualisiert_am', models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Stiftungskonto',
|
||||
'verbose_name_plural': 'Stiftungskonten',
|
||||
'ordering': ['bank_name', 'kontoname'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Verwaltungskosten',
|
||||
fields=[
|
||||
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
||||
('bezeichnung', models.CharField(max_length=200, verbose_name='Bezeichnung')),
|
||||
('kategorie', models.CharField(choices=[('rechnung_intern', 'Interne Rechnung'), ('bueroausstattung', 'Büroausstattung'), ('fahrtkosten', 'Fahrtkosten'), ('porto', 'Porto & Versand'), ('telefon_internet', 'Telefon & Internet'), ('software', 'Software & Lizenzen'), ('beratung', 'Beratung & Dienstleistungen'), ('versicherung', 'Versicherungen'), ('steuerberatung', 'Steuerberatung'), ('bankgebuehren', 'Bankgebühren'), ('sonstiges', 'Sonstiges')], max_length=30, verbose_name='Kategorie')),
|
||||
('betrag', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Betrag (€)')),
|
||||
('datum', models.DateField(verbose_name='Datum')),
|
||||
('lieferant_firma', models.CharField(blank=True, max_length=200, verbose_name='Lieferant/Firma')),
|
||||
('rechnungsnummer', models.CharField(blank=True, max_length=100, verbose_name='Rechnungsnummer')),
|
||||
('status', models.CharField(choices=[('geplant', 'Geplant'), ('bestellt', 'Bestellt'), ('erhalten', 'Erhalten'), ('bezahlt', 'Bezahlt'), ('storniert', 'Storniert')], default='geplant', max_length=20, verbose_name='Status')),
|
||||
('km_anzahl', models.DecimalField(blank=True, decimal_places=1, max_digits=8, null=True, verbose_name='Kilometer')),
|
||||
('km_satz', models.DecimalField(blank=True, decimal_places=2, max_digits=4, null=True, verbose_name='€/km')),
|
||||
('von_ort', models.CharField(blank=True, max_length=100, verbose_name='Von (Ort)')),
|
||||
('nach_ort', models.CharField(blank=True, max_length=100, verbose_name='Nach (Ort)')),
|
||||
('zweck', models.CharField(blank=True, max_length=200, verbose_name='Zweck der Fahrt')),
|
||||
('beschreibung', models.TextField(blank=True, verbose_name='Beschreibung')),
|
||||
('notizen', models.TextField(blank=True, verbose_name='Notizen')),
|
||||
('erstellt_am', models.DateTimeField(auto_now_add=True)),
|
||||
('aktualisiert_am', models.DateTimeField(auto_now=True)),
|
||||
('konto', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stiftung.stiftungskonto', verbose_name='Konto')),
|
||||
('rentmeister', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stiftung.rentmeister', verbose_name='Rentmeister')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Verwaltungskosten',
|
||||
'verbose_name_plural': 'Verwaltungskosten',
|
||||
'ordering': ['-datum', '-erstellt_am'],
|
||||
},
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user