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.

TabelleRolleHauptfelder
room_typeTyp und Regel; eindeutiger Codecode, counts_as, area_bucket, area_factor, threshold_pct, factor_over, half_room_max, sort_order, status
room_type_descriptionName 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

  1. 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.“
  2. 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.“
  3. Anteile kommen als Prozent an und werden als Faktor (Prozent geteilt durch 100) gespeichert. Das Modell schreibt über eine Positivliste: Ein unbekanntes counts_as wird zu other, ein unbekanntes area_bucket zu net. Grenzen: Faktor 0–10, Schwelle 0–1000 %, Halbzimmer-Grenze 0–1000.
  4. 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 delete wird endgültig gelöscht, aber nur, wenn kein Raum den Code nutzt (gezählt von countRoomsByType() 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 statusdelete kommt 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 zu edit; 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.