--- name: hausverwaltung-datenmigration description: "Migriert Excel-Exporte aus Hausverwaltungssoftware vom vertikalen Zeilenformat (eine Zeile pro Unterkonto) in ein horizontales Tabellenformat (eine Zeile pro Vertrag, Unterkonten als Spalten). Nutze diesen Skill für Aufgaben wie 'Sollbeträge-Export umwandeln', 'Hausverwaltungsdaten pivotieren', 'Tabelle umbauen', 'Unterkonten in Spalten', wenn eine Datei mit Spalten wie Vertrag/Unterkonto/Sollbetrag in ein flaches Format soll." argument-hint: "[Pfad zur Excel-Quelldatei]" --- # Hausverwaltung — Datenmigration Wandelt Excel-Exporte aus Hausverwaltungssoftware in ein sauberes, flaches Tabellenformat um: aus vielen Zeilen pro Vertrag (eine je Unterkonto) wird eine Zeile pro Vertrag, die Unterkonten werden zu Spaltenpaaren (Betrag + gültig seit). **Vorher** (eine Zeile pro Unterkonto): | Vertrag | Unterkonto | Sollbetrag | gültig seit | |---|---|---|---| | 710-Schuchardt, Silvia | Miete | 270 | 01.01.2015 | | 710-Schuchardt, Silvia | BK-VZ | 70 | 01.01.2015 | | 710-Schuchardt, Silvia | HK-VZ | 80 | 01.12.2021 | **Nachher** (eine Zeile pro Vertrag): | WEG | Vertrag | Miete | Miete gültig seit | BK-VZ | BK-VZ gültig seit | HK-VZ | HK-VZ gültig seit | |---|---|---|---|---|---|---|---| | 1708-SEV Kirchhofallee | 710-Schuchardt, Silvia | 270 | 01.01.2015 | 70 | 01.01.2015 | 80 | 01.12.2021 | ## Ablauf ### Schritt 1 — Datei entgegennehmen Frag nach der Excel-Datei (oder finde die `.xlsx` im Arbeitsverzeichnis). Erwartetes Eingabeformat, 4 Spalten: - **A Vertragsname** (z.B. `710-Schuchardt, Silvia`) - **B Unterkonto-Typ** (z.B. `Miete`, `BK-VZ`, `HK-VZ`) - **C Sollbetrag (netto)** — Zahl oder deutsches Zahlenformat (`1.665,42`) - **D Gültig seit** — Datum (`01.01.2015`) Die Datei enthält außerdem: **Summen-Zeilen** je Vertrag (`Summe 710-Schuchardt, Silvia`), **WEG-Summen-Zeilen** (`Summe 1708-SEV Kirchhofallee …`) und sich **wiederholende Kopfzeilen** (`Vertrag | Unterkonto | …`). ### Schritt 2 — Migration ausführen Schreib dir ein kleines Skript (z.B. Python mit `openpyxl`, oder `pandas`) und setze diese Regeln um: 1. **Zeilen klassifizieren:** Datenzeile vs. Vertrags-Summe vs. WEG-Summe vs. Kopfzeile. Kopfzeilen und Summen fließen **nicht** als Daten ein — Summen dienen nur der Validierung und der WEG-Zuordnung. 2. **Pivotieren:** je Vertrag eine Zeile; jeder vorkommende Unterkonto-Typ wird zu einem Spaltenpaar `` + ` gültig seit`. Die Spaltenreihenfolge über alle Verträge hinweg konsistent halten. 3. **Deutsche Zahlen** (`1.665,42`) und Zahl-Werte gleichermaßen korrekt nach float parsen. 4. **WEG-Zuordnung** (der kniffligste Teil, siehe unten). ### Schritt 3 — Validieren (immer) Nach der Migration eine Stichprobe rechnen: Summiere die Unterkonten pro WEG in der Zieldatei und gleiche sie gegen die WEG-Summe der Quelldatei ab. Weicht es ab → Fehler untersuchen, nicht still ausliefern. Nennt der Nutzer keinen WEG-Schlüssel, wähle selbst 2–3 zufällig. ### Schritt 4 — Zusammenfassung Melde: Anzahl migrierter Verträge, erkannte WEGs, Einzelverträge (ohne WEG), Anzahl Unterkonto-Typen (= Spaltenpaare), Ergebnis der Validierung, Pfad zur Zieldatei. ## WEG-Zuordnung (Logik) Der WEG-Name steht nur in der Summen-Zeile am Ende eines Blocks. Zuordnung: 1. **Vertragsnamen sammeln** — alle Namen aus Datenzeilen. 2. **WEG-Summen erkennen** — Summen-Zeilen, deren Name keinem Vertragsnamen entspricht, sind WEG-Summen. 3. **Zuordnung per Summen-Abgleich** — zwischen zwei WEG-Summen können Verträge liegen, die nicht zur folgenden WEG gehören (Einzelverträge/MV). Finde die Kombination von Verträgen, deren Beträge **exakt** zur WEG-Summe passen — das ist die korrekte Zuordnung. 4. **Verträge ohne eigene Summen-Zeile** — über ihre Einzelbeträge in die Gesamtsumme einrechnen. 5. Verträge, die keiner WEG zugeordnet werden können, in der WEG-Spalte als `(Einzelvertrag / MV)` kennzeichnen. ## Guardrails - **Nie still falsche Zahlen liefern** — schlägt die Summen-Validierung fehl, ist das ein Blocker, kein Rundungsdetail. - **Summen/Kopfzeilen sind keine Daten** — sauber herausfiltern, sonst verdoppeln sich Werte. - **Spaltenreihenfolge konsistent** über alle Verträge, auch wenn ein Vertrag einen Unterkonto-Typ nicht hat (dann Zelle leer lassen).