Ansichtsausweis + Verbrauchsausweis Wohnen Test
This commit is contained in:
@@ -4,7 +4,7 @@ import * as fs from "fs";
|
||||
|
||||
const start = moment().set("year", 2019).set("month", 8).set("date", 1);
|
||||
|
||||
const end = moment().set("year", 2023).set("month", 1).set("date", 1);
|
||||
const end = moment().set("year", 2023).set("month", 2).set("date", 1);
|
||||
|
||||
let current = start.clone();
|
||||
|
||||
@@ -65,4 +65,4 @@ do {
|
||||
);
|
||||
|
||||
console.log(`Wrote ${year}-${month} to file.`);
|
||||
} while (current.add(1, "month").isBefore(end));
|
||||
} while (current.add(1, "month").isSameOrBefore(end));
|
||||
|
||||
3
src/lib/pdf/images/verbrauch-pfeil.svg
Normal file
3
src/lib/pdf/images/verbrauch-pfeil.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="165" height="225" viewBox="0 0 165 225" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M123.532 0H40.5V140H0L85.5 225L164.5 140H123.532V0Z" fill="#908580"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 186 B |
253
src/lib/pdf/pdfVerbrauchsausweisWohnen.ts
Normal file
253
src/lib/pdf/pdfVerbrauchsausweisWohnen.ts
Normal file
@@ -0,0 +1,253 @@
|
||||
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { generate } from "@pdfme/generator";
|
||||
import VerbrauchsausweisWohnen2016Template from "../../lib/pdf/templates/GEG24_Verbrauchsausweis.json";
|
||||
import { convertAusweisData } from "#lib/AusweisData";
|
||||
import { variable } from "#lib/pdf/plugins/variables";
|
||||
import { text, image } from "@pdfme/schemas";
|
||||
import { Schema, Template } from "@pdfme/common";
|
||||
import { Moment } from "moment";
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016";
|
||||
import moment from "moment";
|
||||
import { getEmpfehlungen } from "#lib/XML/getEmpfehlungen";
|
||||
|
||||
export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohnenClient) {
|
||||
const template = VerbrauchsausweisWohnen2016Template as Template;
|
||||
|
||||
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis);
|
||||
|
||||
let inputs: Record<string, string> = {};
|
||||
|
||||
// Verbrauchszeiträume
|
||||
const addVerbrauchszeitraum = (() => {
|
||||
let row = 0;
|
||||
let columnWidth = [16, 16, 80, 12, 18, 18, 18, 12];
|
||||
|
||||
const getPosition = (column: number) => {
|
||||
return {
|
||||
position: {
|
||||
x:
|
||||
15 +
|
||||
columnWidth.reduce(
|
||||
(a, c, i) => (i >= column ? a : a + c),
|
||||
0
|
||||
),
|
||||
y: 141 + row * 5,
|
||||
},
|
||||
height: 5,
|
||||
width: 14,
|
||||
type: "text",
|
||||
fontSize: 8,
|
||||
verticalAlign: "middle",
|
||||
};
|
||||
};
|
||||
|
||||
return (
|
||||
schema: Schema,
|
||||
start: Moment,
|
||||
end: Moment,
|
||||
energietraeger: string,
|
||||
primaerenergiefaktor: number,
|
||||
energieverbrauch: number,
|
||||
anteilWarmwasser: number,
|
||||
klimafaktor: number
|
||||
) => {
|
||||
inputs[`verbrauchszeitraum_${row}_start`] = start.format("MM.YYYY");
|
||||
inputs[`verbrauchszeitraum_${row}_end`] = end.format("MM.YYYY");
|
||||
inputs[`verbrauchszeitraum_${row}_energietraeger`] = energietraeger;
|
||||
inputs[`verbrauchszeitraum_${row}_primaerenergiefaktor`] =
|
||||
primaerenergiefaktor.toString();
|
||||
inputs[`verbrauchszeitraum_${row}_energieverbrauch`] =
|
||||
energieverbrauch.toString();
|
||||
inputs[`verbrauchszeitraum_${row}_anteil_warmwasser`] = Math.round(
|
||||
anteilWarmwasser * energieverbrauch
|
||||
).toString();
|
||||
inputs[`verbrauchszeitraum_${row}_anteil_heizung`] = Math.round(
|
||||
(1 - anteilWarmwasser) *
|
||||
energieverbrauch
|
||||
).toString();
|
||||
inputs[`verbrauchszeitraum_${row}_klimafaktor`] =
|
||||
klimafaktor.toString();
|
||||
|
||||
schema[`verbrauchszeitraum_${row}_start`] = getPosition(0);
|
||||
schema[`verbrauchszeitraum_${row}_end`] = getPosition(1);
|
||||
schema[`verbrauchszeitraum_${row}_energietraeger`] = getPosition(2);
|
||||
schema[`verbrauchszeitraum_${row}_primaerenergiefaktor`] =
|
||||
getPosition(3);
|
||||
schema[`verbrauchszeitraum_${row}_energieverbrauch`] = getPosition(4);
|
||||
schema[`verbrauchszeitraum_${row}_anteil_warmwasser`] = getPosition(5);
|
||||
schema[`verbrauchszeitraum_${row}_anteil_heizung`] = getPosition(6);
|
||||
schema[`verbrauchszeitraum_${row}_klimafaktor`] = getPosition(7);
|
||||
|
||||
row++;
|
||||
};
|
||||
})();
|
||||
|
||||
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum),
|
||||
moment(ausweis.startdatum).add("1", "year"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_1,
|
||||
berechnungen?.primaerfaktorww,
|
||||
berechnungen?.verbrauch_1_kwh,
|
||||
ausweis.anteil_warmwasser_1 / 100,
|
||||
berechnungen?.klimafaktoren[0].klimafaktor
|
||||
);
|
||||
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum).add("1", "year"),
|
||||
moment(ausweis.startdatum).add("2", "years"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_1,
|
||||
berechnungen?.primaerfaktorww,
|
||||
berechnungen?.verbrauch_2_kwh,
|
||||
ausweis.anteil_warmwasser_1 / 100,
|
||||
berechnungen?.klimafaktoren[1].klimafaktor
|
||||
);
|
||||
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum).add("2", "years"),
|
||||
moment(ausweis.startdatum).add("3", "years"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_1,
|
||||
berechnungen?.primaerfaktorww,
|
||||
berechnungen?.verbrauch_3_kwh,
|
||||
ausweis.anteil_warmwasser_1 / 100,
|
||||
berechnungen?.klimafaktoren[2].klimafaktor
|
||||
);
|
||||
|
||||
if (ausweis.zusaetzliche_heizquelle) {
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum),
|
||||
moment(ausweis.startdatum).add("1", "year"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_2,
|
||||
berechnungen?.primaerfaktorww_1,
|
||||
berechnungen?.verbrauch_4_kwh,
|
||||
ausweis.anteil_warmwasser_2 / 100,
|
||||
berechnungen?.klimafaktoren[0].klimafaktor
|
||||
);
|
||||
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum).add("1", "year"),
|
||||
moment(ausweis.startdatum).add("2", "years"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_2,
|
||||
berechnungen?.primaerfaktorww_1,
|
||||
berechnungen?.verbrauch_5_kwh,
|
||||
ausweis.anteil_warmwasser_2 / 100,
|
||||
berechnungen?.klimafaktoren[1].klimafaktor
|
||||
);
|
||||
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum).add("2", "years"),
|
||||
moment(ausweis.startdatum).add("3", "years"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_2,
|
||||
berechnungen?.primaerfaktorww_1,
|
||||
berechnungen?.verbrauch_6_kwh,
|
||||
ausweis.anteil_warmwasser_2 / 100,
|
||||
berechnungen?.klimafaktoren[1].klimafaktor
|
||||
);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
// Fügt den Header mit Registriernummer und GEG Datum hinzu.
|
||||
const addHeader = (page: number, includeRegistriernummer = true) => {
|
||||
if (includeRegistriernummer) {
|
||||
template.schemas[page]["ausweis.registriernummer"] = {
|
||||
position: { x: 153, y: 37 },
|
||||
height: 5,
|
||||
width: 35,
|
||||
type: "text",
|
||||
fontSize: 8,
|
||||
verticalAlign: "middle",
|
||||
};
|
||||
}
|
||||
|
||||
template.schemas[page]["geg_datum"] = {
|
||||
position: { x: 108, y: 21.7 },
|
||||
height: 5,
|
||||
width: 25,
|
||||
type: "text",
|
||||
fontSize: 8,
|
||||
verticalAlign: "middle",
|
||||
};
|
||||
}
|
||||
|
||||
for (let i = 0; i < template.schemas.length; i++) {
|
||||
if (i == template.schemas.length - 1) {
|
||||
// Die letzte Seite ist nur ein Anhang mit Erläuterungen, darauf ist keine Registriernummer vermerkt.
|
||||
addHeader(i, false);
|
||||
} else {
|
||||
addHeader(i);
|
||||
}
|
||||
}
|
||||
|
||||
convertedInputs["ausweis.registriernummer"] = "1231234";
|
||||
convertedInputs["geg_datum"] = "01.01.2024";
|
||||
|
||||
|
||||
const pdf = await generate({
|
||||
template,
|
||||
plugins: { text, image, variable: { ...variable, pdf: variable.pdf.bind(convertedInputs), ui: variable.ui.bind(convertedInputs) } },
|
||||
inputs: [convertedInputs],
|
||||
options: {
|
||||
author: "IB Cornelsen",
|
||||
creationDate: new Date(),
|
||||
creator: "IB Cornelsen",
|
||||
language: "de",
|
||||
title: "Verbrauchsausweis Wohnen GEG 2024",
|
||||
},
|
||||
});
|
||||
|
||||
return pdf;
|
||||
}
|
||||
@@ -1,16 +1,7 @@
|
||||
---
|
||||
import { generate } from "@pdfme/generator";
|
||||
import VerbrauchsausweisWohnen2016Template from "../../lib/pdf/templates/GEG24_Verbrauchsausweis.json";
|
||||
import { convertAusweisData } from "#lib/AusweisData";
|
||||
import { variable } from "#lib/pdf/plugins/variables";
|
||||
import { text, image } from "@pdfme/schemas";
|
||||
import { createCaller } from "#lib/caller";
|
||||
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { Schema, Template } from "@pdfme/common";
|
||||
import { Moment } from "moment";
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016";
|
||||
import moment from "moment";
|
||||
import { getEmpfehlungen } from "#lib/XML/getEmpfehlungen";
|
||||
import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen";
|
||||
|
||||
const base64 = Astro.url.searchParams.get("base64");
|
||||
let ausweis: VerbrauchsausweisWohnenClient | null = null;
|
||||
@@ -32,206 +23,7 @@ if (base64) {
|
||||
});
|
||||
}
|
||||
|
||||
const template = VerbrauchsausweisWohnen2016Template as Template;
|
||||
|
||||
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis);
|
||||
|
||||
let inputs: Record<string, string> = {};
|
||||
|
||||
// Verbrauchszeiträume
|
||||
const addVerbrauchszeitraum = (() => {
|
||||
let row = 0;
|
||||
let columnWidth = [16, 16, 80, 12, 18, 18, 18, 12];
|
||||
|
||||
const getPosition = (column: number) => {
|
||||
return {
|
||||
position: {
|
||||
x:
|
||||
15 +
|
||||
columnWidth.reduce(
|
||||
(a, c, i) => (i >= column ? a : a + c),
|
||||
0
|
||||
),
|
||||
y: 141 + row * 5,
|
||||
},
|
||||
height: 5,
|
||||
width: 14,
|
||||
type: "text",
|
||||
fontSize: 8,
|
||||
verticalAlign: "middle",
|
||||
};
|
||||
};
|
||||
|
||||
return (
|
||||
schema: Schema,
|
||||
start: Moment,
|
||||
end: Moment,
|
||||
energietraeger: string,
|
||||
primaerenergiefaktor: number,
|
||||
energieverbrauch: number,
|
||||
anteilWarmwasser: number,
|
||||
klimafaktor: number
|
||||
) => {
|
||||
inputs[`verbrauchszeitraum_${row}_start`] = start.format("MM.YYYY");
|
||||
inputs[`verbrauchszeitraum_${row}_end`] = end.format("MM.YYYY");
|
||||
inputs[`verbrauchszeitraum_${row}_energietraeger`] = energietraeger;
|
||||
inputs[`verbrauchszeitraum_${row}_primaerenergiefaktor`] =
|
||||
primaerenergiefaktor.toString();
|
||||
inputs[`verbrauchszeitraum_${row}_energieverbrauch`] =
|
||||
energieverbrauch.toString();
|
||||
inputs[`verbrauchszeitraum_${row}_anteil_warmwasser`] = Math.round(
|
||||
anteilWarmwasser * energieverbrauch
|
||||
).toString();
|
||||
inputs[`verbrauchszeitraum_${row}_anteil_heizung`] = Math.round(
|
||||
(1 - anteilWarmwasser) *
|
||||
energieverbrauch
|
||||
).toString();
|
||||
inputs[`verbrauchszeitraum_${row}_klimafaktor`] =
|
||||
klimafaktor.toString();
|
||||
|
||||
schema[`verbrauchszeitraum_${row}_start`] = getPosition(0);
|
||||
schema[`verbrauchszeitraum_${row}_end`] = getPosition(1);
|
||||
schema[`verbrauchszeitraum_${row}_energietraeger`] = getPosition(2);
|
||||
schema[`verbrauchszeitraum_${row}_primaerenergiefaktor`] =
|
||||
getPosition(3);
|
||||
schema[`verbrauchszeitraum_${row}_energieverbrauch`] = getPosition(4);
|
||||
schema[`verbrauchszeitraum_${row}_anteil_warmwasser`] = getPosition(5);
|
||||
schema[`verbrauchszeitraum_${row}_anteil_heizung`] = getPosition(6);
|
||||
schema[`verbrauchszeitraum_${row}_klimafaktor`] = getPosition(7);
|
||||
|
||||
row++;
|
||||
};
|
||||
})();
|
||||
|
||||
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum),
|
||||
moment(ausweis.startdatum).add("1", "year"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_1,
|
||||
berechnungen?.primaerfaktorww,
|
||||
berechnungen?.verbrauch_1_kwh,
|
||||
ausweis.anteil_warmwasser_1 / 100,
|
||||
berechnungen?.klimafaktoren[0].klimafaktor
|
||||
);
|
||||
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum).add("1", "year"),
|
||||
moment(ausweis.startdatum).add("2", "years"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_1,
|
||||
berechnungen?.primaerfaktorww,
|
||||
berechnungen?.verbrauch_2_kwh,
|
||||
ausweis.anteil_warmwasser_1 / 100,
|
||||
berechnungen?.klimafaktoren[1].klimafaktor
|
||||
);
|
||||
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum).add("2", "years"),
|
||||
moment(ausweis.startdatum).add("3", "years"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_1,
|
||||
berechnungen?.primaerfaktorww,
|
||||
berechnungen?.verbrauch_3_kwh,
|
||||
ausweis.anteil_warmwasser_1 / 100,
|
||||
berechnungen?.klimafaktoren[2].klimafaktor
|
||||
);
|
||||
|
||||
if (ausweis.zusaetzliche_heizquelle) {
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum),
|
||||
moment(ausweis.startdatum).add("1", "year"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_2,
|
||||
berechnungen?.primaerfaktorww_1,
|
||||
berechnungen?.verbrauch_4_kwh,
|
||||
ausweis.anteil_warmwasser_2 / 100,
|
||||
berechnungen?.klimafaktoren[0].klimafaktor
|
||||
);
|
||||
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum).add("1", "year"),
|
||||
moment(ausweis.startdatum).add("2", "years"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_2,
|
||||
berechnungen?.primaerfaktorww_1,
|
||||
berechnungen?.verbrauch_5_kwh,
|
||||
ausweis.anteil_warmwasser_2 / 100,
|
||||
berechnungen?.klimafaktoren[1].klimafaktor
|
||||
);
|
||||
|
||||
addVerbrauchszeitraum(
|
||||
template.schemas[2],
|
||||
moment(ausweis.startdatum).add("2", "years"),
|
||||
moment(ausweis.startdatum).add("3", "years"),
|
||||
ausweis.gebaeude_aufnahme_allgemein?.brennstoff_2,
|
||||
berechnungen?.primaerfaktorww_1,
|
||||
berechnungen?.verbrauch_6_kwh,
|
||||
ausweis.anteil_warmwasser_2 / 100,
|
||||
berechnungen?.klimafaktoren[1].klimafaktor
|
||||
);
|
||||
}
|
||||
|
||||
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({
|
||||
template,
|
||||
plugins: { text, image, variable: { ...variable, pdf: variable.pdf.bind(convertedInputs), ui: variable.ui.bind(convertedInputs) } },
|
||||
inputs: [convertedInputs],
|
||||
options: {
|
||||
author: "IB Cornelsen",
|
||||
creationDate: new Date(),
|
||||
creator: "IB Cornelsen",
|
||||
language: "de",
|
||||
title: "Verbrauchsausweis Wohnen GEG 2024",
|
||||
},
|
||||
});
|
||||
const pdf = await pdfVerbrauchsausweisWohnen(ausweis);
|
||||
|
||||
return new Response(pdf, {
|
||||
headers: {
|
||||
|
||||
19
tests/verbrauchsausweis-wohnen/ausweis-pdf.test.ts
Normal file
19
tests/verbrauchsausweis-wohnen/ausweis-pdf.test.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { test, describe, expect } from "bun:test";
|
||||
import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen";
|
||||
import { verbrauchsausweisWohnenFaker } from "#lib/faker/verbrauchsausweis-wohnen";
|
||||
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
|
||||
|
||||
describe('Verbrauchsausweis Wohnen PDF', async () => {
|
||||
const ausweis: VerbrauchsausweisWohnenClient = verbrauchsausweisWohnenFaker(42);
|
||||
|
||||
test("Ausweis Erstellung", async () => {
|
||||
const pdf = await pdfVerbrauchsausweisWohnen(ausweis);
|
||||
|
||||
// Wir können das PDF nicht richtig überprüfen, dafür brauchen wir manuelle Tests
|
||||
// Allerdings können wir überprüfen, ob das PDF erstellt wurde.
|
||||
expect(pdf).toBeDefined();
|
||||
expect(pdf).toBeInstanceOf(Uint8Array);
|
||||
expect(pdf.length).toBeGreaterThan(0);
|
||||
})
|
||||
})
|
||||
@@ -3,26 +3,37 @@ import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/Ver
|
||||
import { importVerbrauchsausweisWohnenAltesSystem, verbrauchsausweisWohnenImportTranslate } from "#lib/altes-system/import";
|
||||
|
||||
describe('Energieverbrauch', async () => {
|
||||
const alteAusweise = await importVerbrauchsausweisWohnenAltesSystem();
|
||||
const ausweis = verbrauchsausweisWohnenImportTranslate(alteAusweise.data[0]);
|
||||
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis);
|
||||
const berechnungenAlt = alteAusweise.data[0].calculations;
|
||||
const request = await importVerbrauchsausweisWohnenAltesSystem();
|
||||
|
||||
for (const ausweis of request.data) {
|
||||
if (ausweis.ausweisart !== "VA" || !ausweis.objekt_plz) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const ausweisNeu = verbrauchsausweisWohnenImportTranslate(ausweis);
|
||||
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweisNeu);
|
||||
const berechnungenAlt = ausweis.calculations;
|
||||
|
||||
let missingKlimafaktoren: boolean = false;
|
||||
|
||||
test("Klimafaktoren", async () => {
|
||||
console.log("PLZ: " + ausweis.gebaeude_aufnahme_allgemein.plz)
|
||||
|
||||
console.log("PLZ: " + ausweisNeu.gebaeude_aufnahme_allgemein.plz)
|
||||
console.log("Startdatum: " + ausweisNeu.startdatum)
|
||||
expect(berechnungen?.klimafaktoren).toHaveLength(3)
|
||||
try {
|
||||
expect(berechnungen?.klimafaktoren.map(x => x.klimafaktor)).toEqual(berechnungenAlt.klimafaktoren)
|
||||
} catch(e) {
|
||||
missingKlimafaktoren = true;
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
test("Endenergieverbrauch", async () => {
|
||||
test.skipIf(missingKlimafaktoren)("Endenergieverbrauch", async () => {
|
||||
expect(berechnungen?.endEnergieVerbrauchGesamt).toBeCloseTo(berechnungenAlt.endEnergieVerbrauchGesamt, 0)
|
||||
})
|
||||
|
||||
test("Primärenergieverbrauch", async () => {
|
||||
|
||||
test.skipIf(missingKlimafaktoren)("Primärenergieverbrauch", async () => {
|
||||
expect(berechnungen?.primaerEnergieVerbrauchGesamt).toBeCloseTo(berechnungenAlt.primaerEnergieVerbrauchGesamt, 0)
|
||||
})
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user