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

View File

@@ -122,7 +122,9 @@ export function verbrauchsausweisWohnenImportTranslate(ausweis: Record<string, a
erstellungsdatum: moment(ausweis.erstellungsdatum).toDate(), erstellungsdatum: moment(ausweis.erstellungsdatum).toDate(),
keller_beheizt: ausweis.keller_beheizt, keller_beheizt: ausweis.keller_beheizt,
registriernummer: ausweis.regnummer, 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, warmwasser_anteil_bekannt: ausweis.warmwasser_anteil_bekannt,
wird_gekuehlt: ausweis.wird_gekuehlt, wird_gekuehlt: ausweis.wird_gekuehlt,

View File

@@ -5,9 +5,24 @@ import { importVerbrauchsausweisWohnenAltesSystem, verbrauchsausweisWohnenImport
describe('Energieverbrauch', async () => { describe('Energieverbrauch', async () => {
const alteAusweise = await importVerbrauchsausweisWohnenAltesSystem(); const alteAusweise = await importVerbrauchsausweisWohnenAltesSystem();
const ausweis = verbrauchsausweisWohnenImportTranslate(alteAusweise.data[0]); 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 () => { test("Endenergieverbrauch", async () => {
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis); expect(berechnungen?.endEnergieVerbrauchGesamt).toBeCloseTo(berechnungenAlt.endEnergieVerbrauchGesamt, 0)
expect(berechnungen?.endEnergieVerbrauchGesamt).toBeCloseTo(alteAusweise.data[0].calculations.endEnergieVerbrauchGesamt, -1) })
test("Primärenergieverbrauch", async () => {
expect(berechnungen?.primaerEnergieVerbrauchGesamt).toBeCloseTo(berechnungenAlt.primaerEnergieVerbrauchGesamt, 0)
}) })
}) })