Empfehlungen und Ansichtsausweis
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.",
|
||||||
|
|||||||
@@ -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> = {
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
|||||||
Reference in New Issue
Block a user