\ No newline at end of file
diff --git a/src/components/FileGrid.svelte b/src/components/FileGrid.svelte
new file mode 100644
index 00000000..bcac887a
--- /dev/null
+++ b/src/components/FileGrid.svelte
@@ -0,0 +1,133 @@
+
+
+
\ No newline at end of file
diff --git a/src/components/ImageGrid.svelte b/src/components/ImageGrid.svelte
index 5300e911..81f147c1 100644
--- a/src/components/ImageGrid.svelte
+++ b/src/components/ImageGrid.svelte
@@ -5,7 +5,7 @@
import { RotateCounterClockwise, Trash, Upload } from "radix-svelte-icons";
export let images: UploadedGebaeudeBild[] = [];
- export let max: number = 4;
+ export let max: number = Infinity;
export let min: number = 1;
export let name: string = "";
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient;
@@ -74,7 +74,7 @@
{/each}
- {#each { length: max - images.filter(image => image.kategorie === kategorie).length } as _, i}
+ {#each { length: Math.max(0, Math.min(max, 4) - images.filter(image => image.kategorie === kategorie).length) } as _, i}

-window.addEventListener("scroll", (event) => {
- let scroll = window.scrollY;
- const skala = document.getElementById("skala")
+ const skala = document.getElementById("skala");
- if(scroll>=400){
- if (skala) {
- skala.classList.add('2xl:fixed','2xl:py-4','2xl:top-0','2xl:z-20');
- skala.classList.remove('w-full');
- skala.style.borderBottom = "3px solid #e6e6e6";
- }
+ if (!skala?.classList.contains("no-scroll")) {
+ window.addEventListener("scroll", (event) => {
+ let scroll = window.scrollY;
+ if (scroll >= 400) {
+ if (skala) {
+ skala.classList.add(
+ "2xl:fixed",
+ "2xl:py-4",
+ "2xl:top-0",
+ "2xl:z-20"
+ );
+ skala.classList.remove("w-full");
+ skala.style.borderBottom = "3px solid #e6e6e6";
+ }
+ const performanceBox =
+ document.getElementById("performance-box");
+ if (performanceBox) {
+ performanceBox.style.maxWidth = "688.5px";
+ }
+ const progressBox = document.getElementById("progress-box");
- const performanceBox = document.getElementById('performance-box')
- if (performanceBox) {
- performanceBox.style.maxWidth = "688.5px";
- }
- const progressBox = document.getElementById('progress-box');
+ if (progressBox) {
+ progressBox.style.maxWidth = "688.5px";
+ }
- if (progressBox) {
- progressBox.style.maxWidth = "688.5px"
- }
-
- document.getElementById('formInput-1')?.classList.add('2xl:mt-[370px]');
-
-
-
-
- }else{
- if (skala) {
- skala.classList.remove('2xl:fixed','2xl:py-4','2xl:top-0','2xl:z-20')
- skala.classList.add('w-full')
- skala.style.borderBottom = "none";
- }
-
-
- document.getElementById('formInput-1')?.classList.remove('2xl:mt-[370px]');
+ document
+ .getElementById("formInput-1")
+ ?.classList.add("2xl:mt-[370px]");
+ } else {
+ if (skala) {
+ skala.classList.remove(
+ "2xl:fixed",
+ "2xl:py-4",
+ "2xl:top-0",
+ "2xl:z-20"
+ );
+ skala.classList.add("w-full");
+ skala.style.borderBottom = "none";
+ }
+ document
+ .getElementById("formInput-1")
+ ?.classList.remove("2xl:mt-[370px]");
+ }
+ });
}
-
-
-});
-
-
@@ -82,7 +89,10 @@ window.addEventListener("scroll", (event) => {
content="✅ Jetzt Ihren Energieausweis online erstellen. Erhalten Sie Ihren online Energieausweis rechtssicher und nach aktueller GEG (vormals EnEV) vom Diplom Ingenieur geprüft."
/>
-
+
{
content="https://online-energieausweis.org/images/energieausweis-online-erstellen.jpg"
/>
- {title || 'Energieausweis online erstellen - Online Energieausweis'}
+ {title || "Energieausweis online erstellen - Online Energieausweis"}
-
-
+
{
md:grid-cols-[minmax(1fr,1fr)] md:gap-2 md:p-0
lg:grid-cols-[minmax(250px,250px)1fr] lg:gap-3 lg:p-4
xl:grid-cols-[minmax(350px,350px)1fr] xl:gap-4 xl:p-6
- 2xl:grid-cols-[minmax(300px,300px)1fr] 2xl:gap-5 2xl:p-6
- ">
+ 2xl:grid-cols-[minmax(300px,300px)1fr] 2xl:gap-5 2xl:p-6"
+ >
+
-
-
-
-
-
-
+
+
+
-
+
-
diff --git a/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.ts b/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.ts
index 2e97880f..672bdd1c 100644
--- a/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.ts
+++ b/src/lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.ts
@@ -98,24 +98,17 @@ export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis:
// Endenergieverbrauch
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
- let umrechnungsfaktor = 1, primaerfaktor = 1, coe = 1;
- let umrechnungsfaktor_1 = 1, primaerfaktor_1 = 1, coe_1 = 1;
+ let brennstoff_1 = { coe: 0, energietraeger: "", einheit: "", umrechnungsfaktor: 0, primaerenergiefaktor: 0 }, brennstoff_2 = { coe: 0, energietraeger: "", einheit: "", umrechnungsfaktor: 0, primaerenergiefaktor: 0 };
if (ausweis.brennstoff_1 && ausweis.einheit_1) {
- let result = getHeizwertfaktor(ausweis.brennstoff_1, ausweis.einheit_1);
- umrechnungsfaktor = result.umrechnungsfaktor
- primaerfaktor = result.primaerenergiefaktor
- coe = result.coe
+ brennstoff_1 = getHeizwertfaktor(ausweis.brennstoff_1, ausweis.einheit_1);
}
if (ausweis.brennstoff_2 && ausweis.einheit_2) {
- let result = getHeizwertfaktor(ausweis.brennstoff_2, ausweis.einheit_2);
- umrechnungsfaktor_1 = result.umrechnungsfaktor
- primaerfaktor_1 = result.primaerenergiefaktor
- coe_1 = result.coe
+ brennstoff_2 = getHeizwertfaktor(ausweis.brennstoff_2, ausweis.einheit_2);
}
- let energieVerbrauchGesamt_1 = ((ausweis.verbrauch_1 || 0) + (ausweis.verbrauch_2 || 0) + (ausweis.verbrauch_3 || 0)) * umrechnungsfaktor;
- let energieVerbrauchGesamt_2 = ((ausweis.verbrauch_4 || 0) + (ausweis.verbrauch_5 || 0) + (ausweis.verbrauch_6 || 0)) * umrechnungsfaktor_1;
+ let energieVerbrauchGesamt_1 = ((ausweis.verbrauch_1 || 0) + (ausweis.verbrauch_2 || 0) + (ausweis.verbrauch_3 || 0)) * brennstoff_1?.umrechnungsfaktor;
+ let energieVerbrauchGesamt_2 = ((ausweis.verbrauch_4 || 0) + (ausweis.verbrauch_5 || 0) + (ausweis.verbrauch_6 || 0)) * brennstoff_2?.umrechnungsfaktor;
let energieVerbrauchWarmwasser_1 = 0;
let energieVerbrauchWarmwasser_2 = 0;
@@ -180,7 +173,7 @@ export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis:
let endEnergieVerbrauch_1 = (energieVerbrauchHeizungBereinigt_1 + energieVerbrauchWarmwasser_1 + kuehlungsZuschlag_1) / (3 * nutzflaeche);
let endEnergieVerbrauch_2 = (energieVerbrauchHeizungBereinigt_2 + energieVerbrauchWarmwasser_2 + kuehlungsZuschlag_2) / (3 * nutzflaeche);
- let energieVerbrauchStrom = ausweis.strom_1 + ausweis.strom_2 + ausweis.strom_3;
+ let energieVerbrauchStrom = (ausweis.strom_1 || 0) + (ausweis.strom_2 || 0) + (ausweis.strom_3 || 0);
let leerstandsZuschlagStrom = leerstand * energieVerbrauchStrom;
let endEnergieVerbrauchStrom = (energieVerbrauchStrom + leerstandsZuschlagStrom) / (3 * nutzflaeche);
@@ -192,19 +185,19 @@ export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis:
let endEnergieVerbrauchKuehlungsZuschlag_1 = kuehlungsZuschlag_1 / (3 * nutzflaeche);
let endEnergieVerbrauchKuehlungsZuschlag_2 = kuehlungsZuschlag_2 / (3 * nutzflaeche);
- let primaerEnergieVerbrauch_1 = endEnergieVerbrauch_1 * primaerfaktor;
- let primaerEnergieVerbrauch_2 = endEnergieVerbrauch_2 * primaerfaktor_1;
+ let primaerEnergieVerbrauch_1 = endEnergieVerbrauch_1 * brennstoff_1.primaerenergiefaktor;
+ let primaerEnergieVerbrauch_2 = endEnergieVerbrauch_2 * brennstoff_2.primaerenergiefaktor;
- let primaerEnergieVerbrauchLeerstandsZuschlag = endEnergieVerbrauchLeerstandsZuschlag * primaerfaktor;
- let primaerEnergieVerbrauchKuehlungsZuschlag_1 = endEnergieVerbrauchKuehlungsZuschlag_1 * primaerfaktor;
- let primaerEnergieVerbrauchKuehlungsZuschlag_2 = endEnergieVerbrauchKuehlungsZuschlag_2 * primaerfaktor_1;
+ let primaerEnergieVerbrauchLeerstandsZuschlag = endEnergieVerbrauchLeerstandsZuschlag * brennstoff_1.primaerenergiefaktor;
+ let primaerEnergieVerbrauchKuehlungsZuschlag_1 = endEnergieVerbrauchKuehlungsZuschlag_1 * brennstoff_1.primaerenergiefaktor;
+ let primaerEnergieVerbrauchKuehlungsZuschlag_2 = endEnergieVerbrauchKuehlungsZuschlag_2 * brennstoff_2.primaerenergiefaktor;
- let co2Emissionen_1 = endEnergieVerbrauch_1 * coe;
- let co2Emissionen_2 = endEnergieVerbrauch_2 * coe_1;
+ let co2Emissionen_1 = endEnergieVerbrauch_1 * brennstoff_1.coe;
+ let co2Emissionen_2 = endEnergieVerbrauch_2 * brennstoff_2.coe;
- let co2EmissionenLeerstandsZuschlag = endEnergieVerbrauchLeerstandsZuschlag * coe;
- let co2EmissionenKuehlungsZuschlag_1 = endEnergieVerbrauchKuehlungsZuschlag_1 * coe;
- let co2EmissionenKuehlungsZuschlag_2 = endEnergieVerbrauchKuehlungsZuschlag_2 * coe_1;
+ let co2EmissionenLeerstandsZuschlag = endEnergieVerbrauchLeerstandsZuschlag * brennstoff_1.coe;
+ let co2EmissionenKuehlungsZuschlag_1 = endEnergieVerbrauchKuehlungsZuschlag_1 * brennstoff_1.coe;
+ let co2EmissionenKuehlungsZuschlag_2 = endEnergieVerbrauchKuehlungsZuschlag_2 * brennstoff_2.coe;
let endEnergieVerbrauchGesamt = endEnergieVerbrauch_1 + endEnergieVerbrauch_2 + endEnergieVerbrauchLeerstandsZuschlag;
let primaerEnergieVerbrauchGesamt = primaerEnergieVerbrauch_1 + primaerEnergieVerbrauch_2 + primaerEnergieVerbrauchLeerstandsZuschlag + primaerEnergieVerbrauchStrom;
@@ -214,26 +207,22 @@ export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis:
// Return all the steps that this function includes for debugging as a json object
return {
- umrechnungsfaktor : umrechnungsfaktor,
- primaerfaktor : primaerfaktor,
- coe : coe,
- umrechnungsfaktor_1 : umrechnungsfaktor_1,
- primaerfaktor_1 : primaerfaktor_1,
- coe_1 : coe_1,
+ brennstoff_1,
+ brennstoff_2,
kuehlungsZuschlag_1 : Math.round(kuehlungsZuschlag_1),
kuehlungsZuschlag_2: Math.round(kuehlungsZuschlag_2),
- durchschnittsKlimafaktor : Math.round(durchschnittsKlimafaktor,2),
+ durchschnittsKlimafaktor : Math.round(durchschnittsKlimafaktor * 100) / 100,
Klimafaktor_1 : klimafaktoren[0],
Klimafaktor_2 : klimafaktoren[1],
Klimafaktor_3 : klimafaktoren[2],
anteil_heizung_1: 1 - ((ausweis.anteil_warmwasser_1 || 0) / 100),
anteil_heizung_2: 1 - ((ausweis.anteil_warmwasser_2 || 0) / 100),
- verbrauch_1_kwh: ausweis.verbrauch_1 * umrechnungsfaktor,
- verbrauch_2_kwh: ausweis.verbrauch_2 * umrechnungsfaktor,
- verbrauch_3_kwh: ausweis.verbrauch_3 * umrechnungsfaktor,
- verbrauch_4_kwh: ausweis.verbrauch_4 * umrechnungsfaktor_1,
- verbrauch_5_kwh: ausweis.verbrauch_5 * umrechnungsfaktor_1,
- verbrauch_6_kwh: ausweis.verbrauch_6 * umrechnungsfaktor_1,
+ verbrauch_1_kwh: (ausweis.verbrauch_1 || 0) * brennstoff_1.umrechnungsfaktor,
+ verbrauch_2_kwh: (ausweis.verbrauch_2 || 0) * brennstoff_1.umrechnungsfaktor,
+ verbrauch_3_kwh: (ausweis.verbrauch_3 || 0) * brennstoff_1.umrechnungsfaktor,
+ verbrauch_4_kwh: (ausweis.verbrauch_4 || 0) * brennstoff_2.umrechnungsfaktor,
+ verbrauch_5_kwh: (ausweis.verbrauch_5 || 0) * brennstoff_2.umrechnungsfaktor,
+ verbrauch_6_kwh: (ausweis.verbrauch_6 || 0) * brennstoff_2.umrechnungsfaktor,
klimafaktoren : klimafaktoren,
nutzflaeche : Math.round(nutzflaeche),
leerstand : leerstand,
@@ -250,12 +239,12 @@ export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis:
energieVerbrauchWarmwasser_2: Math.round(energieVerbrauchWarmwasser_2),
energieVerbrauchHeizung_1: energieVerbrauchHeizung_1,
energieVerbrauchHeizung_2: energieVerbrauchHeizung_2,
- anteil_warmwasser_1: ausweis.anteil_warmwasser_1 / 100,
- anteil_warmwasser_2: ausweis.anteil_warmwasser_2 / 100,
+ anteil_warmwasser_1: (ausweis.anteil_warmwasser_1 || 0) / 100,
+ anteil_warmwasser_2: (ausweis.anteil_warmwasser_2 || 0) / 100,
energieVerbrauchHeizungBereinigt_1: Math.round(energieVerbrauchHeizungBereinigt_1),
energieVerbrauchHeizungBereinigt_2: Math.round(energieVerbrauchHeizungBereinigt_2),
durchschnittsEnergieVerbrauchHeizungBereingt: Math.round(durchschnittsEnergieVerbrauchHeizungBereingt),
- faktorDurchschnittsEnergieVerbrauchHeizungBereinigt: Math.round(faktorDurchschnittsEnergieVerbrauchHeizungBereinigt,3),
+ faktorDurchschnittsEnergieVerbrauchHeizungBereinigt: Math.round(faktorDurchschnittsEnergieVerbrauchHeizungBereinigt * 1000) / 1000,
endEnergieVerbrauch_1: Math.round(endEnergieVerbrauch_1),
endEnergieVerbrauch_2: Math.round(endEnergieVerbrauch_2),
energieVerbrauchStrom: energieVerbrauchStrom,
diff --git a/src/lib/XML/getEmpfehlungen.ts b/src/lib/XML/getEmpfehlungen.ts
index 5bb3e34b..8f0e8e03 100644
--- a/src/lib/XML/getEmpfehlungen.ts
+++ b/src/lib/XML/getEmpfehlungen.ts
@@ -1,8 +1,8 @@
-import { AufnahmeClient, ObjektClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
+import { AufnahmeClient, BedarfsausweisWohnenClient, ObjektClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
import { Enums } from "@ibcornelsen/database/client";
import moment from "moment";
-export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient): {
+export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient): {
title: string,
description: string,
anlagenteil: string,
diff --git a/src/lib/constants.ts b/src/lib/constants.ts
index 7fc82924..5ad6afed 100644
--- a/src/lib/constants.ts
+++ b/src/lib/constants.ts
@@ -60,3 +60,5 @@ export const SERVICES: Record<
Telefonberatung: 0,
},
};
+
+export const BASE_URI = process.env.NODE_ENV == "production" ? "https://online-energieausweis.org" : "http://localhost:3000";
\ No newline at end of file
diff --git a/src/lib/mail.ts b/src/lib/mail.ts
new file mode 100644
index 00000000..35c12660
--- /dev/null
+++ b/src/lib/mail.ts
@@ -0,0 +1,11 @@
+import * as nodemailer from "nodemailer";
+
+export const transport = nodemailer.createTransport({
+ host: "smtp.ionos.de",
+ port: 465,
+ secure: true,
+ auth: {
+ user: "info@online-energieausweis.org",
+ pass: "Katendeich5a2024!",
+ },
+});
diff --git a/src/lib/middleware/authorization.ts b/src/lib/middleware/authorization.ts
index 2b2df868..2d8cd910 100644
--- a/src/lib/middleware/authorization.ts
+++ b/src/lib/middleware/authorization.ts
@@ -91,4 +91,20 @@ export async function maybeAuthorizationMiddleware(input: any, ctx: TypesafeAPIC
export const authorizationHeaders = {
Authorization: z.string()
+}
+
+export async function adminMiddleware(input: any, ctx: TypesafeAPIContextWithRequest
) {
+ try {
+ const user = await authorizationMiddleware(input, ctx)
+
+ if (user.rolle === "ADMIN") {
+ return user
+ }
+ } catch(e) {
+ }
+
+ throw new APIError({
+ code: "FORBIDDEN",
+ "message": "Diese Route ist für Admins vorbehalten."
+ })
}
\ No newline at end of file
diff --git a/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts b/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts
index bd8f6f6a..1de9435d 100644
--- a/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts
+++ b/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts
@@ -1,13 +1,13 @@
-import { AufnahmeClient, BenutzerClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
+import { AufnahmeClient, BenutzerClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
import { getEmpfehlungen } from "#lib/XML/getEmpfehlungen.js";
import { Enums } from "@ibcornelsen/database/server";
import * as fs from "fs"
import moment from "moment";
-import { PDFDocument, PDFFont, PDFName, PDFNumber, PDFPage, StandardFonts, TextAlignment } from "pdf-lib";
+import { PDFDocument, PDFFont, PDFImage, PDFName, PDFNumber, PDFPage, StandardFonts, TextAlignment } from "pdf-lib";
-export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: UploadedGebaeudeBild[], user: BenutzerClient) {
+export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: UploadedGebaeudeBild[], user: BenutzerClient) {
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("./templates/GEG24_Nichtwohngebaeude.pdf", import.meta.url), "base64");
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
const pages = pdf.getPages()
@@ -15,7 +15,6 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisWohn
// const template = VerbrauchsausweisWohnen2016Template as Template;
const berechnungen = await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis, aufnahme, objekt);
- console.log(berechnungen);
const empfehlungen = getEmpfehlungen(ausweis, aufnahme, objekt)
@@ -44,6 +43,50 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisWohn
}
}
+ pages[0].drawText(aufnahme.gebaeudetyp || "", {
+ x: 181,
+ y: height - 191,
+ size: 10
+ })
+
+ pages[0].drawText(objekt.adresse || "", {
+ x: 181,
+ y: height - 210,
+ size: 10
+ })
+
+ pages[0].drawText(aufnahme.gebaeudeteil || "", {
+ x: 181,
+ y: height - 226,
+ size: 10
+ })
+
+ pages[0].drawText(aufnahme.baujahr_gebaeude?.toString() || "", {
+ x: 181,
+ y: height - 242.5,
+ size: 10
+ })
+
+ pages[0].drawText(aufnahme.baujahr_heizung?.toString() || "", {
+ x: 181,
+ y: height - 259,
+ size: 10
+ })
+
+ pages[0].drawText(aufnahme.nutzflaeche?.toString() || "", {
+ x: 181,
+ y: height - 295,
+ size: 10
+ })
+
+ pages[0].drawText(`${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`, {
+ x: 181,
+ y: height - 314,
+ size: 10
+ })
+
+
+
// const gebaeudetyp = fillFormField("gebaeudetyp", aufnahme.gebaeudetyp || "")
// const adresse = fillFormField("adresse", objekt.adresse)
@@ -76,7 +119,22 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisWohn
// toggleCheck("anlass_sonstiges", ausweis.ausstellgrund == "Sonstiges")
- // const gebaeudeBild = bilder.find(image => image.kategorie === "Gebaeude");
+ const gebaeudeBild = bilder.find(image => image.kategorie === Enums.BilderKategorie.Gebaeude);
+
+ if (gebaeudeBild) {
+ let image: PDFImage;
+ try {
+ image = await pdf.embedJpg(gebaeudeBild?.base64)
+ } catch(e) {
+ image = await pdf.embedPng(gebaeudeBild?.base64)
+ }
+ pages[0].drawImage(image, {
+ x: 424.5,
+ y: height - 321,
+ width: 111,
+ height: 143
+ })
+ }
// /* -------------------------------- Seite 2 -------------------------------- */
@@ -248,50 +306,44 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisWohn
const addVerbrauch = addVerbrauchGenerator();
- addVerbrauch(
- moment(ausweis.startdatum).format("MM.YYYY"),
- moment(ausweis.startdatum).add(1, "year").format("MM.YYYY"),
- aufnahme.brennstoff_1,
- berechnungen?.primaerfaktor.toString(),
- Math.round(berechnungen?.verbrauch_1_kwh).toString(),
- Math.round(
- berechnungen?.anteil_warmwasser_1 * berechnungen?.verbrauch_1_kwh
- ).toString(),
- Math.round(
- berechnungen?.anteil_heizung_1 * berechnungen?.verbrauch_1_kwh
- ).toString(),
- berechnungen?.klimafaktoren[0].klimafaktor.toString()
- );
+ if (!ausweis.warmwasser_enthalten) {
+ // Mit Warmwasserzuschlag
+ addVerbrauch(
+ moment(ausweis.startdatum).format("MM.YYYY"),
+ moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
+ aufnahme.brennstoff_1 || "",
+ berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
+ Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
+ "0",
+ Math.round(berechnungen?.energieVerbrauchHeizung_1 || 0).toString(),
+ berechnungen?.durchschnittsKlimafaktor.toString()
+ );
+ } else {
+ // Ohne Warmwasserzuschlag
+ addVerbrauch(
+ moment(ausweis.startdatum).format("MM.YYYY"),
+ moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
+ aufnahme.brennstoff_1 || "",
+ berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
+ Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
+ Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(),
+ Math.round(berechnungen?.energieVerbrauchHeizung_1 || 0).toString(),
+ berechnungen?.durchschnittsKlimafaktor.toString()
+ );
+ }
- addVerbrauch(
- moment(ausweis.startdatum).add(1, "year").format("MM.YYYY"),
- moment(ausweis.startdatum).add(2, "year").format("MM.YYYY"),
- aufnahme.brennstoff_1,
- berechnungen?.primaerfaktor.toString(),
- Math.round(berechnungen?.verbrauch_2_kwh).toString(),
- Math.round(
- berechnungen?.anteil_warmwasser_1 * berechnungen?.verbrauch_2_kwh
- ).toString(),
- Math.round(
- berechnungen?.anteil_heizung_1 * berechnungen?.verbrauch_2_kwh
- ).toString(),
- berechnungen?.klimafaktoren[0].klimafaktor.toString()
- );
-
- addVerbrauch(
- moment(ausweis.startdatum).add(2, "year").format("MM.YYYY"),
- moment(ausweis.startdatum).add(3, "year").format("MM.YYYY"),
- aufnahme.brennstoff_1,
- berechnungen?.primaerfaktor.toString(),
- Math.round(berechnungen?.verbrauch_3_kwh).toString(),
- Math.round(
- berechnungen?.anteil_warmwasser_1 * berechnungen?.verbrauch_3_kwh
- ).toString(),
- Math.round(
- berechnungen?.anteil_heizung_1 * berechnungen?.verbrauch_3_kwh
- ).toString(),
- berechnungen?.klimafaktoren[0].klimafaktor.toString()
- );
+ if (ausweis.zusaetzliche_heizquelle) {
+ addVerbrauch(
+ moment(ausweis.startdatum).format("MM.YYYY"),
+ moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
+ aufnahme.brennstoff_2 || "",
+ berechnungen?.brennstoff_2.primaerenergiefaktor.toString(),
+ Math.round(berechnungen?.energieVerbrauchGesamt_2 || 0).toString(),
+ Math.round(berechnungen?.energieVerbrauchWarmwasser_2 || 0).toString(),
+ Math.round(berechnungen?.energieVerbrauchHeizung_2 || 0).toString(),
+ berechnungen?.durchschnittsKlimafaktor.toString()
+ );
+ }
/* -------------------------------- Seite 4 -------------------------------- */
diff --git a/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts b/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts
index 0f3f2bd0..2e8afcfb 100644
--- a/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts
+++ b/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts
@@ -4,7 +4,7 @@ import { getEmpfehlungen } from "#lib/XML/getEmpfehlungen.js";
import { Enums } from "@ibcornelsen/database/server";
import * as fs from "fs"
import moment from "moment";
-import { PDFDocument, PDFFont, PDFPage, RotationTypes, StandardFonts, TextAlignment } from "pdf-lib";
+import { PDFDocument, PDFFont, PDFImage, PDFPage, RotationTypes, StandardFonts, TextAlignment } from "pdf-lib";
/* -------------------------------- Pdf Tools ------------------------------- */
@@ -74,11 +74,22 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
toggleCheck("anlass_modernisierung", ausweis.ausstellgrund == "Modernisierung")
toggleCheck("anlass_sonstiges", ausweis.ausstellgrund == "Sonstiges")
- console.log(bilder);
-
+ const gebaeudeBild = bilder.find(image => image.kategorie === Enums.BilderKategorie.Gebaeude);
- const gebaeudeBild = bilder.find(image => image.kategorie === "Gebaeude");
-
+ if (gebaeudeBild) {
+ let image: PDFImage;
+ try {
+ image = await pdf.embedJpg(gebaeudeBild?.base64)
+ } catch(e) {
+ image = await pdf.embedPng(gebaeudeBild?.base64)
+ }
+ pages[0].drawImage(image, {
+ x: 460.5,
+ y: height - 289,
+ width: 111,
+ height: 138
+ })
+ }
/* -------------------------------- Seite 2 -------------------------------- */
@@ -244,50 +255,109 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
const addVerbrauch = addVerbrauchGenerator();
- addVerbrauch(
- moment(ausweis.startdatum).format("MM.YYYY"),
- moment(ausweis.startdatum).add(1, "year").format("MM.YYYY"),
- aufnahme.brennstoff_1,
- berechnungen?.primaerfaktorww.toString(),
- Math.round(berechnungen?.verbrauch_1_kwh).toString(),
- Math.round(
- berechnungen?.anteil_warmwasser_1 * berechnungen?.verbrauch_1_kwh
- ).toString(),
- Math.round(
- berechnungen?.anteil_heizung_1 * berechnungen?.verbrauch_1_kwh
- ).toString(),
- berechnungen?.klimafaktoren[0].klimafaktor.toString()
- );
+ if (!ausweis.warmwasser_enthalten) {
+ // Mit Warmwasserzuschlag
+ addVerbrauch(
+ moment(ausweis.startdatum).format("MM.YYYY"),
+ moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
+ aufnahme.brennstoff_1,
+ berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
+ Math.round(berechnungen?.energieVerbrauchGesamt_1).toString(),
+ "0",
+ Math.round(berechnungen?.energieVerbrauchHeizung_1).toString(),
+ berechnungen?.durchschnittsKlimafaktor.toString()
+ );
+ } else {
+ // Ohne Warmwasserzuschlag
+ addVerbrauch(
+ moment(ausweis.startdatum).format("MM.YYYY"),
+ moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
+ aufnahme.brennstoff_1,
+ berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
+ Math.round(berechnungen?.energieVerbrauchGesamt_1).toString(),
+ Math.round(berechnungen?.energieVerbrauchWarmwasser_1).toString(),
+ Math.round(berechnungen?.energieVerbrauchHeizung_1).toString(),
+ berechnungen?.durchschnittsKlimafaktor.toString()
+ );
+ }
- addVerbrauch(
- moment(ausweis.startdatum).add(1, "year").format("MM.YYYY"),
- moment(ausweis.startdatum).add(2, "year").format("MM.YYYY"),
- aufnahme.brennstoff_1,
- berechnungen?.primaerfaktorww.toString(),
- Math.round(berechnungen?.verbrauch_2_kwh).toString(),
- Math.round(
- berechnungen?.anteil_warmwasser_1 * berechnungen?.verbrauch_2_kwh
- ).toString(),
- Math.round(
- berechnungen?.anteil_heizung_1 * berechnungen?.verbrauch_2_kwh
- ).toString(),
- berechnungen?.klimafaktoren[0].klimafaktor.toString()
- );
+ if (ausweis.zusaetzliche_heizquelle) {
+ addVerbrauch(
+ moment(ausweis.startdatum).format("MM.YYYY"),
+ moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
+ aufnahme.brennstoff_2,
+ berechnungen?.brennstoff_2.primaerenergiefaktor.toString(),
+ Math.round(berechnungen?.energieVerbrauchGesamt_2).toString(),
+ Math.round(berechnungen?.energieVerbrauchWarmwasser_2).toString(),
+ Math.round(berechnungen?.energieVerbrauchHeizung_2).toString(),
+ berechnungen?.durchschnittsKlimafaktor.toString()
+ );
+ }
- addVerbrauch(
- moment(ausweis.startdatum).add(2, "year").format("MM.YYYY"),
- moment(ausweis.startdatum).add(3, "year").format("MM.YYYY"),
- aufnahme.brennstoff_1,
- berechnungen?.primaerfaktorww.toString(),
- Math.round(berechnungen?.verbrauch_3_kwh).toString(),
- Math.round(
- berechnungen?.anteil_warmwasser_1 * berechnungen?.verbrauch_3_kwh
- ).toString(),
- Math.round(
- berechnungen?.anteil_heizung_1 * berechnungen?.verbrauch_3_kwh
- ).toString(),
- berechnungen?.klimafaktoren[0].klimafaktor.toString()
- );
+ if (!ausweis.warmwasser_enthalten) {
+ /**
+ * Dezentrale Warmwasserversorgung - Pauschale Erhöhung um 20kWh/m²
+ * @link https://www.bundesanzeiger.de/pub/publication/MRYM4nI84Sdlr0EIvvW?2
+ */
+ addVerbrauch(
+ moment(ausweis.startdatum).format("MM.YYYY"),
+ moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
+ "Warmwasserzuschlag",
+ berechnungen?.primaerfaktorww.toString(),
+ Math.round(berechnungen?.energieVerbrauchWarmwasser_1).toString(),
+ Math.round(berechnungen?.energieVerbrauchWarmwasser_1).toString(),
+ "0",
+ "0"
+ );
+ }
+
+ if (aufnahme.leerstand && aufnahme.leerstand > 0) {
+ /**
+ * Leerstandszuschlag
+ * @link https://www.bundesanzeiger.de/pub/publication/MRYM4nI84Sdlr0EIvvW?2
+ */
+ if (ausweis.warmwasser_enthalten && ausweis.warmwasser_anteil_bekannt) {
+ addVerbrauch(
+ moment(ausweis.startdatum).format("MM.YYYY"),
+ moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
+ "Leerstandszuschlag",
+ berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
+ Math.round(berechnungen?.leerstandsZuschlagHeizung + berechnungen?.leerstandsZuschlagWarmwasser).toString(),
+ Math.round(berechnungen?.leerstandsZuschlagWarmwasser).toString(),
+ Math.round(berechnungen?.leerstandsZuschlagHeizung).toString(),
+ berechnungen?.durchschnittsKlimafaktor.toString()
+ );
+ } else {
+ addVerbrauch(
+ moment(ausweis.startdatum).format("MM.YYYY"),
+ moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
+ "Leerstandszuschlag",
+ berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
+ Math.round(berechnungen?.leerstandsZuschlagHeizung + berechnungen?.leerstandsZuschlagWarmwasser).toString(),
+ "0",
+ "0",
+ berechnungen?.durchschnittsKlimafaktor.toString()
+ );
+ }
+ }
+
+ if (ausweis.wird_gekuehlt) {
+ /**
+ * Kühlungszuschlag - Pauschale Erhöhung um 6kWh/m²
+ * Primärenergiefaktor Strom
+ * @link https://www.bundesanzeiger.de/pub/publication/MRYM4nI84Sdlr0EIvvW?2
+ */
+ addVerbrauch(
+ moment(ausweis.startdatum).format("MM.YYYY"),
+ moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
+ "Leerstandszuschlag",
+ berechnungen?.primaerfaktorww.toString(),
+ Math.round(berechnungen?.kuehlungsZuschlag).toString(),
+ "0",
+ "0",
+ "1.8"
+ );
+ }
/* -------------------------------- Seite 4 -------------------------------- */
diff --git a/src/lib/pdf/templates/GEG24_Nichtwohngebaeude.pdf b/src/lib/pdf/templates/GEG24_Nichtwohngebaeude.pdf
index a1ed6ed7..5aee3f6c 100644
Binary files a/src/lib/pdf/templates/GEG24_Nichtwohngebaeude.pdf and b/src/lib/pdf/templates/GEG24_Nichtwohngebaeude.pdf differ
diff --git a/src/modules/Dashboard/DashboardAusweisePruefenModule.svelte b/src/modules/Dashboard/DashboardAusweisePruefenModule.svelte
index d3097179..cfded6f7 100644
--- a/src/modules/Dashboard/DashboardAusweisePruefenModule.svelte
+++ b/src/modules/Dashboard/DashboardAusweisePruefenModule.svelte
@@ -18,9 +18,6 @@
bilder: UploadedGebaeudeBild[],
events: Event[]
}[];
-
- console.log(ausweise);
-
diff --git a/src/modules/KundendatenModule.svelte b/src/modules/KundendatenModule.svelte
index 82dc2374..57034fd6 100644
--- a/src/modules/KundendatenModule.svelte
+++ b/src/modules/KundendatenModule.svelte
@@ -191,7 +191,7 @@
Verbrauchsausweis Wohnen {PRICES.VerbrauchsausweisWohnen[0]} €
-
+
diff --git a/src/modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte b/src/modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte
index 8d048ec4..3a42d8a1 100644
--- a/src/modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte
+++ b/src/modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte
@@ -85,7 +85,7 @@