Bugfixes im Zuge der Datenbank Umstellung
This commit is contained in:
@@ -1,13 +1,22 @@
|
||||
---
|
||||
import moment from "moment";
|
||||
import Checkbox from "#components/Checkbox.svelte";
|
||||
import DatenblattFooter from "#components/DatenblattFooter.svelte";
|
||||
import DatenblattHeader from "#components/DatenblattHeader.svelte";
|
||||
import PDFLayout from "#layouts/PDFLayout.astro";
|
||||
import { GebaeudeStammdaten, VerbrauchsausweisWohnen, prisma } from "@ibcornelsen/database/client";
|
||||
import {
|
||||
GebaeudeStammdaten,
|
||||
VerbrauchsausweisWohnen,
|
||||
prisma,
|
||||
} from "@ibcornelsen/database/server";
|
||||
import { generate } from "@pdfme/generator";
|
||||
|
||||
import VerbrauchsausweisWohnen2016Template from "../../data/templates/verbrauchsausweis-wohnen-2016.json";
|
||||
import { convertAusweisData } from "#lib/AusweisData";
|
||||
import { variable } from "#lib/pdf/plugins/variables";
|
||||
import { text, image } from "@pdfme/schemas"
|
||||
|
||||
const base64 = Astro.url.searchParams.get("base64");
|
||||
let ausweis: (Partial<VerbrauchsausweisWohnen> & { gebaeude_stammdaten: Partial<GebaeudeStammdaten> }) | null = null;
|
||||
let ausweis:
|
||||
| (Partial<VerbrauchsausweisWohnen> & {
|
||||
gebaeude_stammdaten: Partial<GebaeudeStammdaten>;
|
||||
})
|
||||
| null = null;
|
||||
if (base64) {
|
||||
const buffer = Buffer.from(base64, "base64");
|
||||
const json = buffer.toString("utf-8");
|
||||
@@ -33,494 +42,22 @@ if (!ausweis) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
|
||||
const gebaeude = ausweis.gebaeude_stammdaten;
|
||||
const pdf = await generate({
|
||||
template: VerbrauchsausweisWohnen2016Template,
|
||||
plugins: { text, image, variable },
|
||||
inputs: [convertAusweisData(ausweis)],
|
||||
options: {
|
||||
author: "IB Cornelsen",
|
||||
creationDate: new Date(),
|
||||
creator: "IB Cornelsen",
|
||||
language: "de",
|
||||
title: "Verbrauchsausweis Wohnen 2016",
|
||||
},
|
||||
});
|
||||
|
||||
return new Response(pdf, {
|
||||
headers: {
|
||||
"Content-Type": "application/pdf",
|
||||
},
|
||||
});
|
||||
---
|
||||
|
||||
<PDFLayout title="Datenblatt">
|
||||
<div class="flex flex-col gap-20">
|
||||
<div class="flex flex-col gap-4">
|
||||
<DatenblattHeader />
|
||||
<div class="px-12 py-20 flex flex-col gap-2">
|
||||
<div class="flex flex-row justify-between items-center">
|
||||
<h2>Datenblatt Energieausweis</h2>
|
||||
<h2>Ausweis ID:</h2>
|
||||
</div>
|
||||
<h3>Gebäudedaten:</h3>
|
||||
<p>
|
||||
Adresse: {gebaeude.adresse}, {
|
||||
gebaeude.plz
|
||||
}
|
||||
{gebaeude.ort}
|
||||
</p>
|
||||
<div class="flex justify-between">
|
||||
<Checkbox checked={ausweis.ausstellgrund == "Neubau"}>
|
||||
Neubau
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={ausweis.ausstellgrund == "Vermietung" ||
|
||||
ausweis.ausstellgrund == "Verkauf"}
|
||||
>
|
||||
Vermietung/Verkauf
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={ausweis.ausstellgrund == "Modernisierung"}
|
||||
>
|
||||
Modernisierung
|
||||
</Checkbox>
|
||||
<Checkbox checked={ausweis.ausstellgrund == "Sonstiges"}>
|
||||
Sonstiges
|
||||
</Checkbox>
|
||||
</div>
|
||||
<div class="flex justify-between gap-4">
|
||||
<table>
|
||||
<tbody
|
||||
><tr>
|
||||
<td>Baujahr Gebäude:</td>
|
||||
<td
|
||||
>{
|
||||
gebaeude.baujahr_gebaeude
|
||||
}</td
|
||||
>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Baujahr Heizung:</td>
|
||||
<td
|
||||
>{
|
||||
gebaeude.baujahr_heizung
|
||||
}</td
|
||||
>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wohnfläche:</td>
|
||||
<td>{gebaeude.flaeche}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lüftungskonzept:</td>
|
||||
<td>{gebaeude.lueftung}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gebäudetyp:</td>
|
||||
<td
|
||||
>{
|
||||
gebaeude.gebaeudetyp
|
||||
}</td
|
||||
>
|
||||
</tr></tbody
|
||||
>
|
||||
</table>
|
||||
<table>
|
||||
<tbody
|
||||
><tr>
|
||||
<td>Dachgeschoss:</td>
|
||||
<td
|
||||
>{
|
||||
gebaeude.dachgeschoss
|
||||
? "Beheizt"
|
||||
: gebaeude
|
||||
.dachgeschoss
|
||||
? "Unbeheizt"
|
||||
: "Nicht Vorhanden"
|
||||
}</td
|
||||
>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beheizter Keller:</td>
|
||||
<td>{ausweis.keller_beheizt ? "Ja" : "Nein"}</td
|
||||
>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wohnungen:</td>
|
||||
<td>{gebaeude.einheiten}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Anlage zur Kühlung:</td>
|
||||
<td>{ausweis.wird_gekuehlt ? "Ja" : "Nein"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Leerstand:</td>
|
||||
<td>{gebaeude.leerstand}%</td
|
||||
>
|
||||
</tr></tbody
|
||||
>
|
||||
</table>
|
||||
</div>
|
||||
<div class="flex flex-row gap-8">
|
||||
<div class="flex flex-col">
|
||||
<h2>Heizverbrauch</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>
|
||||
Von: {
|
||||
moment(ausweis.startdatum).format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("1", "year")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>
|
||||
Von: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("1", "year")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("2", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>
|
||||
Von: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("2", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("3", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col">
|
||||
<h2>{ausweis.brennstoff_1}</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_1}</p>
|
||||
<p>{ausweis.einheit_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_2}</p>
|
||||
<p>{ausweis.einheit_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_3}</p>
|
||||
<p>{ausweis.einheit_1}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-row gap-8">
|
||||
<div class="flex flex-col">
|
||||
<h2>Heizverbrauch (Heizwert)</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>
|
||||
Von: {
|
||||
moment(ausweis.startdatum).format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("1", "year")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>
|
||||
Von: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("1", "year")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("2", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>
|
||||
Von: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("2", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("3", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col">
|
||||
<h2>{ausweis.brennstoff_1}</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_1}</p>
|
||||
<p>{ausweis.einheit_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_2}</p>
|
||||
<p>{ausweis.einheit_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_3}</p>
|
||||
<p>{ausweis.einheit_1}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>
|
||||
Warmwasser enthalten: {
|
||||
ausweis.warmwasser_enthalten ? "Ja" : "Nein"
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<DatenblattFooter />
|
||||
</div>
|
||||
<div class="flex flex-col gap-4">
|
||||
<DatenblattHeader />
|
||||
<div class="px-12 py-20 flex flex-col gap-2">
|
||||
<h2>Modernisierungsstand</h2>
|
||||
<h3>Heizungsanlage</h3>
|
||||
<div class="grid grid-cols-3">
|
||||
<Checkbox
|
||||
checked={gebaeude.zentralheizung ||
|
||||
false}
|
||||
>
|
||||
Zentral/Etage
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.einzelofen ||
|
||||
false}
|
||||
>
|
||||
Einzelöfen
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.durchlauf_erhitzer || false}
|
||||
>
|
||||
Durchlauferhitzer
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.standard_kessel ||
|
||||
false}
|
||||
>
|
||||
Standardkessel
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.solarsystem_warmwasser || false}
|
||||
>
|
||||
Solarsystem für Warmwasser
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.waermepumpe ||
|
||||
false}
|
||||
>
|
||||
Wärmepumpe
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.niedertemperatur_kessel || false}
|
||||
>
|
||||
Niedertemperaturkessel
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.brennwert_kessel ||
|
||||
false}
|
||||
>
|
||||
Brennwertkessel/Therme
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.warmwasser_rohre_gedaemmt || false}
|
||||
>
|
||||
Warmwasserrohre gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.heizungsrohre_gedaemmt || false}
|
||||
>
|
||||
Heizungsrohre gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.zirkulation ||
|
||||
false}
|
||||
>
|
||||
Zirkulation
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.raum_temperatur_regler || false}
|
||||
>
|
||||
Raumtemperraturregler
|
||||
</Checkbox>
|
||||
</div>
|
||||
<h3>Fenster/Dachfenster/Türen</h3>
|
||||
<div class="grid grid-cols-3">
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.einfach_verglasung || false}
|
||||
>
|
||||
Einfachglas
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.doppel_verglasung || false}
|
||||
>
|
||||
Doppelverglasung
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.isolier_verglasung || false}
|
||||
>
|
||||
Isolierverglasung
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.dreifach_verglasung || false}
|
||||
>
|
||||
Dreifachverglasung
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.fenster_dicht ||
|
||||
false}
|
||||
>
|
||||
Alle Fenster dicht
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.fenster_teilweise_undicht || false}
|
||||
>
|
||||
Fenster teilweise undicht
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.tueren_dicht ||
|
||||
false}
|
||||
>
|
||||
Alle Türen dicht
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.tueren_undicht ||
|
||||
false}
|
||||
>
|
||||
Türen teilweise undicht
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.rolllaeden_kaesten_gedaemmt || false}
|
||||
>
|
||||
Rolladenkästen gedämmt
|
||||
</Checkbox>
|
||||
</div>
|
||||
<h3>Wärmedämmung</h3>
|
||||
<div class="grid grid-cols-2">
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.aussenwand_gedaemmt || false}
|
||||
>
|
||||
Außenwand gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.keller_wand_gedaemmt || false}
|
||||
>
|
||||
Kelleraußenwand gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.keller_decke_gedaemmt || false}
|
||||
>
|
||||
Kellerdecke gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.dachgeschoss_gedaemmt || false}
|
||||
>
|
||||
Dachgeschoss gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.oberste_geschossdecke_gedaemmt || false}
|
||||
>
|
||||
Oberste Geschossdecke gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.oberste_geschossdecke_min_12cm_gedaemmt || false}
|
||||
>
|
||||
Oberste Geschossdecke min. 12cm gedämmt
|
||||
</Checkbox>
|
||||
</div>
|
||||
<Checkbox checked={true}>
|
||||
Die Angaben sind richtig und entsprechen dem aktuellen
|
||||
Stand.
|
||||
</Checkbox>
|
||||
<Checkbox checked={true}>
|
||||
Ich habe die AGB gelesen und akzeptiert.
|
||||
</Checkbox>
|
||||
<p>
|
||||
Die Angaben auf diesem Datenblatt wurden uns übermittelt und
|
||||
werden zur Berechnung und Ausstellung des Ausweises
|
||||
herangezogen.
|
||||
</p>
|
||||
</div>
|
||||
<DatenblattFooter />
|
||||
</div>
|
||||
</div>
|
||||
</PDFLayout>
|
||||
|
||||
<style is:global>
|
||||
table {
|
||||
@apply w-full h-full;
|
||||
}
|
||||
|
||||
td > table td {
|
||||
@apply px-0 py-0 border-t-0 border-b-0;
|
||||
}
|
||||
|
||||
td:has(table) {
|
||||
@apply p-0;
|
||||
}
|
||||
|
||||
td > table td:first-child {
|
||||
@apply border-l-0;
|
||||
}
|
||||
|
||||
td > table td:last-child {
|
||||
@apply border-r-0;
|
||||
}
|
||||
|
||||
td {
|
||||
@apply border border-black px-1 text-xs py-0.5;
|
||||
}
|
||||
|
||||
td:not(:first-child) {
|
||||
@apply bg-white;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@apply font-bold text-sm;
|
||||
}
|
||||
|
||||
p,
|
||||
label {
|
||||
@apply text-xs;
|
||||
}
|
||||
|
||||
.box {
|
||||
@apply border-4 border-pdf-yellow-bright bg-pdf-yellow-light rounded-lg;
|
||||
}
|
||||
|
||||
.box > * {
|
||||
@apply px-1 py-0.5;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user