Verbrauchsausweis Gewerbe

This commit is contained in:
Moritz Utcke
2024-01-12 14:26:15 +07:00
parent 9de268f32a
commit 898575d80f
24 changed files with 281 additions and 234 deletions

View File

@@ -14,13 +14,18 @@
import { AuditType, hidden } from "#components/Verbrauchsausweis/audits/hidden";
import { auditBedarfsausweisBenoetigt } from "#components/Verbrauchsausweis/audits/BedarfsausweisBenoetigt";
import { auditVerbrauchAbweichung } from "#components/Verbrauchsausweis/audits/VerbrauchAbweichung";
import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
import { Enums, GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
import { client } from "src/trpc";
import Cookies from "js-cookie";
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants";
import Overlay from "#components/Overlay.svelte";
export let uid: string | null = null;
export let gebaeude: GebaeudeStammdaten = {} as GebaeudeStammdaten;
export let ausweis: VerbrauchsausweisWohnen = {
ausweisart: Enums.Ausweisart.VerbrauchsausweisWohnen
} as VerbrauchsausweisWohnen;
export let showLoginPage: boolean = false;
async function spaeterWeitermachen() {
@@ -28,6 +33,7 @@
// Wir prüfen also ob wir eingeloggt sind und leiten den Nutzer ggf. auf die Login Seite weiter.
if (!Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)) {
loginOverlayHidden = false;
showLoginPage = true;
const getEvent = (event: MessageEvent) => {
if (event.data == "AUTHORIZED") {
@@ -80,8 +86,6 @@
}
}
export let gebaeude: GebaeudeStammdaten = {} as GebaeudeStammdaten;
export let ausweis: VerbrauchsausweisWohnen = {} as VerbrauchsausweisWohnen;
if (uid) {
// NOTE: Funktioniert nicht mehr
async () => {

View File

@@ -5,6 +5,8 @@
let email: string;
let passwort: string;
export let onLogin: (response: Awaited<ReturnType<typeof loginClient>>) => void;
async function login() {
const response = await loginClient(email, passwort)
@@ -18,6 +20,7 @@
})
} else {
parent.postMessage("AUTHORIZED", "*");
onLogin(response);
}
}
</script>

View File

@@ -4,14 +4,36 @@
import ZipSearch from "../components/ZIPSearch.svelte";
import Label from "../components/Label.svelte";
import PriceContainer from "#components/Kaufabschluss/PriceContainer.svelte";
import { Benutzer, Bezahlmethoden, Enums, Rechnungen, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
import { BedarfsausweisWohnen, Benutzer, Bezahlmethoden, Enums, Rechnungen, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
import PaymentOption from "#components/PaymentOption.svelte";
import { client } from "src/trpc";
export let user: Benutzer;
export let ausweis: VerbrauchsausweisWohnen
export let ausweis: VerbrauchsausweisWohnen | BedarfsausweisWohnen | VerbrauchsausweisGewerbe;
let rechnung: Rechnungen = {} as Rechnungen;
let services = [{
name: "Qualitätsdruck per Post (zusätzlich zur PDF Version) für 9€ inkl. MwSt.",
id: Enums.Service.Qualitaetsdruck,
price: 9,
selected: false
}, {
name: "Aushang (für öffentliche Gebäude gesetzlich vorgeschrieben) für 10€ inkl. MwSt.",
id: Enums.Service.Aushang,
price: 10,
selected: false
}, {
name: "Same Day Service (Bestellung Werktags vor 12:00 Uhr - Ausstellung bis 18:00 Uhr am gleichen Tag) für 29€ inkl. MwSt.",
id: Enums.Service.SameDay,
price: 29,
selected: false
}, {
name: "Telefonische Energieeffizienzberatung für 75€ inkl. MwSt.",
id: Enums.Service.Telefonberatung,
price: 75,
selected: false
}]
export let selectedPaymentType: Bezahlmethoden = Enums.Bezahlmethoden.PAYPAL;
let agbAkzeptiert: boolean;
@@ -19,10 +41,10 @@
async function createPayment() {
const response = await client.v1.rechnungen.erstellen.mutate({
ausweisart: "VerbrauchsausweisWohnen",
ausweisart: ausweis.ausweisart,
uid: ausweis.uid,
payment_method: selectedPaymentType,
services: []
services: services.filter(service => service.selected).map(service => service.id)
})
window.location.href = response.checkout_url
@@ -328,7 +350,7 @@
</div>
</div>
<div class="w-2/5">
<PriceContainer prices={[45, 60, 160]} />
<PriceContainer {ausweis} bind:services />
</div>
</div>
</div>

View File

@@ -0,0 +1,118 @@
export const buildingTypes = [
"Hotels ohne Stern, Pensionen, Gasthäuser, Hotels garni",
"Hotels mit 1 und 2 Sternen",
"Hotels mit 3 Sterne",
"Hotels mit 4 und 5 Sternen",
"Gästehäuser, Vereinsheime",
"Studentenwohnheime",
"Ausschankwirtschaft",
"Speisegaststätte/Restaurant",
"Kantinen/Mensen",
"Kino",
"Opernhäuser, Theatergebäude",
"Saalbauten, Stadthallen",
"Spielcasinos",
"Freizeitzentren, Jugendhäuser, Gemeindehäuser",
"Sporthallen",
"Mehrzweckhallen",
"Schwimmhallen, Hallenbäder",
"Sportheim (Vereinsheim)",
"Handel Non-food bis 300 qm",
"Handel Non-food bis 2000 qm",
"Handel Food bis 300 qm",
"Handel Food bis 2000 qm",
"Kaufhäuser, Warenhäuser, Einkaufszentren über 2000 qm",
"Krankenhäuser bis 250 Betten",
"Krankenhäuser von 251 bis 450 Betten",
"Krankenhäuser von 451 bis 650 Betten",
"Krankenhäuser von 651 bis 1000 Betten",
"Krankenhäuser mit über 1000 Betten",
"Flughafen, Terminal",
"Flughafen, Frachthallen",
"Flughafen, Wartung/Hangar",
"Flughafen, Werkstätten",
"Tiefgaragen, Parkhäuser",
"Bürogebäude, nur beheizt",
"Bürogebäude, temperiert, mech. belüftet",
"Bürogebäude mit Vollklimaanlage",
"Parlamentsgebäude",
"Gerichtsgebäude < 3.500",
"Gerichtsgebäude > 3.500",
"Verwaltungsgebäude < 3.500",
"Verwaltungsgebäude > 3.500",
"Ministerien",
"Ämtergebäude < 3.500",
"Ämtergebäude > 3.500",
"Krankenkassengebäude, Rathäuser, Sozialämter",
"Finanzämter < 3.500",
"Finanzämter > 3.500",
"Verwaltungsgebäude mit höherer techn. Ausstattung1",
"Polizeidienstgebäude < 3.500",
"Polizeidienstgebäude > 3.500",
"Polizeiinspektionen, Kommissariate, Kriminalämter, Reviere < 3.500",
"Polizeiinspektionen, Kommissariate, Kriminalämter, Reviere > 3.500",
"Zollämter, -Stationen, Grenzabfertigung",
"Rechenzentren",
"Gebäude für wissenschaftliche Lehre",
"Hörsaalgebäude",
"Institutsgebäude für Lehre und Forschung < 3.500",
"Institutsgebäude für Lehre und Forschung > 3.500",
"Institutsgebäude I < 3.500",
"Institutsgebäude I > 3.500",
"Institutsgebäude II *",
"Institutsgebäude III *",
"Institutsgebäude IV *",
"Institutsgebäude V *",
"Institutsgebäude für Forschung und Untersuchung",
"Fachhochschulen",
"Gebäude des Gesundheitswesens",
"Krankenhäuser und Unikliniken für Akutkranke",
"Schulen < 3.500",
"Schulen > 3.500",
"Allgemeinbildende Schulen < 3.500",
"Allgemeinbildende Schulen > 3.500",
"Grundschulen < 3.500",
"Grundschulen > 3.500",
"Hauptschulen",
"Realschulen",
"Gymnasien",
"Gesamtschulen",
"Berufsbildende Schulen < 3.500",
"Berufsbildende Schulen > 3.500",
"Sonderschulen",
"Kindertagesstätten",
"Weiterbildungseinrichtungen",
"Sportbauten",
"Hallen (ohne Schwimmhallen)",
"Schwimmhallen",
"Gebäude für Sportplatz- und Freibade anlagen",
"Gebäude für Freibadeanlagen einschl. Außenanlagen",
"Gemeinschaftsstätten < 3.500",
"Gemeinschaftsstätten > 3.500",
"Gemeinschaftsunterkünfte",
"Betreuungseinrichtungen",
"Gaststätten",
"Mensen",
"Beherbergungsstätten",
"Gebäude für Produktion, Werkstätten, Lagergebäude < 3.500",
"Gebäude für Produktion, Werkstätten, Lagergebäude > 3.500",
"Land- und forstwirtschaftliche Produktionsstätten",
"Verkaufsstätten",
"Betriebs- und Werkstätten",
"Gebäude für Lagerung",
"Garagengebäude",
"Gebäude für öffentliche Bereitschaftsdienste < 3.500",
"Gebäude für öffentliche Bereitschaftsdienste > 3.500",
"Straßenmeistereien",
"Bauhöfe",
"Feuerwehren",
"THW-Höfe",
"Bauwerke für technische Zwecke",
"Gebäude für kulturelle und musische Zwecke < 3.500",
"Gebäude für kulturelle und musische Zwecke > 3.500",
"Ausstellungsgebäude",
"Bibliotheksgebäude",
"Veranstaltungsgebäude",
"Gemeinschaftshäuser",
"Justizvollzugsanstalten",
];

View File

@@ -0,0 +1,437 @@
<script lang="ts">
import PerformanceScore from "#components/Ausweis/PerformanceScore.svelte";
import Progressbar from "#components/Ausweis/Progressbar.svelte";
import Hilfe from "#components/Ausweis/Hilfe.svelte";
import HelpLabel from "#components/HelpLabel.svelte";
import Verbrauch from "#components/Ausweis/Verbrauch.svelte";
import Label from "#components/Label.svelte";
import Ausweisart from "#components/Ausweis/Ausweisart.svelte";
import ZipSearch from "../../components/ZIPSearch.svelte";
import { buildingTypes } from "./BuildingTypes";
import BilderZusatzsysteme from "../../components/Ausweis/BilderZusatzsysteme.svelte";
import moment from "moment";
import { Enums, GebaeudeStammdaten, VerbrauchsausweisGewerbe } from "@ibcornelsen/database";
export let uid: string | null = null;
export let gebaeude: GebaeudeStammdaten = {} as GebaeudeStammdaten;
export let ausweis: VerbrauchsausweisGewerbe = {
ausweisart: Enums.Ausweisart.VerbrauchsausweisGewerbe
} as VerbrauchsausweisGewerbe;
let additionalHeating: boolean = false;
let heatedWaterIncluded: boolean = false;
let heatedWaterPortion: number = 18;
let needsRequirementCertificate: boolean = false;
$: needsRequirementCertificate =
(gebaeude.baujahr_gebaeude[0] < 1978 &&
(gebaeude.einheiten || 0) <= 4 &&
gebaeude.saniert == false &&
(ausweis.ausstellgrund == "Vermietung" ||
ausweis.ausstellgrund == "Sonstiges")) ||
ausweis.ausstellgrund == "Neubau" ||
ausweis.ausstellgrund == "Modernisierung" ||
ausweis.ausstellgrund == "Verkauf";
function automatischAusfüllen() {
gebaeude.baujahr_gebaeude = [1962];
gebaeude.baujahr_heizung = [1952];
gebaeude.saniert = true;
gebaeude.einheiten = 1;
ausweis.ausstellgrund = "Vermietung";
ausweis.verbrauch_1 = 15000;
ausweis.verbrauch_2 = 14000;
ausweis.verbrauch_3 = 16000;
gebaeude.flaeche = 152;
ausweis.keller_beheizt = true;
ausweis.brennstoff_1 = "Erdgas H";
ausweis.einheit_1 = "kWh";
ausweis.anteil_warmwasser_1 = 18;
ausweis.startdatum = moment("12.01.2019").toDate();
gebaeude.plz = "21039";
gebaeude.ort = "Hamburg";
gebaeude.adresse = "Curslacker Deich 170";
gebaeude.gebaeudeteil = "Gesamtgebäude";
gebaeude = gebaeude;
ausweis = ausweis;
}
</script>
<div class="flex flex-row gap-8 items-center mb-8">
<div class="flex flex-col w-full">
<h1>Verbrauchsausweis Gewerbe erstellen - 65€</h1>
<Progressbar progress={0} />
</div>
<PerformanceScore bind:ausweis />
</div>
<form method="post" action="/verbrauchsausweis/erstellen">
<fieldset
class="bg-[rgba(252,234,187,0.2)] border-2 p-4 rounded-lg border-[#ffcc03]"
>
<div class="flex flex-row justify-between">
<a class="button" href="/speichern">Später Weitermachen</a>
<div class="flex gap-4">
<Hilfe />
<button
on:click={automatischAusfüllen}
type="button"
class="button">Automatisch Ausfüllen</button
>
</div>
</div>
<hr />
<Label>A - Prüfung der Ausweisart</Label>
<Ausweisart bind:ausweis bind:gebaeude />
<div
class="flex flex-col p-4"
class:hidden={!needsRequirementCertificate}
>
<div class="form-group col-md-9">
<HelpLabel
title="Sie benötigen einen Bedarfsausweis. Bitte führen Sie hier Ihre Eingabe für den Bedarfsausweis fort und klicken auf den Button:"
>
Der Bedarfsausweis ist die etwas umfangreichere Berechnung.
Sie benötigen z.B. Länge, Breite und Geschoßhöhe des
Gebäudes. Auch müssen genauere Angaben zur Anlagentechnik
gemacht werden.
</HelpLabel>
</div>
<div class="form-group col-md-3">
<a class="button" href="/bedarfsausweis"
>Bedarfsausweis erstellen</a
>
</div>
</div>
<hr />
<div>
<Label
>B - Eingabe der Gebäudeadresse - Angaben zu Wohnfläche,
Kellerund Dachgeschoss</Label
>
</div>
<div class="GRB">
<!-- Strasse -->
<div class="form-group col-md-4">
<HelpLabel title="Straße, Hausnummer *">
Bitte geben Sie hier die Straße und Hausnummer des Gebäudes
ein.
</HelpLabel>
<div>
<input
name="IGstrasse"
class=" strasse"
type="text"
autocomplete="off"
required
data-msg-minlength="min. 5 Zeichen"
data-msg-maxlength="max. 40 Zeichen"
bind:value={gebaeude.adresse}
/>
</div>
</div>
<!-- PLZ -->
<div class="form-group col-md-4 PLZ">
<ZipSearch
bind:zip={gebaeude.plz}
bind:city={gebaeude.ort}
name="zip"
/>
</div>
<!-- IGort: readonly entfernt - Nelson -->
<div class="form-group col-md-4">
<HelpLabel title="Ort *">
Ort des Gebäudes wird automatisch ermittelt.
</HelpLabel>
<div>
<input
name="IGort"
readonly={true}
bind:value={gebaeude.ort}
type="text"
/>
</div>
</div>
<!-- Wohnfläche -->
<div class="form-group col-md-4">
<HelpLabel title="Wohnfläche m² *">
Bitte geben Sie hier die beheizte Wohnfläche in m² ein.
Dabei handelt es sich um die Wohnfläche abzüglich
vorhandener Flächen die sich außerhalb des Gebäudes
befinden. (Balkone, Terassen,etc.).
</HelpLabel>
<div>
<input
name="IGflaeche"
maxlength="4"
type="number"
required
autocomplete="off"
data-rule-minlength="2"
data-msg-minlength="min. 2 Zeichen"
bind:value={gebaeude.flaeche}
/>
</div>
</div>
<!-- Keller -->
<div class="form-group col-md-4">
<Label>Keller *</Label>
<div>
<select
name="IGkeller"
required
bind:value={gebaeude.keller}
>
<option>Bitte auswählen</option>
<option value={false}>nicht vorhanden</option>
<option value={false}>unbeheizt</option>
<option value={true}>beheizt</option>
</select>
</div>
</div>
<!-- Dachgeschoss -->
<div class="form-group col-md-4">
<Label>Dachgeschoss *</Label>
<div>
<select name="IGdach" class="" required>
<option>Bitte auswählen</option>
<option value="dnein">nicht vorhanden</option>
<option value="dub">unbeheizt</option>
<option value="dbh">beheizt</option>
</select>
</div>
</div>
</div>
<hr />
<div>
<Label>C - Eingabe von 3 zusammenhängenden Verbrauchsjahren</Label>
</div>
<div class="GRB">
<Verbrauch bind:ausweis bind:gebaeude />
</div>
<hr />
<div>
<div>
<div class="GRB">
<!-- Anteil WW enthalten -->
<div class="flex flex-col">
<div class="flex flex-row gap-6">
<label class="radio-inline"
><input
type="checkbox"
class="IGwwbool"
name="IGwwbool"
bind:checked={heatedWaterIncluded}
/>Warmwasser im Verbrauch enthalten</label
>
</div>
</div>
<!-- Warmwasser Antel -->
<div class="form-group col-md-2">
<HelpLabel title="% Anteil Warmwasser">
Wenn bekannt geben Sie den Anteil der
Warmwasser-Versorgung hier ein. Standardmäßig wird
ein Anteil von 18% angenommen.
</HelpLabel>
<input
name="IGwarmwasser"
maxlength="2"
type="text"
bind:value={heatedWaterPortion}
disabled={!heatedWaterIncluded}
autocomplete="off"
/>
</div>
<div class="form-group col-md-2">
<HelpLabel title="zusätzliche Heizquelle">
Wenn bekannt geben Sie den Anteil der
Warmwasser-Versorgung von der zusätzlichen
Heizquelle hier ein. Standardmäßig wird ein Anteil
von 18% angenommen.
</HelpLabel>
<input
name="IGwarmwasser2"
maxlength="3"
type="text"
autocomplete="off"
disabled={!additionalHeating}
/>
</div>
<!-- Alternative Energieversorgungssyteme -->
<div class="form-group col-md-5">
<HelpLabel
title="Alternative Energieversorgungssysteme genutzt für "
>
Bitte setzen Sie den Haken falls nachhaltige
CO2-Effiziente Heizungssysteme vorhanden sind. Das
wäre beispielsweise bei Pelletofen, Wärmepumpe,
BHKW, Solarsystem, etc. der Fall.
</HelpLabel>
<div class="flex flex-row gap-4">
<label class="checkbox-inline"
><input
type="checkbox"
name="IGversorgungssysteme1"
value="Heizung"
/>Heizung</label
>
<label class="checkbox-inline"
><input
type="checkbox"
name="IGversorgungssysteme2"
value="Warmwasser"
/>Warmwasser</label
>
<label class="checkbox-inline"
><input
type="checkbox"
name="IGversorgungssysteme3"
value="Lüftung"
/>Lüftung</label
>
<label class="checkbox-inline"
><input
type="checkbox"
name="IGversorgungssysteme4"
value="Kühlung"
/>Kühlung</label
>
</div>
</div>
</div>
<hr />
<div>
<Label
>E - Eingabe von Gebäudetyp, Gebäudeteil, Lüftung,
Kühlung und Leerstand</Label
>
</div>
<div class="GRB grid grid-cols-5 gap-4">
<!-- Gebäudetyp -->
<div>
<HelpLabel title="Gebäudetyp *"
>Bitte wählen Sie hier den Gebäudetyp aus.
</HelpLabel>
<div>
<select name="objekt_typ" required>
{#each buildingTypes as type}
<option value={type}>{type}</option>
{/each}
</select>
</div>
</div>
<!-- Gebäudeteil -->
<div>
<HelpLabel title="Gebäudeteil *"
>Bitte geben Sie hier den Gebäudeteil ein. In den
meisten Fällen handelt es sich um das Gesamtgebäude.
Sollte es sich allerdings um ein Gebäude mit mehr
als 10% Gewerbeanteil handeln, so sollten 2 Ausweise
erstellt werden. In diesem Fall wählen Sie
Gebäudeteil 'Wohnen' bzw. Gebäudeteil 'Gewerbe'.</HelpLabel
>
<div>
<select name="objekt_gebaeudeteil" required>
<option>Bitte auswählen</option>
<option value="Gesamtgebäude">
Gesamtgebäude</option
>
<option value="Wohnen"> Wohnen</option>
</select>
</div>
</div>
<!-- Lüftung -->
<div class="form-group col-md-2">
<HelpLabel title="Lüftung durch *"
>Bitte geben Sie hier ein ob über die Fenster
natürlich belüftet wird oder über eine
Lüftungsanlage.</HelpLabel
>
<div>
<select name="lueftungskonzept" required>
<option> Bitte auswählen</option>
<option value="Fensterlüftung">
Fensterlüftung</option
>
<option value="Schachtlüftung">
Schachtlüftung</option
>
<option
value="Lüftungsanlage ohne Wärmerückgewinnung"
>
Lüftungsanlage ohne Wärmerückgewinnung</option
>
<option
value="Lüftungsanlage mit Wärmerückgewinnung"
>
Lüftungsanlage mit Wärmerückgewinnung</option
>
</select>
</div>
</div>
<!-- Lüftung -->
<div class="form-group col-md-2">
<HelpLabel title="Anlage Kühlung *"
>Bitte geben Sie an ob das Gebäude im Sommer
zusätzlich gekühlt wird.</HelpLabel
>
<div>
<select name="wird_gekuehlt" required>
<option>Bitte auswählen</option>
<option value="1"> vorhanden</option>
<option value="0"> nicht vorhanden</option>
</select>
</div>
</div>
<!-- Leerstand -->
<div class="form-group col-md-2">
<HelpLabel title="Leerstand in %"
>Bitte geben Sie hier den Leerstand in % des
Gesamtzeitraumes (3 Jahre) ein. Zum Beispiel 4
Monate Leerstand in 36 Monaten wären dann ca. 11%.</HelpLabel
>
<div>
<input name="leerstand" maxlength="2" type="text" />
</div>
</div>
</div>
<hr />
<div class="form-group col-md-12">
<Label
>F - Bitte prüfen Sie hier die Angaben zum
Sanierungszustand des Gebäudes</Label
>
</div>
<BilderZusatzsysteme {ausweis} {gebaeude} />
<div class="flex flex-row justify-between">
<Hilfe />
<button formnovalidate>Weiter</button>
</div>
</div>
</div>
</fieldset>
</form>

View File

@@ -0,0 +1,64 @@
<script lang="ts">
import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
import VerbrauchsausweisWohnenModule from "./Ausweise/VerbrauchsausweisWohnenModule.svelte";
import EmbeddedLoginModule from "./EmbeddedLoginModule.svelte";
import { client } from "src/trpc";
import { addNotification } from "@ibcornelsen/ui";
export let uid: string | null = null;
export let gebaeude: GebaeudeStammdaten = {} as GebaeudeStammdaten;
export let ausweis: VerbrauchsausweisWohnen = {} as VerbrauchsausweisWohnen;
let showLoginPage = false;
</script>
{#if !showLoginPage}
<VerbrauchsausweisWohnenModule {uid} {gebaeude} {ausweis} bind:showLoginPage></VerbrauchsausweisWohnenModule>
{/if}
{#if showLoginPage}
<EmbeddedLoginModule onLogin={async (response) => {
if (uid) {
// Anscheinend wurde der Ausweis bereits erstellt und hat eine UID.
// Jetzt müssen wir ihn nun nur noch abspeichern.
try {
await client.v1.verbrauchsausweisWohnen[2016].speichern.mutate({
...ausweis,
gebaeude_stammdaten: gebaeude,
uid
})
window.location.href = `/ausweis-gespeichert?uid=${uid}`;
} catch (e) {
showLoginPage = false;
addNotification({
dismissable: false,
message: "Ausweis konnte nicht gespeichert werden, bitte versuchen sie es erneut.",
subtext: "Sollte das Problem weiterhin bestehen, kontaktieren sie bitte den Support.",
timeout: 6000,
type: "error"
})
}
} else {
// Wir speichern den Ausweis ab und leiten auf die "ausweis-gespeichert" Seite weiter.
try {
const { uid } = await client.v1.verbrauchsausweisWohnen[2016].erstellen.mutate({
...ausweis,
gebaeude_stammdaten: gebaeude
})
window.location.href = `/ausweis-gespeichert?uid=${uid}`;
} catch (e) {
showLoginPage = false;
addNotification({
dismissable: false,
message: "Ausweis konnte nicht gespeichert werden, bitte versuchen sie es erneut.",
subtext: "Sollte das Problem weiterhin bestehen, kontaktieren sie bitte den Support.",
timeout: 6000,
type: "error"
})
}
}
}}></EmbeddedLoginModule>
{/if}