diff --git a/public/images/formular/skala-verbrauchsausweis-gewerbe.png b/public/images/formular/skala-verbrauchsausweis-gewerbe.png
new file mode 100644
index 00000000..686e54f8
Binary files /dev/null and b/public/images/formular/skala-verbrauchsausweis-gewerbe.png differ
diff --git a/public/images/formular/SKALA-910.png b/public/images/formular/skala-verbrauchsausweis-wohnen.png
similarity index 100%
rename from public/images/formular/SKALA-910.png
rename to public/images/formular/skala-verbrauchsausweis-wohnen.png
diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts
index 6cc46fc7..81eb88cc 100644
--- a/src/astro-typesafe-api-caller.ts
+++ b/src/astro-typesafe-api-caller.ts
@@ -8,8 +8,8 @@ export const createCaller = createCallerFactory({
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
"auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"),
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
- "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
+ "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
"objekt": await import("../src/pages/api/objekt/index.ts"),
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
"ticket": await import("../src/pages/api/ticket/index.ts"),
@@ -17,9 +17,9 @@ export const createCaller = createCallerFactory({
"user/self": await import("../src/pages/api/user/self.ts"),
"verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"),
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
- "webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
"verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"),
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
+ "webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
"objekt/[uid]/bilder": await import("../src/pages/api/objekt/[uid]/bilder.ts"),
"objekt/[uid]": await import("../src/pages/api/objekt/[uid]/index.ts"),
})
\ No newline at end of file
diff --git a/src/components/AnsichtsausweisButton.svelte b/src/components/AnsichtsausweisButton.svelte
index a111aa9a..831c8dc7 100644
--- a/src/components/AnsichtsausweisButton.svelte
+++ b/src/components/AnsichtsausweisButton.svelte
@@ -1,11 +1,13 @@
@@ -60,8 +61,8 @@
diff --git a/src/components/Ausweis/PerformanceScore.svelte b/src/components/Ausweis/PerformanceScore.svelte
index 164d236a..8487f6c3 100644
--- a/src/components/Ausweis/PerformanceScore.svelte
+++ b/src/components/Ausweis/PerformanceScore.svelte
@@ -9,12 +9,20 @@
VerbrauchsausweisWohnenClient,
} from "./types.js";
import ThickArrowUp from "radix-svelte-icons/src/lib/icons/ThickArrowUp.svelte";
+ import { Enums } from "@ibcornelsen/database/client";
+ import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient;
export let aufnahme: AufnahmeClient;
export let objekt: ObjektClient;
+ export let ausweisart: Enums.Ausweisart;
- let maxPerformance = 250;
+ let maxPerformance = {
+ [Enums.Ausweisart.VerbrauchsausweisGewerbe]: 1000,
+ [Enums.Ausweisart.VerbrauchsausweisWohnen]: 250,
+ [Enums.Ausweisart.BedarfsausweisWohnen]: 250,
+ [Enums.Ausweisart.BedarfsausweisGewerbe]: 250
+ }[ausweisart];
/**
* We use linear interpolation to scale the value between the given boundaries.
@@ -54,7 +62,12 @@
let translation_2 = 0;
$: {
(async () => {
- const result = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
+ let result;
+ if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
+ result = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
+ } else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
+ result = await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis, aufnahme, objekt);
+ }
if (!result) {
return;
@@ -71,7 +84,11 @@
}
-

+ {#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
+

+ {:else if ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
+

+ {/if}
500 && aufnahme.nutzflaeche <= 50000) {
+ faktorHeizung = 4.53 * (aufnahme.nutzflaeche ** -0.215) + 0.27;
+ } else {
+ faktorHeizung = 0.71;
+ }
+
+ let tekHeizung = tekWerte[0] * faktorHeizung;
+ let tekWarmwasser = tekWerte[1] * faktorWarmwasser;
+ let tekLueftung = ausweis.stromverbrauch_enthaelt_lueftung ? tekWerte[2] : 0;
+
+ let tekEingebauteBeleuchtung = ausweis.stromverbrauch_enthaelt_beleuchtung ? tekWerte[3] : 0;
+ let tekKaelte = ausweis.stromverbrauch_enthaelt_kuehlung ? tekWerte[4] : 0;
+
+ let tekHilfsenergieKuehlung = ausweis.stromverbrauch_enthaelt_kuehlung ? tekWerte[5] : 0;
+ let tekBeEntfeuchtung = ausweis.stromverbrauch_enthaelt_kuehlung ? tekWerte[6] : 0;
+
+ // TODO: let tekAufzug = ausweis.nwaufzug ? 2 : 0;
+ let tekAufzug = 0;
+
+ let tekSonstiges = (ausweis.stromverbrauch_enthaelt_sonstige != null && ausweis.stromverbrauch_enthaelt_sonstige.length > 0) ? tekWerte[7] : 0;
+
+ let vergleichsWertWaerme = tekHeizung + tekKaelte + tekBeEntfeuchtung;
+ let vergleichsWertStrom = tekWarmwasser + tekLueftung + tekEingebauteBeleuchtung + tekHilfsenergieKuehlung + tekAufzug + tekSonstiges;
+
+ return [vergleichsWertWaerme, vergleichsWertStrom];
+}
+
+/**
+ * Gibt einen array bestehend aus
+ * [0]: Endenergieverbrauch
+ * [1]: Primärenergiebedarf
+ * zurück.
+ *
+ * @param Ausweis ausweis Ein Ausweis dessen Energiebedarf berechnet werden soll
+ * @return VerbrauchsausweisGewerbeCalculationResult
+ */
+export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient) {
+ if (!aufnahme || !objekt || !ausweis) {
+ return null;
+ }
+
+ const nutzflaeche = aufnahme.nutzflaeche || 0;
+
+ let startdatum = moment(ausweis.startdatum);
+
+ let klimafaktoren: Awaited> = [{
+ month: startdatum.month(),
+ year: startdatum.year(),
+ klimafaktor: 1
+ },
+ {
+ month: startdatum.month(),
+ year: startdatum.year() + 1,
+ klimafaktor: 1
+ },
+ {
+ month: startdatum.month(),
+ year: startdatum.year() + 2,
+ klimafaktor: 1
+ }];
+
+ try {
+ const response = await getKlimafaktoren(ausweis.startdatum, objekt.plz)
+
+ if (response) {
+ klimafaktoren = response
+ }
+ } catch (e) {
+ // TODO: Entweder setzen wir hier mit falschen Klimafaktoren fort, oder wir geben null zurück.
+ // Im Moment setzen wir einfach fort, aber das ist nicht unbedingt die beste Lösung.
+ // return null
+ }
+
+ // 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;
+ 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
+ }
+
+ 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
+ }
+
+ 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 energieVerbrauchWarmwasser_1 = 0;
+ let energieVerbrauchWarmwasser_2 = 0;
+
+ if (ausweis.warmwasser_enthalten && ausweis.anteil_warmwasser_1 != 0) {
+
+ // Wenn Warmwasser enthalten und Anteil bekannt
+ energieVerbrauchWarmwasser_1 = energieVerbrauchGesamt_1 * ((ausweis.anteil_warmwasser_1 || 0) / 100);
+ energieVerbrauchWarmwasser_2 = energieVerbrauchGesamt_2 * ((ausweis.anteil_warmwasser_2 || 0) / 100);
+
+ } else if (ausweis.warmwasser_enthalten && ausweis.anteil_warmwasser_1 == 0){
+ if (aufnahme.gebaeudetyp == "Krankenhäuser (ohne Forschung und Lehre)" || aufnahme.gebaeudetyp == "Krankenhäuser (ohne Forschung und Lehre) & teilstationäre Versorgung" || aufnahme.gebaeudetyp == "Schwimmhallen") {
+ energieVerbrauchWarmwasser_1 = energieVerbrauchGesamt_1 * 0.5;
+ energieVerbrauchWarmwasser_2 = energieVerbrauchGesamt_2 * ((ausweis.anteil_warmwasser_2 || 0) / 100);
+
+ } else {
+ energieVerbrauchWarmwasser_1 = energieVerbrauchGesamt_1 * 0.05;
+ energieVerbrauchWarmwasser_2 = energieVerbrauchGesamt_2 * ((ausweis.anteil_warmwasser_2 || 0) / 100);
+
+ }
+ } else
+ {
+ energieVerbrauchWarmwasser_1 = 0;
+ energieVerbrauchWarmwasser_2 = 0;
+ }
+
+ let kuehlungsZuschlag_1: number;
+ let kuehlungsZuschlag_2: number;
+ if (ausweis.wird_gekuehlt) {
+ kuehlungsZuschlag_1 = energieVerbrauchGesamt_1 * ((ausweis.anteil_kuehlung_1 || 0) / 100);
+ kuehlungsZuschlag_2 = energieVerbrauchGesamt_2 * ((ausweis.anteil_kuehlung_2 || 0) / 100);
+ } else {
+ kuehlungsZuschlag_1 = kuehlungsZuschlag_2 = 0;
+ }
+
+ // Leerstand wird in Prozent angegeben, muss hier aber in eine Zahl zwischen 0 und 1 umgerechnet werden.
+ let leerstand = (aufnahme.leerstand || 0) / 100;
+
+ let energieVerbrauchHeizung_1 = energieVerbrauchGesamt_1 - energieVerbrauchWarmwasser_1 - kuehlungsZuschlag_1;
+ let energieVerbrauchHeizung_2 = energieVerbrauchGesamt_2 - energieVerbrauchWarmwasser_2 - kuehlungsZuschlag_2;
+
+ let durchschnittsKlimafaktor = klimafaktoren.reduce((acc, c) => acc + c.klimafaktor, 0) / klimafaktoren.length;
+
+ let energieVerbrauchHeizungBereinigt_1 = energieVerbrauchHeizung_1 * durchschnittsKlimafaktor;
+ let energieVerbrauchHeizungBereinigt_2 = energieVerbrauchHeizung_2 * durchschnittsKlimafaktor;
+
+ let durchschnittsEnergieVerbrauchHeizungBereingt = (energieVerbrauchHeizungBereinigt_1 + energieVerbrauchHeizungBereinigt_2) / (3 * nutzflaeche);
+
+ let faktorDurchschnittsEnergieVerbrauchHeizungBereinigt = -0.0028 * durchschnittsEnergieVerbrauchHeizungBereingt + 0.9147;
+
+ if (faktorDurchschnittsEnergieVerbrauchHeizungBereinigt <= 0.25) {
+ faktorDurchschnittsEnergieVerbrauchHeizungBereinigt = 0.25;
+ } else if (faktorDurchschnittsEnergieVerbrauchHeizungBereinigt >= 1.0) {
+ faktorDurchschnittsEnergieVerbrauchHeizungBereinigt = 1.0;
+ }
+
+ let leerstandsZuschlagHeizung = faktorDurchschnittsEnergieVerbrauchHeizungBereinigt * leerstand * (energieVerbrauchHeizungBereinigt_1 + energieVerbrauchHeizungBereinigt_2);
+ let leerstandsZuschlagWarmwasser = leerstand * (energieVerbrauchWarmwasser_1 + energieVerbrauchWarmwasser_2);
+ let leerstandsZuschlagKuehlung = leerstand * (kuehlungsZuschlag_1 + kuehlungsZuschlag_2);
+
+
+ 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 leerstandsZuschlagStrom = leerstand * energieVerbrauchStrom;
+
+ let endEnergieVerbrauchStrom = (energieVerbrauchStrom + leerstandsZuschlagStrom) / (3 * nutzflaeche);
+ let primaerEnergieVerbrauchStrom = endEnergieVerbrauchStrom * 1.8;
+
+ let co2EmissionenStrom = endEnergieVerbrauchStrom * 0.560;
+
+ let endEnergieVerbrauchLeerstandsZuschlag = (leerstandsZuschlagHeizung + leerstandsZuschlagWarmwasser + leerstandsZuschlagKuehlung) / (3 * nutzflaeche);
+ 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 primaerEnergieVerbrauchLeerstandsZuschlag = endEnergieVerbrauchLeerstandsZuschlag * primaerfaktor;
+ let primaerEnergieVerbrauchKuehlungsZuschlag_1 = endEnergieVerbrauchKuehlungsZuschlag_1 * primaerfaktor;
+ let primaerEnergieVerbrauchKuehlungsZuschlag_2 = endEnergieVerbrauchKuehlungsZuschlag_2 * primaerfaktor_1;
+
+ let co2Emissionen_1 = endEnergieVerbrauch_1 * coe;
+ let co2Emissionen_2 = endEnergieVerbrauch_2 * coe_1;
+
+ let co2EmissionenLeerstandsZuschlag = endEnergieVerbrauchLeerstandsZuschlag * coe;
+ let co2EmissionenKuehlungsZuschlag_1 = endEnergieVerbrauchKuehlungsZuschlag_1 * coe;
+ let co2EmissionenKuehlungsZuschlag_2 = endEnergieVerbrauchKuehlungsZuschlag_2 * coe_1;
+
+ let endEnergieVerbrauchGesamt = endEnergieVerbrauch_1 + endEnergieVerbrauch_2 + endEnergieVerbrauchLeerstandsZuschlag;
+ let primaerEnergieVerbrauchGesamt = primaerEnergieVerbrauch_1 + primaerEnergieVerbrauch_2 + primaerEnergieVerbrauchLeerstandsZuschlag + primaerEnergieVerbrauchStrom;
+ let co2EmissionenGesamt = co2Emissionen_1 + co2Emissionen_2 + co2EmissionenLeerstandsZuschlag + co2EmissionenStrom;
+
+ let [vergleichsWertWaerme, vergleichsWertStrom] = vergleichsWertNichtWohngebaeude(ausweis, aufnahme);
+
+ // 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,
+ kuehlungsZuschlag_1 : Math.round(kuehlungsZuschlag_1),
+ kuehlungsZuschlag_2: Math.round(kuehlungsZuschlag_2),
+ durchschnittsKlimafaktor : Math.round(durchschnittsKlimafaktor,2),
+ 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,
+ klimafaktoren : klimafaktoren,
+ nutzflaeche : Math.round(nutzflaeche),
+ leerstand : leerstand,
+ leerstandsZuschlagHeizung: Math.round(leerstandsZuschlagHeizung),
+ leerstandsZuschlagWarmwasser: Math.round(leerstandsZuschlagWarmwasser),
+ leerstandsZuschlagKuehlung: Math.round(leerstandsZuschlagKuehlung),
+ endEnergieVerbrauchLeerstandsZuschlag: Math.round(endEnergieVerbrauchLeerstandsZuschlag),
+ endEnergieVerbrauchKuehlungsZuschlag_1: Math.round(endEnergieVerbrauchKuehlungsZuschlag_1),
+ endEnergieVerbrauchKuehlungsZuschlag_2: Math.round(endEnergieVerbrauchKuehlungsZuschlag_2),
+ coeeffkg : co2EmissionenGesamt,
+ energieVerbrauchGesamt_1: Math.round(energieVerbrauchGesamt_1),
+ energieVerbrauchGesamt_2: Math.round(energieVerbrauchGesamt_2),
+ energieVerbrauchWarmwasser_1: Math.round(energieVerbrauchWarmwasser_1),
+ 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,
+ energieVerbrauchHeizungBereinigt_1: Math.round(energieVerbrauchHeizungBereinigt_1),
+ energieVerbrauchHeizungBereinigt_2: Math.round(energieVerbrauchHeizungBereinigt_2),
+ durchschnittsEnergieVerbrauchHeizungBereingt: Math.round(durchschnittsEnergieVerbrauchHeizungBereingt),
+ faktorDurchschnittsEnergieVerbrauchHeizungBereinigt: Math.round(faktorDurchschnittsEnergieVerbrauchHeizungBereinigt,3),
+ endEnergieVerbrauch_1: Math.round(endEnergieVerbrauch_1),
+ endEnergieVerbrauch_2: Math.round(endEnergieVerbrauch_2),
+ energieVerbrauchStrom: energieVerbrauchStrom,
+ leerstandsZuschlagStrom: leerstandsZuschlagStrom,
+ endEnergieVerbrauchStrom: Math.round(endEnergieVerbrauchStrom),
+ primaerEnergieVerbrauchStrom: Math.round(primaerEnergieVerbrauchStrom),
+ primaerEnergieVerbrauch_1: Math.round(primaerEnergieVerbrauch_1),
+ primaerEnergieVerbrauch_2: Math.round(primaerEnergieVerbrauch_2),
+ primaerEnergieVerbrauchLeerstandsZuschlag: Math.round(primaerEnergieVerbrauchLeerstandsZuschlag),
+ primaerEnergieVerbrauchKuehlungsZuschlag_1: Math.round(primaerEnergieVerbrauchKuehlungsZuschlag_1),
+ primaerEnergieVerbrauchKuehlungsZuschlag_2: Math.round(primaerEnergieVerbrauchKuehlungsZuschlag_2),
+ co2Emissionen_1: co2Emissionen_1,
+ co2Emissionen_2: co2Emissionen_2,
+ co2EmissionenLeerstandsZuschlag: co2EmissionenLeerstandsZuschlag,
+ co2EmissionenKuehlungsZuschlag_1: co2EmissionenKuehlungsZuschlag_1,
+ co2EmissionenKuehlungsZuschlag_2: co2EmissionenKuehlungsZuschlag_2,
+ co2EmissionenGesamt: Math.round(co2EmissionenGesamt),
+ endEnergieVerbrauchGesamt: Math.round(endEnergieVerbrauchGesamt),
+ primaerEnergieVerbrauchGesamt: Math.round(primaerEnergieVerbrauchGesamt),
+ vergleichsWertWaerme: vergleichsWertWaerme,
+ vergleichsWertStrom: vergleichsWertStrom,
+ }
+}
\ No newline at end of file
diff --git a/src/lib/Berechnungen/VerbrauchsausweisGewerbe/bauwerkskatalog.json b/src/lib/Berechnungen/VerbrauchsausweisGewerbe/bauwerkskatalog.json
new file mode 100644
index 00000000..18fff39d
--- /dev/null
+++ b/src/lib/Berechnungen/VerbrauchsausweisGewerbe/bauwerkskatalog.json
@@ -0,0 +1,54 @@
+{
+ "Verwaltungsgebäude (allgemein)": [48.5, 6.9, 3.2, 10.7, 2.6, 3.1, 0.1, 2.8],
+ "Parlaments- und Gerichtsgebäude": [49.9, 6.8, 3, 9.5, 1.2, 0.9, 1.7, 0.6],
+ "Ministerien u. Ämter u. Behörden": [48.3, 7.4, 3.7, 10.8, 1.5, 1.2, 1, 0.7],
+ "Polizeidienstgebäude": [52.4, 7.4, 2.5, 10.4, 0.5, 0.4, 0, 0.7],
+ "Gebäude für öffentliche Bereitschaftsdienste": [51.6, 10.2, 3, 7.8, 0.3, 0.2, 0, 4],
+ "Feuerwehrdienstgebäude": [50.8, 7.1, 3.2, 6.7, 0.3, 0.2, 0, 3.7],
+ "Bürogebäude": [49, 8.1, 4.7, 12.9, 2.9, 2.2, 0, 2.8],
+ "Bürogebäude - überwiegend Großraumbüros": [47.4, 12.8, 7.3, 16.6, 6, 4.3, 0, 0.9],
+ "Bankgebäude": [48, 6.4, 1.6, 10.7, 1.5, 1.1, 0, 0.6],
+ "Hochschule und Forschung (allgemein)": [66.5, 6.7, 13.3, 11, 3.4, 2.2, 3.8, 1.2],
+ "Gebäude für Lehre": [57.2, 5.6, 8.7, 8.5, 2.5, 1.5, 0.4, 1.1],
+ "Institute für Lehre und Forschung": [65, 7.6, 13.8, 11.7, 3.5, 2.4, 14.7, 2.1],
+ "Gebäude für Forschung ohne Lehre": [87.8, 7.4, 14.9, 14.8, 3.5, 2.4, 0, 1.2],
+ "Laborgebäude": [82.8, 8, 20.3, 13.5, 4.2, 2.9, 1.7, 1.3],
+ "Gesundheitswesen (allgemein)": [55.7, 15.3, 4.9, 17.4, 1.6, 1.3, 0, 1.1],
+ "Krankenhäuser (ohne Forschung und Lehre)": [64.1, 40.8, 10.4, 15.8, 1.7, 1.6, 0, 1.2],
+ "Krankenhäuser (ohne Forschung und Lehre) & teilstationäre Versorgung": [61.7, 33.6, 9.2, 15.9, 1.7, 1.6, 0, 0.9],
+ "Medizinische Einrichtungen für nicht stationäre Versorgung": [51.2, 8.6, 2.2, 18.3, 1.4, 1, 0, 1.3],
+ "Gebäude für Reha": [null, 59.4, 22.1, 6, 14.6, 0.9, 0.7, 0, 3.5],
+ "Bildungseinrichtungen (allgemein)": [49.7, 19.5, 4.1, 5.5, 0.2, 0.2, 0, 0.6],
+ "Schulen": [49.3, 22.4, 3.9, 5.5, 0.3, 0.2, 0, 0.6],
+ "Kinderbetreuungseinrichtungen": [50.4, 17.3, 4.2, 5.5, 0.1, 0.1, 0, 0.6],
+ "Kultureinrichtungen (allgemein)": [55.9, 7.5, 6.7, 9, 1.6, 1.2, 0.1, 0.3],
+ "Bibliotheken/Archive": [49, 5, 2.1, 14.3, 0.5, 0.4, 0, 0.3],
+ "Ausstellungsgebäude": [57.6, 7.7, 6.3, 7.8, 1.7, 1.3, 0.3, 0.2],
+ "Veranstaltungsgebäude": [58.4, 9.1, 7, 8.9, 1.3, 0.9, 0.1, 0.3],
+ "Gemeinschafts-/Gemeindehäuser": [63.6, 10, 5.6, 10.8, 0.8, 0.6, 0.1, 6],
+ "Opern/Theater": [58.8, 7.6, 9.1, 8.6, 2, 1.3, 0, 0.9],
+ "Sporteinrichtungen (allgemein)": [65.5, 27.3, 6.4, 14.5, 0.6, 0.6, 0, 1.9],
+ "Sporthallen": [68.6, 22, 4.6, 14.3, 0.2, 0.2, 0, 0.1],
+ "Fitnessstudios": [60.6, 62.2, 11.9, 24.5, 4, 4.2, 0, 8.9],
+ "Schwimmhallen": [63.8, 24.7, 8.3, 13.4, 1.1, 1.1, 30, 7.3],
+ "Gebäude für Sportaußenanlagen": [75.2, 22.5, 5.7, 10.2, 0, 0, 0, 5.5],
+ "Verpflegungseinrichtungen (allgemein)": [75.9, 77.7, 16.6, 18.1, 3.5, 3, 0, 24.8],
+ "Beherbergungsstätten (allgemein)": [52.1, 86, 9.1, 9.1, 3.3, 2.7, 0, 7],
+ "Hotels/Pensionen": [51.2, 89.1, 9.1, 8.6, 3.5, 2.9, 0, 6.8],
+ "Jugendherbergen u. Ferienhäuser": [63.4, 50.9, 1.9, 12.6, 0, 0, 0, 8.8],
+ "Gaststätten": [77.8, 79, 13.7, 19.7, 3.8, 3.3, 0, 25.2],
+ "Mensen u. Kantinen": [67, 67.3, 21, 11.4, 0.7, 0.5, 0, 22.7],
+ "Gewerbliche und industrielle Gebäude (allgemein)": [38.7, 12.6, 2.1, 9.6, 0.8, 0.5, 0, 12.2],
+ "Gewerbliche und industrielle Gebäude - schwere Arbeit": [null, 37.8, 20, 3.1, 11.8, 1, 0.6, 0, 22.6],
+ "Gewerbliche und industrielle Gebäude - Mischung aus leichter u. schwerer Arbeit": [36, 24.2, 3.8, 13, 2.1, 1.2, 0, 24.9],
+ "Gewerbliche und industrielle Gebäude - leichte Arbeit": [null, 38.1, 19.8, 3.3, 15.2, 1.9, 1.1, 0, 22.3],
+ "Gebäude für Lagerung": [38.1, 19.3, 3.3, 13.2, 1.7, 1, 0, 21.6],
+ "Verkaufsstätten (allgemein)": [47.9, 7.6, 5.6, 16.3, 2.6, 2, 0, 6.9],
+ "Kaufhäuser": [45.9, 6.4, 6, 16.6, 1.1, 0.9, 0, 2.7],
+ "Kaufhauszentren/Einkaufszentren": [47.3, 11.1, 7.4, 16.6, 4.6, 3.5, 0.1, 5.5],
+ "Märkte": [48.7, 6.2, 7.3, 17.3, 2.8, 2.1, 0, 10.5],
+ "Märkte mit sehr hohem Anteil von Kühlung für Lebensmittel": [48.7, 6.2, 7.3, 17.3, 2.8, 2.1, 0, 72.5],
+ "Läden": [46.8, 6.4, 1.9, 15.8, 0.9, 0.7, 0, 2.1],
+ "Läden mit sehr hohem Anteil von Kühlung für Lebensmittel": [46.8, 6.4, 1.9, 15.8, 0.9, 0.7, 0, 54.1],
+ "Fernmeldetechnik": [38.4, 4, 3.4, 16, 0, 0, 0, 53.7]
+}
\ No newline at end of file
diff --git a/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts b/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts
index 241733c9..bd8f6f6a 100644
--- a/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts
+++ b/src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts
@@ -1,5 +1,375 @@
-import { AufnahmeClient, BenutzerClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient } from "#components/Ausweis/types.js";
+import { AufnahmeClient, BenutzerClient, ObjektClient, UploadedGebaeudeBild, 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";
-export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: UploadedGebaeudeBild[], user: BenutzerClient) {
+export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisWohnenClient, 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()
+
+ // const template = VerbrauchsausweisWohnen2016Template as Template;
+
+ const berechnungen = await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis, aufnahme, objekt);
+ console.log(berechnungen);
+
+ const empfehlungen = getEmpfehlungen(ausweis, aufnahme, objekt)
+
+ const height = pages[0].getHeight()
+
+ const font = await pdf.embedFont(StandardFonts.Helvetica)
+ const bold = await pdf.embedFont(StandardFonts.HelveticaBold)
+
+ const form = pdf.getForm()
+ form.updateFieldAppearances(font)
+
+ const fillFormField = (name: string, value: string, fontSize: number = 8, alignment: TextAlignment = TextAlignment.Left) => {
+ const field = form.getTextField(name)
+ field.setFontSize(fontSize)
+ field.setText(value)
+ field.setAlignment(alignment)
+ }
+
+ const toggleCheck = (name: string, checked: boolean = true) => {
+ const field = form.getCheckBox(name)
+
+ if (checked) {
+ field.check()
+ } else {
+ field.uncheck()
+ }
+ }
+
+ // const gebaeudetyp = fillFormField("gebaeudetyp", aufnahme.gebaeudetyp || "")
+
+ // const adresse = fillFormField("adresse", objekt.adresse)
+
+
+ // const gebaeudeteil = fillFormField("gebaeudeteil", aufnahme.gebaeudeteil || "")
+
+ // const baujahr_gebaeude = fillFormField("baujahr_gebaeude", aufnahme.baujahr_gebaeude?.toString())
+
+ // const baujahr_heizung = fillFormField("baujahr_heizung", aufnahme.baujahr_heizung?.toString())
+
+ // const einheiten = fillFormField("einheiten", aufnahme.einheiten?.toString())
+
+ // const nutzflaeche = fillFormField("nutzflaeche", `${aufnahme.nutzflaeche?.toString()}m²`)
+
+ // fillFormField("energietraeger_heizung", `${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`)
+
+ // if (ausweis.warmwasser_enthalten) {
+ // fillFormField("energietraeger_warmwasser", `${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`)
+ // }
+
+ // toggleCheck("fensterlueftung", aufnahme.lueftung == Enums.Lueftungskonzept.Fensterlueftung)
+ // toggleCheck("schachtlueftung", aufnahme.lueftung == Enums.Lueftungskonzept.Schachtlueftung)
+ // toggleCheck("lueftungsanlage_ohne_waermerueckgewinnung", aufnahme.lueftung == Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung)
+ // toggleCheck("lueftungsanlage_waermerueckgewinnung", aufnahme.lueftung == Enums.Lueftungskonzept.LueftungsanlageMitWaermerueckgewinnung)
+
+ // toggleCheck("anlass_neubau", ausweis.ausstellgrund == "Neubau")
+ // toggleCheck("anlass_vermietung", ausweis.ausstellgrund == "Vermietung" || ausweis.ausstellgrund == "Verkauf")
+ // toggleCheck("anlass_modernisierung", ausweis.ausstellgrund == "Modernisierung")
+ // toggleCheck("anlass_sonstiges", ausweis.ausstellgrund == "Sonstiges")
+
+
+ // const gebaeudeBild = bilder.find(image => image.kategorie === "Gebaeude");
+
+
+ // /* -------------------------------- Seite 2 -------------------------------- */
+
+ // const co2Emissionen = fillFormField("co2emissionen", berechnungen?.co2EmissionenGesamt.toString(), 8, TextAlignment.Center)
+
+ const addEnergieverbrauchSkalaPfeile = async (page: PDFPage) => {
+ const pfeilNachUnten = await pdf.embedPng(fs.readFileSync(new URL("../../../public/images/pfeil-nach-unten.png", import.meta.url), "base64"))
+ const pfeilNachOben = await pdf.embedPng(fs.readFileSync(new URL("../../../public/images/pfeil-nach-oben.png", import.meta.url), "base64"))
+
+ // Wir müssen den berechneten Wert zwischen 0 und 1000 als Wert zwischen 0 und 1 festlegen
+ const endenergieverbrauchTranslationPercentage = Math.min(1000, Math.max(0, berechnungen?.endEnergieVerbrauchGesamt || 0)) / 1000
+ const primaerenergieverbrauchTranslationPercentage = Math.min(1000, Math.max(0, berechnungen?.primaerEnergieVerbrauchGesamt || 0)) / 1000
+
+ const minTranslation = 120
+ const maxTranslation = 457
+ const endenergieverbrauchTranslationX = minTranslation + (maxTranslation - minTranslation) * endenergieverbrauchTranslationPercentage;
+ const primaerenergieverbrauchTranslationX = minTranslation + (maxTranslation - minTranslation) * primaerenergieverbrauchTranslationPercentage;
+
+ const pfeilWidth = 20
+ const margin = 5;
+
+ page.drawImage(pfeilNachUnten, {
+ x: endenergieverbrauchTranslationX,
+ y: height - 215,
+ width: pfeilWidth,
+ height: 30
+ })
+
+ const endEnergieVerbrauchGesamtText = `${berechnungen?.endEnergieVerbrauchGesamt.toString()}kWh/(m²a)`;
+ const primaerEnergieVerbrauchGesamtText = `${berechnungen?.primaerEnergieVerbrauchGesamt.toString()}kWh/(m²a)`;
+
+ if (endenergieverbrauchTranslationPercentage > 0.5) {
+ page.drawText("Endenergieverbrauch", {
+ x: endenergieverbrauchTranslationX - margin - font.widthOfTextAtSize("Endenergieverbrauch", 10),
+ y: height - 193,
+ size: 10
+ })
+
+ page.drawText(endEnergieVerbrauchGesamtText, {
+ x: endenergieverbrauchTranslationX - margin - bold.widthOfTextAtSize(endEnergieVerbrauchGesamtText, 10),
+ y: height - 207,
+ size: 10,
+ font: bold
+ })
+ } else {
+ page.drawText("Endenergieverbrauch", {
+ x: endenergieverbrauchTranslationX + pfeilWidth + margin,
+ y: height - 193,
+ size: 10
+ })
+ page.drawText(endEnergieVerbrauchGesamtText, {
+ x: endenergieverbrauchTranslationX + pfeilWidth + margin,
+ y: height - 207,
+ size: 10,
+ font: bold
+ })
+ }
+
+ page.drawImage(pfeilNachOben, {
+ x: primaerenergieverbrauchTranslationX,
+ y: height - 298,
+ width: pfeilWidth,
+ height: 30
+ })
+
+ if (endenergieverbrauchTranslationPercentage > 0.5) {
+ page.drawText("Primärenergieverbrauch", {
+ x: primaerenergieverbrauchTranslationX - margin - font.widthOfTextAtSize("Primärenergieverbrauch", 10),
+ y: height - 280,
+ size: 10
+ })
+
+ page.drawText(primaerEnergieVerbrauchGesamtText, {
+ x: primaerenergieverbrauchTranslationX - margin - bold.widthOfTextAtSize(primaerEnergieVerbrauchGesamtText, 10),
+ y: height - 294,
+ size: 10,
+ font: bold
+ })
+ } else {
+ page.drawText("Primärenergieverbrauch", {
+ x: primaerenergieverbrauchTranslationX + pfeilWidth + margin,
+ y: height - 280,
+ size: 10
+ })
+ page.drawText(primaerEnergieVerbrauchGesamtText, {
+ x: primaerenergieverbrauchTranslationX + pfeilWidth + margin,
+ y: height - 294,
+ size: 10,
+ font: bold
+ })
+ }
+ }
+
+ addEnergieverbrauchSkalaPfeile(pages[1])
+ addEnergieverbrauchSkalaPfeile(pages[2])
+
+ // const primaerenergiebedarfIst = fillFormField("primaerenergiebedarf_ist", berechnungen?.primaerEnergieVerbrauchGesamt.toString())
+
+
+ /* -------------------------------- Seite 3 -------------------------------- */
+
+ // Verbräuche
+
+ const addVerbrauchGenerator = () => {
+ let i = 0;
+ let yOffset = 14.6;
+ const initialHeight = 435
+ const initialXOffset = 36;
+ return (zeitraum_von?: string, zeitraum_bis?: string, energietraeger?: string, primaerfaktor?: string, energieverbrauch?: string, anteil_warmwasser?: string, anteil_heizung?: string, klimafaktor?: string) => {
+ pages[2].drawText(zeitraum_von || "", {
+ x: initialXOffset,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font
+ })
+
+ pages[2].drawText(zeitraum_bis || "", {
+ x: initialXOffset + 47,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font
+ })
+
+ pages[2].drawText(energietraeger || "", {
+ x: initialXOffset + 94,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font
+ })
+
+ pages[2].drawText(primaerfaktor || "", {
+ x: initialXOffset + 317,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font
+ })
+
+ pages[2].drawText(energieverbrauch || "", {
+ x: initialXOffset + 351,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font
+ })
+
+ pages[2].drawText(anteil_warmwasser || "", {
+ x: initialXOffset + 402,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font
+ })
+
+ pages[2].drawText(anteil_heizung || "", {
+ x: initialXOffset + 453,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font
+ })
+
+ pages[2].drawText(klimafaktor || "", {
+ x: initialXOffset + 504,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font
+ })
+ i++;
+ }
+ }
+
+ 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()
+ );
+
+ 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()
+ );
+
+ /* -------------------------------- Seite 4 -------------------------------- */
+
+ const splitToSize = (text: string, size: number, font: PDFFont, fontSize: number) => {
+ const lines = []
+
+ let currentLine = ""
+ for (const char of text) {
+ if (font.widthOfTextAtSize(currentLine + char, fontSize) <= size) {
+ currentLine += char;
+ } else {
+ lines.push(currentLine)
+ currentLine = char;
+ }
+ }
+
+ lines.push(currentLine)
+
+ return lines.join("\n")
+ }
+
+ const addEmpfehlungenGenerator = () => {
+ let i = 0;
+ let yOffset = 43;
+ const initialHeight = 568
+ const initialXOffset = 36;
+ return (bauteil?: string, beschreibung?: string, alsEinzelmassnahme?: boolean, amortisationszeit?: string, kosten?: string) => {
+ pages[3].drawText((i + 1).toString(), {
+ x: initialXOffset,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font
+ })
+
+ pages[3].drawText(splitToSize(bauteil || "", 70, font, 8), {
+ x: initialXOffset + 25,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font,
+ lineHeight: 10
+ })
+
+ pages[3].drawText(splitToSize(beschreibung || "", 230, font, 8), {
+ x: initialXOffset + 98,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font,
+ lineHeight: 10
+ })
+
+
+
+ pages[3].drawText(amortisationszeit || "", {
+ x: initialXOffset + 403,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font
+ })
+
+ pages[3].drawText(kosten || "", {
+ x: initialXOffset + 451,
+ y: initialHeight - (i * yOffset),
+ size: 8,
+ font
+ })
+ i++;
+ }
+ }
+
+ const addEmpfehlung = addEmpfehlungenGenerator()
+
+ for (const empfehlung of empfehlungen) {
+ addEmpfehlung(empfehlung.anlagenteil, empfehlung.description, true, empfehlung.amortisationszeit, empfehlung.kosten)
+ }
+
+
+
+ // pdf.getForm().flatten()
+
+ return pdf.save();
}
\ No newline at end of file
diff --git a/src/lib/pdf/templates/GEG24_Nichtwohngebaeude.pdf b/src/lib/pdf/templates/GEG24_Nichtwohngebaeude.pdf
new file mode 100644
index 00000000..a1ed6ed7
Binary files /dev/null and b/src/lib/pdf/templates/GEG24_Nichtwohngebaeude.pdf differ
diff --git a/src/modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte b/src/modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte
index 58d200b1..65c06117 100644
--- a/src/modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte
+++ b/src/modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte
@@ -1001,6 +1001,7 @@ title="Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgesc
bind:ausweis
bind:gebaeude
bind:aufnahme
+ {ausweisart}
/>
diff --git a/src/modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte b/src/modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte
index 7aad51ab..e1d2bfc1 100644
--- a/src/modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte
+++ b/src/modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte
@@ -20,6 +20,7 @@
import { BenutzerClient } from "#components/Ausweis/types.js";
import GebaeudeDaten from "#components/Ausweis/GebaeudeDaten.svelte";
import { Enums } from "@ibcornelsen/database/client";
+ import moment from "moment";
export let ausweis: VerbrauchsausweisGewerbeClient;
export let user: BenutzerClient = {} as BenutzerClient;
@@ -28,7 +29,38 @@
export let bilder: UploadedGebaeudeBild[] = [];
export let ausweisart = Enums.Ausweisart.VerbrauchsausweisGewerbe;
- function automatischAusfüllen() {}
+ function automatischAusfüllen() {
+ aufnahme.baujahr_gebaeude = [1952];
+ aufnahme.baujahr_heizung = [1952];
+ aufnahme.saniert = true;
+ aufnahme.einheiten = 1;
+ aufnahme.gebaeudetyp = "Polizeidienstgebäude";
+ aufnahme.keller =
+ Enums.Heizungsstatus.NICHT_VORHANDEN;
+ aufnahme.dachgeschoss =
+ Enums.Heizungsstatus.NICHT_VORHANDEN;
+ aufnahme.lueftung = "Fensterlueftung";
+ aufnahme.kuehlung = "1";
+ ausweis.ausstellgrund = "Vermietung";
+ ausweis.verbrauch_1 = 15000;
+ ausweis.verbrauch_2 = 14000;
+ ausweis.verbrauch_3 = 16000;
+ aufnahme.flaeche = 152;
+ aufnahme.nutzflaeche = 172;
+ ausweis.keller_beheizt = true;
+
+ aufnahme.brennstoff_1 = "Erdgas H";
+ ausweis.einheit_1 = "kWh";
+ ausweis.anteil_warmwasser_1 = 18;
+ ausweis.startdatum = moment("01.01.2021").toDate();
+ objekt.plz = "21039";
+ objekt.ort = "Hamburg";
+ objekt.adresse = "Curslacker Deich 170";
+ aufnahme.gebaeudeteil = "Gesamtgebäude";
+
+ objekt = objekt;
+ ausweis = ausweis;
+ }
async function spaeterWeitermachen() {
}
@@ -45,6 +77,7 @@
bind:ausweis
bind:aufnahme={aufnahme}
bind:objekt={objekt}
+ {ausweisart}
/>
@@ -162,6 +195,7 @@
bind:ausweis
bind:objekt
bind:aufnahme
+ {ausweisart}
/>
diff --git a/src/modules/VerbrauchsausweisWohnen/VerbrauchsausweisWohnenModule.svelte b/src/modules/VerbrauchsausweisWohnen/VerbrauchsausweisWohnenModule.svelte
index 90c771aa..ff0a0e4b 100644
--- a/src/modules/VerbrauchsausweisWohnen/VerbrauchsausweisWohnenModule.svelte
+++ b/src/modules/VerbrauchsausweisWohnen/VerbrauchsausweisWohnenModule.svelte
@@ -185,6 +185,7 @@ const ausweisart: Enums.Ausweisart = "VerbrauchsausweisWohnen"
bind:ausweis
bind:aufnahme={aufnahme}
bind:objekt={objekt}
+ {ausweisart}
/>
@@ -291,6 +292,7 @@ const ausweisart: Enums.Ausweisart = "VerbrauchsausweisWohnen"
bind:ausweis
bind:objekt={objekt}
bind:aufnahme
+ {ausweisart}
/>
diff --git a/src/pages/pdf/ansichtsausweis.ts b/src/pages/pdf/ansichtsausweis.ts
index dc5cdc7e..f71add4a 100644
--- a/src/pages/pdf/ansichtsausweis.ts
+++ b/src/pages/pdf/ansichtsausweis.ts
@@ -1,5 +1,6 @@
-import { AufnahmeClient, BenutzerClient, getAusweisartFromUUID, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
+import { AufnahmeClient, BenutzerClient, getAusweisartFromUUID, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
+import { pdfVerbrauchsausweisGewerbe } from "#lib/pdf/pdfVerbrauchsausweisGewerbe.js";
import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen.js";
import { Enums } from "@ibcornelsen/database/client";
import { APIRoute } from "astro";
@@ -71,7 +72,12 @@ export const GET: APIRoute = async (Astro) => {
}
});
- const pdf = await pdfVerbrauchsausweisWohnen(ausweis, aufnahme, objekt, bilder, user);
+ let pdf: Uint8Array | null = null;
+ if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
+ pdf = await pdfVerbrauchsausweisWohnen(ausweis, aufnahme, objekt, bilder, user);
+ } else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
+ pdf = await pdfVerbrauchsausweisGewerbe(ausweis, aufnahme, objekt, bilder, user);
+ }
return new Response(pdf, {
headers: {
@@ -90,6 +96,7 @@ export const POST: APIRoute = async (Astro) => {
const aufnahme = JSON.parse(params.get("aufnahme"));
const objekt = JSON.parse(params.get("objekt"));
const bilder = JSON.parse(params.get("bilder"));
+ const ausweisart: Enums.Ausweisart = params.get("ausweisart")
let user: BenutzerClient = {};
@@ -103,7 +110,12 @@ export const POST: APIRoute = async (Astro) => {
}
- const pdf = await pdfVerbrauchsausweisWohnen(ausweis, aufnahme, objekt, bilder, user);
+ let pdf: Uint8Array | null = null;
+ if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
+ pdf = await pdfVerbrauchsausweisWohnen(ausweis, aufnahme, objekt, bilder, user);
+ } else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
+ pdf = await pdfVerbrauchsausweisGewerbe(ausweis, aufnahme, objekt, bilder, user);
+ }
return new Response(pdf, {
headers: {