Raumtypen: Datenmodell, Speichern und Löschschutz
Aufbau der Raumtyp-Stammdaten, die Prüfungen beim Speichern, die zwei Arten des Löschens und die Speicherung der Regeln zur Flächenberechnung.
Die Raumtyp-Stammdaten sind Betreiberdaten: Sie liefern die Typauswahl der Raumliste einer Immobilie und die Regeln zur Berechnung der Nettonutzfläche. Sie enthalten keine Firmendaten und haben daher keinen Inhaltsbereich.
Datenmodell
Die Tabellennamen tragen in der Datenbank das eigene Präfix der Installation.
| Tabelle | Rolle | Hauptfelder |
|---|---|---|
room_type | Typ und Regel; eindeutiger Code | code, counts_as, area_bucket, area_factor, threshold_pct, factor_over, half_room_max, sort_order, status |
room_type_description | Name je Sprache (max. 64 Zeichen) | room_type_id, language_id, name |
Die Raumzeile verweist auf den Code (property_room.room_type). Öffentliche Methoden des zuständigen Modells für andere Module: getRules() (Immobilienformular, Speichern, Flächenberechnung), getOptions() (Raumauswahl), ready().
Speichern
- Der Code wird kleingeschrieben und muss mit einem Buchstaben beginnen und 2–32 Kleinbuchstaben, Ziffern oder Unterstriche enthalten. Ein belegter Code meldet: „Dieser Code wird bereits von einem anderen Raumtyp verwendet.“
- Eine Bezeichnung in mindestens einer Sprache ist Pflicht: „Geben Sie die Bezeichnung in mindestens einer Sprache ein.“ Bei jedem Fehler oben: „Bitte prüfen Sie die markierten Felder.“
- Anteile kommen als Prozent an und werden als Faktor (Prozent geteilt durch 100) gespeichert. Das Modell schreibt über eine Positivliste: Ein unbekanntes
counts_aswird zu other, ein unbekanntesarea_bucketzu net. Grenzen: Faktor 0–10, Schwelle 0–1000 %, Halbzimmer-Grenze 0–1000. - Nach dem Zurücklesen: „Gespeichert.“; bei einem neuen Datensatz liefert die Antwort die neue ID, die das Formular in das versteckte Feld schreibt, sodass das nächste Speichern eine Änderung ist.
Zustände und Löschen
- Status: 0 inaktiv, 1 aktiv, 9 gelöscht (Papierkorb). Die Raumauswahl bietet nur aktive Typen an; die Berechnung nutzt die Regel jedes nicht gelöschten Typs.
- Es gibt einen Lösch-Endpunkt. Mit dem Recht
deletewird endgültig gelöscht, aber nur, wenn kein Raum den Code nutzt (gezählt voncountRoomsByType()des Immobilienmodells); sonst: „Nicht löschbar: 3 Raum/Räume verwenden diesen Typ. Deaktivieren Sie ihn stattdessen.“ Dieser Zweig läuft auch, wenn beide Löschrechte vorhanden sind. - Nur mit
statusdeletekommt die Zeile in den Papierkorb (Status 9). Fehlende Zeile: „Der Raumtyp wurde nicht gefunden.“
Grunddaten
Die Migration legt 23 Typen mit englischem, ungarischem und deutschem Namen an. Zimmertypen mit 12 m² Halbzimmer-Grenze: living, bedroom, study, office. Netto-Gruppe zu 100 % unter anderem: kitchen, dining, hall, corridor, wardrobe, pantry, laundry, basement, attic, other. Terrace und balcony gehören zur Terrassengruppe mit 50 %, 50 % Schwelle und 30 % darüber. Storage, garage und garden zählen 0 % in der eigenen Gruppe, pool und stairs 0 % in der Gruppe Sonstiges.
Berechtigungen
- Grundzugriff: der Menüpfad der Raumtyp-Ansicht.
- Funktionsrechte (Basispaket):
list,add,edit,statusdelete,delete,debug. Aktivieren und Deaktivieren gehören zuedit; der Papierkorb ist nur für Benutzer sichtbar, die gelöschte Einträge sehen dürfen. - Inhaltsbereich: keiner, Betreiber-Stammdaten.
Bekannte Einschränkungen
Datenraum und REST-Export geben den Typcode des Raums weiter. Aus dem Code geht nicht hervor, ob der Datenraum den Stammdatennamen oder eine eingebaute Beschriftung anzeigt.