v1.34: Eigenobjekt-Kennzeichen, Belegzuordnung nutzt Mietobjekt-Adresse; Ticket-Delete Fix

This commit is contained in:
2026-10-04 19:19:46 +02:00
parent 2f873737c2
commit c82e399a29
5 changed files with 101 additions and 14 deletions
+24
View File
@@ -189,6 +189,30 @@ tar -czf mp-dist.tar.gz -C dist .
## 8. Verlauf / offene Punkte
**Erledigt 04.10. (v1.34):** SparkReceipt-Zuordnung nutzt Mietobjekt-Adresse.
Problem: auf eingehenden Rechnungen steht als Adresse der Rechnungsempfänger
(Rott 250 = eigene Verwaltungsadresse, als Haus gepflegt) – die sekundäre
Adress-Zuordnung matchte damit immer das falsche Haus. Lösung: Gebäude
bekommen das Kennzeichen eigenobjekt (DB: buildings.eigenobjekt BOOLEAN,
Default FALSE); belegAutoZuordnung schließt solche Häuser aus
(WHERE eigenobjekt IS NOT TRUE) – primäre Stromzählernummer-Matchung
bleibt unverändert. POST/PATCH /api/buildings und mapBuilding liefern/
speichern eigenobjekt; PATCH merged via mapBuilding-Altbestand, bleibt
also erhalten wenn nicht mitsendet. Bestand.tsx: neuer Abschnitt
„Zuordnung Belege" mit Checkbox „Eigenobjekt / Rechnungsempfänger"
(Erklärung im Hint), Badge „Eigenobjekt" in Haus-Karte und Listenzeile.
Verwaltung muss Rott 250 einmalig als Eigenobjekt markieren; bereits
falsch zugeordnete Belege lassen sich einzeln per „Analysieren" neu
zuordnen (Schutz nur für 'manuell'). E2E: Webhook mit nur Empfängeradresse
→ keine Zuordnung statt Rott 250; mit Mietobjekt-Adresse im Text →
Zuordnung aufs Mietobjekt.
Fix in v1.33 mitnachgetragen: DELETE /api/tickets/:id löscht jetzt in
einer Transaktion zuerst messages, dann threads (threads.ticket_id hat
KEIN ON DELETE CASCADE), dann das Ticket – vorher 500 durch FK-Verletzung.
Blocker-Liste von DELETE /api/units/:id um transactions, tickets,
threads, registration_codes und belege erweitert (alle FKs auf units.id
ohne Cascade, vorher möglicher 500 statt 400er-Hinweis).
**Erledigt 04.10. (v1.33):** Einträge in allen Listen löschbar. Neue
adminOnly-DELETE-Endpunkte in server/src/index.js: /api/tickets/:id
(kaskadiert threads + messages), /api/meters/:id (kaskadiert meter_readings),