Startdatum Auswahl gefixt

This commit is contained in:
Moritz Utcke
2024-03-12 11:22:40 +07:00
parent e994383317
commit 8c188a54fa
3 changed files with 56 additions and 16 deletions

View File

@@ -7,10 +7,15 @@
import type { VerbrauchsausweisGewerbe } from "@ibcornelsen/database/client";
import { GebaeudeAufnahmeClient, GebaeudeClient, VerbrauchsausweisWohnenClient } from "./types";
let availableYears = [
2018, 2019,
];
let availableMonths = [
// Wir dürfen bis zu 4.5 Jahre alte Klimafaktoren benutzen, also nehmen wir alle Monate seitdem und generieren daraus die Auswahl.
// Allerdings müssen wir auch berücksichtigen, dass wir drei folgende Jahre brauchen, also
// kann der Nutzer nur 36 + 18 Monate zurückgehen.
let availableDates: {
year: number;
month: number;
}[] = [];
let monthNames = [
"Januar",
"Februar",
"März",
@@ -25,6 +30,17 @@
"Dezember",
];
const startDate = moment().subtract(4, "years").subtract(6, "months");
const endDate = moment().subtract(3, "years");
for (let m = moment(startDate); m.isBefore(endDate); m.add(1, "month")) {
availableDates.push({
year: m.year(),
month: m.month(),
});
}
export let gebaeude: GebaeudeClient;
export let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient;
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbe;
@@ -36,11 +52,9 @@
fuelMap[fuel[0]].push(fuel[1]);
}
console.log(ausweis.startdatum);
let month = ausweis.startdatum?.getMonth() || 1;
let year = ausweis.startdatum?.getFullYear() || 2018;
let month = ausweis.startdatum?.getMonth() || moment().month();
let year = ausweis.startdatum?.getFullYear() || moment().subtract(3, "years").year();
$: {
if (typeof month === "number" && typeof year === "number") {
@@ -173,9 +187,15 @@
required
>
<option>auswählen</option>
{#each availableMonths as m, i}
<option value={i}>{m}</option>
{/each}
{#if year !== null}
{#each availableDates.filter(date => date.year == year) as date}
<option value={date.month}>{monthNames[date.month]}</option>
{/each}
{:else}
{#each availableDates as date}
<option value={date.month}>{monthNames[date.month]}</option>
{/each}
{/if}
</select>
<select
@@ -185,8 +205,11 @@
required
>
<option>auswählen</option>
{#each availableYears as y}
<option value={y}>{y}</option>
{#each Array.from(availableDates.reduce((a,c) => {
a.add(c.year);
return a;
}, new Set())) as year}
<option value={year}>{year}</option>
{/each}
</select>
</div>

View File

@@ -122,7 +122,9 @@ export function verbrauchsausweisWohnenImportTranslate(ausweis: Record<string, a
erstellungsdatum: moment(ausweis.erstellungsdatum).toDate(),
keller_beheizt: ausweis.keller_beheizt,
registriernummer: ausweis.regnummer,
startdatum: moment(`${ausweis.energieverbrauch_zeitraum_jahr}-01-${ausweis.energieverbrauch_zeitraum_monat}`).toDate(),
// Der Monat im alten System ist 1-basiert, in der neuen Datenbank 0-basiert
// Also müssen wir hier 1 abziehen
startdatum: moment(`${ausweis.energieverbrauch_zeitraum_jahr}-${ausweis.energieverbrauch_zeitraum_monat}-01`).toDate(),
warmwasser_anteil_bekannt: ausweis.warmwasser_anteil_bekannt,
wird_gekuehlt: ausweis.wird_gekuehlt,

View File

@@ -5,9 +5,24 @@ import { importVerbrauchsausweisWohnenAltesSystem, verbrauchsausweisWohnenImport
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;
test("Klimafaktoren", async () => {
console.log("PLZ: " + ausweis.gebaeude_aufnahme_allgemein.plz)
expect(berechnungen?.klimafaktoren).toHaveLength(3)
expect(berechnungen?.klimafaktoren.map(x => x.klimafaktor)).toEqual(berechnungenAlt.klimafaktoren)
})
test("Endenergieverbrauch", async () => {
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis);
expect(berechnungen?.endEnergieVerbrauchGesamt).toBeCloseTo(alteAusweise.data[0].calculations.endEnergieVerbrauchGesamt, -1)
expect(berechnungen?.endEnergieVerbrauchGesamt).toBeCloseTo(berechnungenAlt.endEnergieVerbrauchGesamt, 0)
})
test("Primärenergieverbrauch", async () => {
expect(berechnungen?.primaerEnergieVerbrauchGesamt).toBeCloseTo(berechnungenAlt.primaerEnergieVerbrauchGesamt, 0)
})
})