4 Commits

Author SHA1 Message Date
Jens Cornelsen
87c09e1cf0 Kühlungszuschlag repariert 2025-04-11 10:28:16 +02:00
Jens Cornelsen
4978743b32 Style Dashboard 2025-04-10 21:20:57 +02:00
Jens Cornelsen
856c194a02 Dashboard Mockup 2025-04-10 00:18:13 +02:00
Jens Cornelsen
afc561b701 Auto stash before rebase of "main" onto "origin/main" 2025-04-08 13:05:09 +02:00
9 changed files with 40964 additions and 255 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -5,7 +5,6 @@ export const createCaller = createCallerFactory({
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"), "klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"), "postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
"unterlage": await import("../src/pages/api/unterlage.ts"), "unterlage": await import("../src/pages/api/unterlage.ts"),
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"), "admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"), "admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"), "admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
@@ -13,11 +12,11 @@ export const createCaller = createCallerFactory({
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"), "admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"), "admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"), "admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"), "auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
"auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"), "auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"),
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
"bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"), "bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"),
"bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"), "bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"),
"bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"), "bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"),
@@ -36,8 +35,6 @@ export const createCaller = createCallerFactory({
"user/self": await import("../src/pages/api/user/self.ts"), "user/self": await import("../src/pages/api/user/self.ts"),
"verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"), "verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"),
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"), "verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
"verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"),
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"), "webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
"verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"), "verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"),
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"), "verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),

View File

@@ -161,260 +161,368 @@
} }
</script> </script>
<div class="relative bg-base-200 border border-base-300 rounded-lg p-4 mr-4"> <div class="relative bg-base-200 border border-base-300 rounded-lg p-4">
{#if ausweis.storniert} <div class="max-w-screen-xl mx-auto py-6 px-4 bg-white shadow">
<div
class="absolute top-0 left-0 w-full h-full bg-[rgba(0,0,0,0.7)] z-[5] rounded-lg select-none" <!-- Obere Zeile: Titel -->
> <div class="border-b flex flex-row pb-2">
<h1 <div class="text-xl font-bold">
class="absolute -rotate-[25deg] text-5xl md:text-7xl tracking-wide uppercase text-red-500 border-4 border-red-500 rounded-lg top-[50%] translate-y-[-50%] left-[50%] translate-x-[-50%]" Verbrauchsausweis Wohnen mit Beratung (Post, Same Day)
> </div>
Storniert <div class="bg-red-600 ml-auto px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Gespeichert</div>
</h1>
</div> </div>
{/if}
<div class="card-body"> <!-- Navigation (1/3) -->
<div <div class="border-b pt-4 mb-4 flex justify-between items-center">
class="flex justify-end mb-2 dropdown dropdown-bottom absolute top-4 right-4" <button class="bg-gray-300 text-gray-700 px-2 py-1 rounded hover:bg-gray-400">
> &laquo;
<button class="rounded-full p-2.5 hover:bg-base-100">
<DotsVertical size={15} />
</button> </button>
<ul <p class="text-gray-700 font-medium">
tabindex="-1" Ausweis 1/3
class="dropdown-content z-[1] menu p-2 shadow bg-base-100 rounded-box w-64 gap-2" </p>
> <button class="bg-gray-300 text-gray-700 px-2 py-1 rounded hover:bg-gray-400">
<li> &raquo;
<button on:click={ausweisStornieren} </button>
><CrossCircled size={15} />Ausweis Stornieren</button </div>
>
</li> <!-- Erster Block: Drei Spalten -->
<li> <div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-4">
<button><Pencil2 size={15} /> Als Vorlage benutzen</button> <!-- Linke Spalte: Bild + ID -->
</li> <div class="flex-shrink-0 bg-gray-100 flex flex-col items-center border text-2xl rounded-b-lg pb-2 max-w-[220px]">
<li> <img
<button on:click={() => hilfeModal.showModal()} src="../../images/placeholder.png"
><QuestionMarkCircled size={15} /> Hilfe Erhalten</button alt="Gebäudevorschau"
> class="rounded-t-lg mb-2"
</li> />
</ul> <div class="grid grid-cols-1 md:grid-cols-2 gap-2 bg-white">
</div> <!-- PDF-Icon / Ausweis -->
<div class="flex flex-row flex-wrap items-center gap-2"> <div class="m-1">
<div class="text-lg font-semibold"> <img
{#if ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen} src="../../images/dashboard/AusweisKreuz.svg"
Verbrauchsausweis Wohnen alt="PDF Symbol für Verbrauchsausweis"
{:else if ausweisart == Enums.Ausweisart.BedarfsausweisWohnen} class="h-auto w-auto p-2 border border-black rounded-lg"
Bedarfsausweis Wohnen />
{:else if ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe} <span class="text-xs font-medium ml-2">Verbrauchsausweis</span>
Verbrauchsausweis Gewerbe </div>
{:else if ausweisart == Enums.Ausweisart.GEGNachweisWohnen} <!-- PDF-Icon / Datenblatt -->
GEG Nachweis Wohnen <div class="m-1">
{:else if ausweisart == Enums.Ausweisart.GEGNachweisGewerbe} <img
GEG Nachweis Gewerbe src="../../images/dashboard/DatenblattKreuz.svg"
{:else if ausweisart == Enums.Ausweisart.BedarfsausweisGewerbe} alt="PDF Symbol für Datenblatt"
Bedarfsausweis Gewerbe class="h-auto w-auto p-2 border border-black rounded-lg"
{/if} />
<span class="text-xs font-medium ml-2">Datenblatt</span>
</div>
</div>
<div class="p-4">Ausweis ID: <b>BWWICR32</b></div>
</div>
{#if ausweis.ausweistyp === Enums.AusweisTyp.Beratung || ausweis.ausweistyp === Enums.AusweisTyp.BeratungXL} <div class="relative bg-base-200 border border-base-300 rounded-lg p-4">
(Beratung) {#if ausweis.storniert}
{:else if ausweis.ausweistyp === Enums.AusweisTyp.Offline || ausweis.ausweistyp === Enums.AusweisTyp.OfflineXL} <div
(Offline) class="absolute top-0 left-0 w-full h-full bg-[rgba(0,0,0,0.7)] z-[5] rounded-lg select-none"
>
<h1
class="absolute -rotate-[25deg] text-5xl md:text-7xl tracking-wide uppercase text-red-500 border-4 border-red-500 rounded-lg top-[50%] translate-y-[-50%] left-[50%] translate-x-[-50%]"
>
Storniert
</h1>
</div>
{/if}
<div class="card-body">
<div
class="flex justify-end mb-2 dropdown dropdown-bottom absolute top-4 right-4"
>
<button class="rounded-full p-2.5 hover:bg-base-100">
<DotsVertical size={15} />
</button>
<ul
tabindex="-1"
class="dropdown-content z-[1] menu p-2 shadow bg-base-100 rounded-box w-64 gap-2"
>
<li>
<button on:click={ausweisStornieren}
><CrossCircled size={15} />Ausweis Stornieren</button
>
</li>
<li>
<button><Pencil2 size={15} /> Als Vorlage benutzen</button>
</li>
<li>
<button on:click={() => hilfeModal.showModal()}
><QuestionMarkCircled size={15} /> Hilfe Erhalten</button
>
</li>
</ul>
</div>
<div class="flex flex-row flex-wrap items-center gap-2">
<div class="text-lg font-semibold">
{#if ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen}
Verbrauchsausweis Wohnen
{:else if ausweisart == Enums.Ausweisart.BedarfsausweisWohnen}
Bedarfsausweis Wohnen
{:else if ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe}
Verbrauchsausweis Gewerbe
{:else if ausweisart == Enums.Ausweisart.GEGNachweisWohnen}
GEG Nachweis Wohnen
{:else if ausweisart == Enums.Ausweisart.GEGNachweisGewerbe}
GEG Nachweis Gewerbe
{:else if ausweisart == Enums.Ausweisart.BedarfsausweisGewerbe}
Bedarfsausweis Gewerbe
{/if}
{#if ausweis.ausweistyp === Enums.AusweisTyp.Beratung || ausweis.ausweistyp === Enums.AusweisTyp.BeratungXL}
(Beratung)
{:else if ausweis.ausweistyp === Enums.AusweisTyp.Offline || ausweis.ausweistyp === Enums.AusweisTyp.OfflineXL}
(Offline)
{/if}
</div>
{#if ausweis.ausgestellt}
<span class="bg-green-600 px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Ausgestellt</span>
{:else if ausweis.bestellt}
<span class="bg-primary px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Bestellt</span>
{:else}
<span class="bg-red-600 px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Gespeichert</span>
{/if}
</div>
<div class="badge badge-accent font-semibold text-black text-m">{objekt.adresse}</div>
<div class="mb-4 flex flex-row items-center gap-4">
<div class="w-full border rounded-lg my-2">
<div class="bg-green-600 h-4 rounded-lg" class:bg-red-600={progress == 33} class:bg-primary={progress == 66} style="width: {progress}%;"></div>
</div>
<span class="text-sm font-semibold text-base-content"
>{progress}%</span
>
</div>
{#if ausweis.bestellt}
{#if ausweis.ausweistyp === Enums.AusweisTyp.Beratung || ausweis.ausweistyp === Enums.AusweisTyp.BeratungXL}
<p class="text-sm font-semibold">Sie haben Hilfe zu diesem Ausweis angefordert. Sie werden innerhalb der nächsten 48 Stunden über die hinterlegte Telefonnummer vom IB Cornelsen kontaktiert.</p>
{:else if ausweis.ausweistyp === Enums.AusweisTyp.Offline || ausweis.ausweistyp === Enums.AusweisTyp.OfflineXL}
<p class="text-sm font-semibold">Sie haben die offline Variant zu diesem Ausweis angefordert. Bitte übermitteln Sie uns die letzten drei Jahre der Energieabrechnungen Ihres Energieversorgers.</p>
{:else}
<p class="text-sm font-semibold">Der Ausweis wurde von Ihnen freigegeben und befindet sich in Prüfung vom IB Cornelsen</p>
{/if}
{/if} {/if}
</div> {#await calculations then calculations}
<div class="flex flex-col gap-2">
{#if ausweis.ausgestellt} <div class="flex flex-row justify-between">
<span class="bg-green-600 px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Ausgestellt</span> <span>Energieverbrauch</span>
{:else if ausweis.bestellt} <span class="font-bold text-base-content"
<span class="bg-primary px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Bestellt</span> >{calculations?.endEnergieVerbrauchGesamt}kWh/A</span
{:else} >
<span class="bg-red-600 px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Gespeichert</span> </div>
{/if} <div class="flex flex-row justify-between">
</div> <span>CO2 Ausstoß</span>
<div class="badge badge-accent font-semibold text-black text-m">{objekt.adresse}</div> <span class="font-bold text-base-content"
<div class="mb-4 flex flex-row items-center gap-4"> >{calculations?.co2EmissionenGesamt}Kg/A</span
<div class="w-full border rounded-lg my-2"> >
<div class="bg-green-600 h-4 rounded-lg" class:bg-red-600={progress == 33} class:bg-primary={progress == 66} style="width: {progress}%;"></div> </div>
</div> <div class="flex flex-row justify-between">
<span class="text-sm font-semibold text-base-content" <span>Erstellungsdatum</span>
>{progress}%</span <span class="font-bold text-base-content"
> >{moment(aufnahme.erstellungsdatum).format(
</div> "DD.MM.YYYY"
{#if ausweis.bestellt} )}</span
{#if ausweis.ausweistyp === Enums.AusweisTyp.Beratung || ausweis.ausweistyp === Enums.AusweisTyp.BeratungXL} >
<p class="text-sm font-semibold">Sie haben Hilfe zu diesem Ausweis angefordert. Sie werden innerhalb der nächsten 48 Stunden über die hinterlegte Telefonnummer vom IB Cornelsen kontaktiert.</p> </div>
{:else if ausweis.ausweistyp === Enums.AusweisTyp.Offline || ausweis.ausweistyp === Enums.AusweisTyp.OfflineXL} <div class="flex flex-row justify-between">
<p class="text-sm font-semibold">Sie haben die offline Variant zu diesem Ausweis angefordert. Bitte übermitteln Sie uns die letzten drei Jahre der Energieabrechnungen Ihres Energieversorgers.</p> <span>Baujahr</span>
{:else} <span
<p class="text-sm font-semibold">Der Ausweis wurde von Ihnen freigegeben und befindet sich in Prüfung vom IB Cornelsen</p> class="font-bold text-base-content"
{/if} title="Gebäude / Heizung"
{/if} >{aufnahme.baujahr_gebaeude[0] || "N/A"} /
{#await calculations then calculations} {aufnahme.baujahr_heizung[0] || "N/A"}</span
<div class="flex flex-col gap-2"> >
<div class="flex flex-row justify-between"> </div>
<span>Energieverbrauch</span> <div class="flex flex-row justify-between">
<span class="font-bold text-base-content" <span>Wohnfläche</span>
>{calculations?.endEnergieVerbrauchGesamt}kWh/A</span <span class="font-bold text-base-content"
>{aufnahme.flaeche
? `${aufnahme.flaeche}m²`
: "N/A"}</span
>
</div>
<div class="flex flex-row justify-between">
<span>ID</span>
<span class="font-bold text-base-content"
>{id}</span
>
</div>
</div>
{/await}
<div class="flex flex-row justify-end items-center gap-4 mt-4">
{#if !ausweis.storniert && !ausweis.ausgestellt}
<!--
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?uid={ausweis.id}"
>Stornieren</a>
-->
{/if}
{#if ausweis.bestellt && (!rechnung || rechnung.bezahlmethode === Enums.Bezahlmethoden.rechnung)}
<!-- <a href="/energieausweis-erstellen/bezahlung?uid={ausweis.id}" class="button text-sm">Bezahlen</a> -->
{/if}
{#if !ausweis.ausgestellt && (!ausweis.bestellt || (ausweis.ausweistyp === Enums.AusweisTyp.Beratung || ausweis.ausweistyp === Enums.AusweisTyp.Offline || ausweis.ausweistyp === Enums.AusweisTyp.OfflineXL || ausweis.ausweistyp === Enums.AusweisTyp.BeratungXL))}
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-gewerbe?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
<a
class="button text-sm"
href="/energieausweis-erstellen/bedarfsausweis-wohngebaeude?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.GEGNachweisWohnen}
<a
class="button text-sm"
href="/angebot-anfragen/geg-nachweis-wohnen-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.GEGNachweisGewerbe}
<a
class="button text-sm"
href="/angebot-anfragen/geg-nachweis-gewerbe-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe}
<a
class="button text-sm"
href="/angebot-anfragen/bedarfsausweis-gewerbe-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{/if}
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-gewerbe?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
<a
class="button text-sm"
href="/energieausweis-erstellen/bedarfsausweis-wohngebaeude?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.GEGNachweisWohnen}
<a
class="button text-sm"
href="/angebot-anfragen/geg-nachweis-wohnen-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.GEGNachweisGewerbe}
<a
class="button text-sm"
href="/angebot-anfragen/geg-nachweis-gewerbe-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe}
<a
class="button text-sm"
href="/angebot-anfragen/bedarfsausweis-gewerbe-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{/if}
{/if}
{#if benutzer.rolle === Enums.BenutzerRolle.ADMIN}
<!-- TODO -->
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?id={ausweis.id}"
>Formular</a>
{:else if ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-gewerbe?id={ausweis.id}"
>Formular</a>
{/if}
{/if}
{#if benutzer.rolle === Enums.BenutzerRolle.ADMIN}
<button class="button text-sm" on:click={ausweisAusstellen}>A</button>
<button class="button text-sm" on:click={stornieren}>S</button>
<button class="button text-sm" on:click={registriernummerAnfordern}>R</button>
{/if}
<a
class="p-2 rounded-lg hover:bg-gray-200"
title="PDF Herunterladen"
target="_blank"
href="/pdf/ansichtsausweis?id={ausweis.id}"
> >
</div> <img src="/images/ausweis.webp" width="32" alt="Energieausweis">
<div class="flex flex-row justify-between"> </a>
<span>CO2 Ausstoß</span> <a
<span class="font-bold text-base-content" class="p-2 rounded-lg hover:bg-gray-200"
>{calculations?.co2EmissionenGesamt}Kg/A</span title="PDF Herunterladen"
> target="_blank"
</div> href="/pdf/datenblatt?id={ausweis.id}"
<div class="flex flex-row justify-between">
<span>Erstellungsdatum</span>
<span class="font-bold text-base-content"
>{moment(aufnahme.erstellungsdatum).format(
"DD.MM.YYYY"
)}</span
>
</div>
<div class="flex flex-row justify-between">
<span>Baujahr</span>
<span
class="font-bold text-base-content"
title="Gebäude / Heizung"
>{aufnahme.baujahr_gebaeude[0] || "N/A"} /
{aufnahme.baujahr_heizung[0] || "N/A"}</span
>
</div>
<div class="flex flex-row justify-between">
<span>Wohnfläche</span>
<span class="font-bold text-base-content"
>{aufnahme.flaeche
? `${aufnahme.flaeche}m²`
: "N/A"}</span
>
</div>
<div class="flex flex-row justify-between">
<span>ID</span>
<span class="font-bold text-base-content"
>{id}</span
> >
<img src="/images/datenblatt.webp" width="32" alt="Datenblatt">
</a>
</div> </div>
</div> </div>
{/await}
<div class="flex flex-row justify-end items-center gap-4 mt-4">
{#if !ausweis.storniert && !ausweis.ausgestellt}
<!--
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?uid={ausweis.id}"
>Stornieren</a>
-->
{/if}
{#if ausweis.bestellt && (!rechnung || rechnung.bezahlmethode === Enums.Bezahlmethoden.rechnung)}
<!-- <a href="/energieausweis-erstellen/bezahlung?uid={ausweis.id}" class="button text-sm">Bezahlen</a> -->
{/if}
{#if !ausweis.ausgestellt && (!ausweis.bestellt || (ausweis.ausweistyp === Enums.AusweisTyp.Beratung || ausweis.ausweistyp === Enums.AusweisTyp.Offline || ausweis.ausweistyp === Enums.AusweisTyp.OfflineXL || ausweis.ausweistyp === Enums.AusweisTyp.BeratungXL))}
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-gewerbe?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
<a
class="button text-sm"
href="/energieausweis-erstellen/bedarfsausweis-wohngebaeude?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.GEGNachweisWohnen}
<a
class="button text-sm"
href="/angebot-anfragen/geg-nachweis-wohnen-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.GEGNachweisGewerbe}
<a
class="button text-sm"
href="/angebot-anfragen/geg-nachweis-gewerbe-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe}
<a
class="button text-sm"
href="/angebot-anfragen/bedarfsausweis-gewerbe-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{/if}
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-gewerbe?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
<a
class="button text-sm"
href="/energieausweis-erstellen/bedarfsausweis-wohngebaeude?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.GEGNachweisWohnen}
<a
class="button text-sm"
href="/angebot-anfragen/geg-nachweis-wohnen-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.GEGNachweisGewerbe}
<a
class="button text-sm"
href="/angebot-anfragen/geg-nachweis-gewerbe-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe}
<a
class="button text-sm"
href="/angebot-anfragen/bedarfsausweis-gewerbe-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{/if}
{/if}
{#if benutzer.rolle === Enums.BenutzerRolle.ADMIN}
<!-- TODO -->
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?id={ausweis.id}"
>Formular</a>
{:else if ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
<a
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-gewerbe?id={ausweis.id}"
>Formular</a>
{/if}
{/if}
{#if benutzer.rolle === Enums.BenutzerRolle.ADMIN}
<button class="button text-sm" on:click={ausweisAusstellen}>A</button>
<button class="button text-sm" on:click={stornieren}>S</button>
<button class="button text-sm" on:click={registriernummerAnfordern}>R</button>
{/if}
<a
class="p-2 rounded-lg hover:bg-gray-200"
title="PDF Herunterladen"
target="_blank"
href="/pdf/ansichtsausweis?id={ausweis.id}"
>
<img src="/images/ausweis.webp" width="32" alt="Energieausweis">
</a>
<a
class="p-2 rounded-lg hover:bg-gray-200"
title="PDF Herunterladen"
target="_blank"
href="/pdf/datenblatt?id={ausweis.id}"
>
<img src="/images/datenblatt.webp" width="32" alt="Datenblatt">
</a>
</div> </div>
<div class="flex-shrink-0 bg-gray-100 flex flex-col border text-xl rounded-lg p-4">
<p><b>Ausweisdaten</b><br>Anlass: Vermietung/Verkauf<br>
Gebäudetyp: Mehrfamilienhaus<br>
Anzahl Wohneinheiten: 3<br>
Keller beheizt / DG beheizt<br>
Gebäudeteil: gesamt<br>
<br>
<b>Heizverbräuche (kWh, kg)</b><br>vom 03.2022 - 03.2025<br>
Erdgas 13600, 14600, 15000<br>Brennholz 400, 500, 600<br>
Warmwasser enthalten, 20%<br>
Alternative Energieversorgung: Warmwasser, Heizung, Lüftung, Kühlung<br>
Leerstand 20%, Fensterlüftung, Kühlung<br><br>
<b>Sanierungszustand:</b><br>Zentralheizung, Warmwasserrohre gedämmt, Brennwertkessel, Photovoltaik, Dreifachverglasung, alle Fenster dicht, Dachgeschoß gedämmt, Außenwand gedämmt</p>
</div>
</div> </div>
<!-- Zweiter Block: Ansprechpartner und Ausweisdaten in zwei Spalten -->
<div class="flex flex-row md:flex-row gap-4 mb-4">
<p class="text-lg text-gray-700 mb-1">
<strong>Besteller:</strong> Norma Müller
</p>
<p class="text-lg text-gray-700">
<strong>Telefon:</strong> 0700 / 123456
</p>
<p class="text-lg text-gray-700">
<strong>E-Mail:</strong> norma.mueller@web.de
</p>
<p class="text-lg text-gray-700">
<strong>Erstelldatum:</strong> 22.03.2025
</p>
</div>
<!-- Fußzeile: Navigation (1/3) -->
<div class="border-t pt-4 flex justify-between items-center">
<button class="bg-gray-300 text-gray-700 px-2 py-1 rounded hover:bg-gray-400">
&laquo;
</button>
<p class="text-gray-700 font-medium">
Ausweis 1/3
</p>
<button class="bg-gray-300 text-gray-700 px-2 py-1 rounded hover:bg-gray-400">
&raquo;
</button>
</div>
</div>
</div> </div>
<dialog bind:this={hilfeModal} class="modal"> <dialog bind:this={hilfeModal} class="modal">

View File

@@ -148,7 +148,7 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
energieVerbrauchHeizung_2 * durchschnittsKlimafaktor; energieVerbrauchHeizung_2 * durchschnittsKlimafaktor;
let kuehlungsZuschlag = 0; let kuehlungsZuschlag = 0;
if (aufnahme.kuehlung) { if (aufnahme.kuehlung === "1") {
kuehlungsZuschlag = 6 * 3 * energetischeNutzflaeche; kuehlungsZuschlag = 6 * 3 * energetischeNutzflaeche;
} }

View File

@@ -499,7 +499,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
} }
} }
if (aufnahme.kuehlung) { if (aufnahme.kuehlung === "1") {
/** /**
* Kühlungszuschlag - Pauschale Erhöhung um 6kWh/m² * Kühlungszuschlag - Pauschale Erhöhung um 6kWh/m²
* Primärenergiefaktor Strom * Primärenergiefaktor Strom

View File

@@ -26,7 +26,7 @@
<hr> <hr>
<div class="relative mb-6"> <div class="relative mb-6 hidden">
<button class="button flex flex-row rounded-lg gap-2 bg-secondary text-white text-center" on:click={toggleDropdown}> <button class="button flex flex-row rounded-lg gap-2 bg-secondary text-white text-center" on:click={toggleDropdown}>
Ausweis erstellen + Ausweis erstellen +
</button> </button>
@@ -47,7 +47,7 @@
{#if aufnahme.bilder.length > 0} {#if aufnahme.bilder.length > 0}
<Carousel perPage={3}> <Carousel perPage={3}>
{#each aufnahme.bilder as bild, i (i)} {#each aufnahme.bilder as bild, i (i)}
<img src="/bilder/{bild.id}.jpg" alt={bild.kategorie} class="max-h-[25vh] h-full w-full object-contain"> <img src="/bilder/{bild.id}.jpg" alt={bild.kategorie} class="max-h-[15vh] h-full w-full object-contain">
{/each} {/each}
<span slot="left-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronLeft size={24}></ChevronLeft></span> <span slot="left-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronLeft size={24}></ChevronLeft></span>
<span slot="right-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronRight size={24}></ChevronRight></span> <span slot="right-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronRight size={24}></ChevronRight></span>
@@ -74,7 +74,7 @@
} }
</style> </style>
<div class="my-4 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3"> <div class="my-4 grid grid-cols-1 md:grid-cols-1 lg:grid-cols-1">
{#each aufnahme.verbrauchsausweise_wohnen as ausweis} {#each aufnahme.verbrauchsausweise_wohnen as ausweis}
<DashboardAusweis {benutzer} {ausweis} {aufnahme} {objekt} rechnung={ausweis.rechnung}></DashboardAusweis> <DashboardAusweis {benutzer} {ausweis} {aufnahme} {objekt} rechnung={ausweis.rechnung}></DashboardAusweis>
{/each} {/each}

View File

@@ -229,4 +229,8 @@
Ja Ja
</li> </li>
</ul> </ul>
</div> </div>