Empfehlungen und Ansichtsausweis

This commit is contained in:
Moritz Utcke
2024-03-20 12:12:35 +07:00
parent 19d83c286e
commit 12d7f11c1b
4 changed files with 81 additions and 30 deletions

View File

@@ -20,7 +20,7 @@ export function energetischeNutzflaecheVerbrauchsausweisWohnen_2016(
if ((ausweis.gebaeude_aufnahme_allgemein.nutzflaeche || 0) > 0) { if ((ausweis.gebaeude_aufnahme_allgemein.nutzflaeche || 0) > 0) {
return ausweis.gebaeude_aufnahme_allgemein.nutzflaeche || 0; return ausweis.gebaeude_aufnahme_allgemein.nutzflaeche || 0;
} else { } else {
return (ausweis.gebaeude_aufnahme_allgemein.flaeche || 1) * faktorKeller; return (ausweis.gebaeude_aufnahme_allgemein.flaeche || 0) * faktorKeller;
} }
} }

View File

@@ -1,33 +1,34 @@
import type { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database/client"; import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { Enums } from "@ibcornelsen/database/client";
import moment from "moment"; import moment from "moment";
export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnen, gebaeude: GebaeudeStammdaten): { export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnenClient): {
title: string, title: string,
description: string, description: string,
anlagenteil: string anlagenteil: string
}[] { }[] {
let Warmwasserrohre_gedaemmt = gebaeude.warmwasser_rohre_gedaemmt; let Warmwasserrohre_gedaemmt = ausweis.gebaeude_aufnahme_allgemein.warmwasser_rohre_gedaemmt;
let Heizungsrohre_gedaemmt = gebaeude.heizungsrohre_gedaemmt; let Heizungsrohre_gedaemmt = ausweis.gebaeude_aufnahme_allgemein.heizungsrohre_gedaemmt;
let Waermepumpe = gebaeude.waermepumpe; let Waermepumpe = ausweis.gebaeude_aufnahme_allgemein.waermepumpe;
let Kellerwand_gedaemmt = gebaeude.keller_wand_gedaemmt; let Kellerwand_gedaemmt = ausweis.gebaeude_aufnahme_allgemein.keller_wand_gedaemmt;
let Keller = ausweis.keller_beheizt; let Keller = ausweis.gebaeude_aufnahme_allgemein.keller;
let Kellerdecke_Kalraeume_gedaemmt = gebaeude.keller_decke_gedaemmt; let Kellerdecke_Kalraeume_gedaemmt = ausweis.gebaeude_aufnahme_allgemein.keller_decke_gedaemmt;
let Brennwertkessel = gebaeude.brennwert_kessel; let Brennwertkessel = ausweis.gebaeude_aufnahme_allgemein.brennwert_kessel;
let baujahr_anlagesanlage = gebaeude.baujahr_heizung[0]; let baujahr_anlagesanlage = ausweis.gebaeude_aufnahme_allgemein.baujahr_heizung[0];
let Zentralheizung = gebaeude.zentralheizung; let Zentralheizung = ausweis.gebaeude_aufnahme_allgemein.zentralheizung;
let photovoltaik = gebaeude.photovoltaik; let photovoltaik = ausweis.gebaeude_aufnahme_allgemein.photovoltaik;
let Brennstoff = ausweis.brennstoff_1; let Brennstoff = ausweis.gebaeude_aufnahme_allgemein.brennstoff_1;
let Aussenwand_gedaemmt = gebaeude.aussenwand_gedaemmt; let Aussenwand_gedaemmt = ausweis.gebaeude_aufnahme_allgemein.aussenwand_gedaemmt;
let Dachgeschoss = gebaeude.dachgeschoss; let Dachgeschoss = ausweis.gebaeude_aufnahme_allgemein.dachgeschoss;
let Dachgeschoss_gedaemmt = gebaeude.dachgeschoss_gedaemmt; let Dachgeschoss_gedaemmt = ausweis.gebaeude_aufnahme_allgemein.dachgeschoss_gedaemmt;
let Oberste_Geschossdecke_gedaemmt = gebaeude.oberste_geschossdecke_gedaemmt; let Oberste_Geschossdecke_gedaemmt = ausweis.gebaeude_aufnahme_allgemein.oberste_geschossdecke_gedaemmt;
let Einfachglas = gebaeude.einfach_verglasung; let Einfachglas = ausweis.gebaeude_aufnahme_allgemein.einfach_verglasung;
let Doppelfenster = gebaeude.doppel_verglasung; let Doppelfenster = ausweis.gebaeude_aufnahme_allgemein.doppel_verglasung;
let Fenster_teilw_undicht = gebaeude.fenster_teilweise_undicht; let Fenster_teilw_undicht = ausweis.gebaeude_aufnahme_allgemein.fenster_teilweise_undicht;
let empfehlungen = []; let empfehlungen = [];
if (gebaeude.einfach_verglasung || (Doppelfenster && Fenster_teilw_undicht)) { if (ausweis.gebaeude_aufnahme_allgemein.einfach_verglasung || (Doppelfenster && Fenster_teilw_undicht)) {
empfehlungen.push({ empfehlungen.push({
"title" : "Erneuerung der Fenster", "title" : "Erneuerung der Fenster",
"description" : "Alte und undichte Fenster mit Wärmeschutzfenstern auswechseln.", "description" : "Alte und undichte Fenster mit Wärmeschutzfenstern auswechseln.",
@@ -35,13 +36,13 @@ export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnen, gebaeude: Geba
}); });
} }
if (gebaeude.dachgeschoss == "Unbeheizt" && !Oberste_Geschossdecke_gedaemmt) { if (ausweis.gebaeude_aufnahme_allgemein.dachgeschoss == Enums.Heizungsstatus.UNBEHEIZT && !Oberste_Geschossdecke_gedaemmt) {
empfehlungen.push({ empfehlungen.push({
"title" : "Zusätzliche Dämmung des Fußbodens des kalten Dachraumes", "title" : "Zusätzliche Dämmung des Fußbodens des kalten Dachraumes",
"description" : "Beim Einbringen sollten mindestens 16cm Dämmstoff verarbeitet werden. Das Einsparpotenzial ist für jeden zusätzlichen cm Dämmung sehr hoch.", "description" : "Beim Einbringen sollten mindestens 16cm Dämmstoff verarbeitet werden. Das Einsparpotenzial ist für jeden zusätzlichen cm Dämmung sehr hoch.",
"anlagenteil" : "Dach" "anlagenteil" : "Dach"
}); });
} else if (Dachgeschoss == "Beheizt" && !Dachgeschoss_gedaemmt) { } else if (Dachgeschoss == Enums.Heizungsstatus.BEHEIZT && !Dachgeschoss_gedaemmt) {
empfehlungen.push({ empfehlungen.push({
"title" : "Zusätzliche Dämmung des Daches bzw. Dachraumes", "title" : "Zusätzliche Dämmung des Daches bzw. Dachraumes",
"description" : "Beim Einbringen sollten mindestens 16cm Dämmstoff, wenn möglich, verarbeitet werden. Das Einsparpotenzial ist für jeden zusätzlichen cm Dämmung sehr hoch.", "description" : "Beim Einbringen sollten mindestens 16cm Dämmstoff, wenn möglich, verarbeitet werden. Das Einsparpotenzial ist für jeden zusätzlichen cm Dämmung sehr hoch.",
@@ -67,13 +68,13 @@ export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnen, gebaeude: Geba
}); });
} }
if (!Kellerdecke_Kalraeume_gedaemmt && Keller == "Unbeheizt") { if (!Kellerdecke_Kalraeume_gedaemmt && Keller == Enums.Heizungsstatus.UNBEHEIZT) {
empfehlungen.push({ empfehlungen.push({
"title" : "Nachträgliche Dämmung der Kellerdecke", "title" : "Nachträgliche Dämmung der Kellerdecke",
"description" : "Je nach Deckenhöhe, den vorhandenen Raum voll ausnutzen. Das Einsparpotenzial für jeden zusätzlichen cm Dämmung sehr hoch.", "description" : "Je nach Deckenhöhe, den vorhandenen Raum voll ausnutzen. Das Einsparpotenzial für jeden zusätzlichen cm Dämmung sehr hoch.",
"anlagenteil" : "Kellerdecke" "anlagenteil" : "Kellerdecke"
}); });
} else if (!Kellerwand_gedaemmt && Keller == "Beheizt") { } else if (!Kellerwand_gedaemmt && Keller == Enums.Heizungsstatus.BEHEIZT) {
empfehlungen.push({ empfehlungen.push({
"title" : "Nachträgliche Dämmung der Kellerwände", "title" : "Nachträgliche Dämmung der Kellerwände",
"description" : "Man sollte mit Dämmstärken ab 12cm planen. Das Einsparpotenzial für jeden zusätzlichen cm Dämmung sehr hoch.", "description" : "Man sollte mit Dämmstärken ab 12cm planen. Das Einsparpotenzial für jeden zusätzlichen cm Dämmung sehr hoch.",

View File

@@ -259,7 +259,7 @@ const propPanel: PropPanel<VariableSchema> = {
backgroundColor: "", backgroundColor: "",
opacity: DEFAULT_OPACITY, opacity: DEFAULT_OPACITY,
variable: undefined variable: undefined
}, }
}; };
export const variable: Plugin<VariableSchema> = { export const variable: Plugin<VariableSchema> = {

View File

@@ -10,9 +10,10 @@ import { Schema, Template } from "@pdfme/common";
import { Moment } from "moment"; import { Moment } from "moment";
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016"; import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016";
import moment from "moment"; import moment from "moment";
import { getEmpfehlungen } from "#lib/XML/getEmpfehlungen";
const base64 = Astro.url.searchParams.get("base64"); const base64 = Astro.url.searchParams.get("base64");
let ausweis: Partial<VerbrauchsausweisWohnenClient> | null = null; let ausweis: VerbrauchsausweisWohnenClient | null = null;
if (base64) { if (base64) {
const buffer = Buffer.from(base64, "base64"); const buffer = Buffer.from(base64, "base64");
const json = buffer.toString("utf-8"); const json = buffer.toString("utf-8");
@@ -32,6 +33,7 @@ if (base64) {
} }
const template = VerbrauchsausweisWohnen2016Template as Template; const template = VerbrauchsausweisWohnen2016Template as Template;
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis); const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis);
let inputs: Record<string, string> = {}; let inputs: Record<string, string> = {};
@@ -170,10 +172,58 @@ if (ausweis.zusaetzliche_heizquelle) {
); );
} }
const convertedInputs = { ...convertAusweisData(ausweis), ...inputs };
const empfehlungen = getEmpfehlungen(ausweis);
const addEmpfehlung = (() => {
let i = 0;
let columnWidth = [9, 25, 81, 13, 10, 17, 31];
const getPosition = (column: number) => {
return {
position: {
x:
13 +
columnWidth.reduce(
(a, c, i) => (i >= column ? a : a + c),
0
),
y: 94 + i * 15,
},
height: 15,
width: columnWidth[column],
type: "text",
fontSize: 8,
verticalAlign: "middle",
};
};
return (empfehlung: ReturnType<typeof getEmpfehlungen>[0]) => {
template.schemas[3][`empfehlung_${i}_nr`] = getPosition(0)
template.schemas[3][`empfehlung_${i}_bauteil`] = getPosition(1)
template.schemas[3][`empfehlung_${i}_beschreibung`] = getPosition(2)
template.schemas[3][`empfehlung_${i}_amortisationszeit`] = getPosition(5)
template.schemas[3][`empfehlung_${i}_kosten`] = getPosition(6)
convertedInputs[`empfehlung_${i}_nr`] = (i + 1).toString();
convertedInputs[`empfehlung_${i}_bauteil`] = empfehlung.anlagenteil;
convertedInputs[`empfehlung_${i}_beschreibung`] = empfehlung.description;
convertedInputs[`empfehlung_${i}_amortisationszeit`] = "";
convertedInputs[`empfehlung_${i}_kosten`] = "";
i++;
}
})()
for (const empfehlung of empfehlungen) {
addEmpfehlung(empfehlung);
}
const pdf = await generate({ const pdf = await generate({
template, template,
plugins: { text, image, variable }, plugins: { text, image, variable: { ...variable, pdf: variable.pdf.bind(convertedInputs), ui: variable.ui.bind(convertedInputs) } },
inputs: [{ ...convertAusweisData(ausweis), ...inputs }], inputs: [convertedInputs],
options: { options: {
author: "IB Cornelsen", author: "IB Cornelsen",
creationDate: new Date(), creationDate: new Date(),