diff --git a/src/components/Ausweis/Ausweisart.svelte b/src/components/Ausweis/Ausweisart.svelte index 8e57e97b..220c25d8 100644 --- a/src/components/Ausweis/Ausweisart.svelte +++ b/src/components/Ausweis/Ausweisart.svelte @@ -139,7 +139,7 @@ required bind:value={gebaeude_aufnahme_allgemein.saniert} > - + diff --git a/src/components/Verbrauchsausweis/audits/BedarfsausweisBenoetigt.ts b/src/components/Verbrauchsausweis/audits/BedarfsausweisBenoetigt.ts index 0ac69265..e5e4d5d7 100644 --- a/src/components/Verbrauchsausweis/audits/BedarfsausweisBenoetigt.ts +++ b/src/components/Verbrauchsausweis/audits/BedarfsausweisBenoetigt.ts @@ -1,17 +1,22 @@ import { GebaeudeAufnahmeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types"; export function auditBedarfsausweisBenoetigt(ausweis: VerbrauchsausweisWohnenClient, gebaeude: GebaeudeAufnahmeClient): boolean { + if (ausweis.ausstellgrund == "Neubau" || ausweis.ausstellgrund == "Modernisierung") { + return true; + } + + if (gebaeude.saniert == true && ( gebaeude.dachgeschoss_gedaemmt == false || gebaeude.oberste_geschossdecke_gedaemmt == false)){ + return true; + } if (gebaeude.baujahr_gebaeude && gebaeude.baujahr_gebaeude.length > 0) { return ( (gebaeude.baujahr_gebaeude[0] < 1978 && (gebaeude.einheiten || 0) <= 4 && - gebaeude.saniert == false && + (gebaeude.saniert == false ) && (ausweis.ausstellgrund == "Vermietung" || ausweis.ausstellgrund == "Sonstiges" || - ausweis.ausstellgrund == "Verkauf")) || - ausweis.ausstellgrund == "Neubau" || - ausweis.ausstellgrund == "Modernisierung" + ausweis.ausstellgrund == "Verkauf")) ); } diff --git a/src/components/Verbrauchsausweis/audits/EndEnergie.ts b/src/components/Verbrauchsausweis/audits/EndEnergie.ts new file mode 100644 index 00000000..9f9b4fdc --- /dev/null +++ b/src/components/Verbrauchsausweis/audits/EndEnergie.ts @@ -0,0 +1,27 @@ +import { GebaeudeClient, VerbrauchsausweisWohnenClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types"; +import { AuditType, hidden } from "./hidden"; +import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016"; +import { getKlimafaktoren } from "#lib/Klimafaktoren"; + +export async function auditEndEnergie(ausweis: VerbrauchsausweisWohnenClient, gebaeude: GebaeudeClient, gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient): Promise { + if (hidden.has(AuditType.END_ENERGIE)) { + return false; + } + //sobald Fläche, Klimafaktoren und alle Verbrauchsjahre eingegeben wurden. + if (gebaeude_aufnahme_allgemein){ + if (gebaeude_aufnahme_allgemein.flaeche && ausweis.verbrauch_1 && ausweis.verbrauch_2 && ausweis.verbrauch_3) { + try { + const response = await getKlimafaktoren(ausweis.startdatum, gebaeude.plz); + // Alle Klimfaktoren konnten abgefragt werden. + const eevva = await endEnergieVerbrauchVerbrauchsausweis_2016({...ausweis, gebaeude_aufnahme_allgemein: {...gebaeude_aufnahme_allgemein, gebaeude_stammdaten: gebaeude}}); + if (eevva){ + if (eevva?.endEnergieVerbrauchGesamt <= 45 || eevva?.endEnergieVerbrauchGesamt >= 500) { + return true; + } + } + } catch (e) { + } + } + } + return false; +} \ No newline at end of file diff --git a/src/components/Verbrauchsausweis/audits/HeizungJuengerDreiJahre.ts b/src/components/Verbrauchsausweis/audits/HeizungJuengerDreiJahre.ts index d01d6ee8..bc324f81 100644 --- a/src/components/Verbrauchsausweis/audits/HeizungJuengerDreiJahre.ts +++ b/src/components/Verbrauchsausweis/audits/HeizungJuengerDreiJahre.ts @@ -1,11 +1,14 @@ import { GebaeudeAufnahmeClient } from "#components/Ausweis/types"; +import { AuditType, hidden } from "../audits/hidden"; -export function auditHeizungJuengerDreiJahre(gebaeude: GebaeudeAufnahmeClient ): boolean { +export function auditHeizungJuengerDreiJahre(gebaeude: GebaeudeAufnahmeClient): boolean { if (gebaeude.baujahr_heizung && gebaeude.baujahr_heizung.length > 0) { - return ( - (gebaeude.baujahr_heizung.sort()[0] >= (new Date().getFullYear())-3) - ); + if (!hidden.has(AuditType.HEIZUNG_JUENGER_DREI_JAHRE)) { + return ( + (gebaeude.baujahr_heizung.sort()[0] >= (new Date().getFullYear()) - 3) + ); + } } return false diff --git a/src/components/Verbrauchsausweis/audits/KlimaFaktoren.ts b/src/components/Verbrauchsausweis/audits/KlimaFaktoren.ts index ac69b034..6dea6b33 100644 --- a/src/components/Verbrauchsausweis/audits/KlimaFaktoren.ts +++ b/src/components/Verbrauchsausweis/audits/KlimaFaktoren.ts @@ -1,8 +1,5 @@ import { GebaeudeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types"; import { AuditType, hidden } from "./hidden"; -import { prisma } from "@ibcornelsen/database/server"; -import { client } from "src/trpc"; -import moment from "moment"; import { getKlimafaktoren } from "#lib/Klimafaktoren"; export async function auditKlimaFaktoren(ausweis: VerbrauchsausweisWohnenClient, gebaeude: GebaeudeClient): Promise { diff --git a/src/components/Verbrauchsausweis/audits/LeerStand.ts b/src/components/Verbrauchsausweis/audits/LeerStand.ts index b35f6660..103d01bd 100644 --- a/src/components/Verbrauchsausweis/audits/LeerStand.ts +++ b/src/components/Verbrauchsausweis/audits/LeerStand.ts @@ -1,7 +1,8 @@ import { GebaeudeAufnahmeClient } from "#components/Ausweis/types"; +import { AuditType, hidden } from "./hidden"; -export function auditLeerStand(gebaeude: GebaeudeAufnahmeClient ): boolean { - if (gebaeude.leerstand ) { +export function auditLeerStand(gebaeude: GebaeudeAufnahmeClient): boolean { + if (gebaeude.leerstand && !hidden.has(AuditType.LEER_STAND)) { return ( (gebaeude.leerstand > 30) ); diff --git a/src/components/Verbrauchsausweis/audits/PlzNichtErkannt.ts b/src/components/Verbrauchsausweis/audits/PlzNichtErkannt.ts new file mode 100644 index 00000000..3b322959 --- /dev/null +++ b/src/components/Verbrauchsausweis/audits/PlzNichtErkannt.ts @@ -0,0 +1,22 @@ +import { GebaeudeAufnahmeClient } from "#components/Ausweis/types"; +import { client } from "src/trpc"; +import { memoize } from "src/lib/Memoization"; +import { AuditType, hidden } from "../audits/hidden"; + +export const auditPlzNichtErkannt = memoize(async (gebaeude: GebaeudeAufnahmeClient) => { + if (gebaeude.plz) { + if (gebaeude.plz.length == 5) { + try { + const result = await client.v1.postleitzahlen.query({ plz: gebaeude.plz, limit: 1 }); + if (result.length > 0) { + return false; + } + } catch (e) { + if (!hidden.has(AuditType.PLZ_NICHT_ERKANNT)){ + return true; + } + } + } + } + return false +}); diff --git a/src/components/Verbrauchsausweis/audits/VerbrauchAbweichung.ts b/src/components/Verbrauchsausweis/audits/VerbrauchAbweichung.ts index 7102cd8f..c64af80d 100644 --- a/src/components/Verbrauchsausweis/audits/VerbrauchAbweichung.ts +++ b/src/components/Verbrauchsausweis/audits/VerbrauchAbweichung.ts @@ -10,19 +10,19 @@ export function auditVerbrauchAbweichung(ausweis: VerbrauchsausweisWohnenClient, return []; } - if (getAbweichung(ausweis.verbrauch_1 || 0, ausweis.verbrauch_2 || 0) > 0.25) { + if (getAbweichung(ausweis.verbrauch_1 || 0, ausweis.verbrauch_2 || 0) > 0.30) { return [1, 2]; } - if (getAbweichung(ausweis.verbrauch_2 || 0, ausweis.verbrauch_3 || 0) > 0.25) { + if (getAbweichung(ausweis.verbrauch_2 || 0, ausweis.verbrauch_3 || 0) > 0.30) { return [2, 3]; } - if (getAbweichung(ausweis.verbrauch_4 || 0, ausweis.verbrauch_5 || 0) > 0.25) { + if (getAbweichung(ausweis.verbrauch_4 || 0, ausweis.verbrauch_5 || 0) > 0.30) { return [4, 5]; } - if (getAbweichung(ausweis.verbrauch_5 || 0, ausweis.verbrauch_6 || 0) > 0.25) { + if (getAbweichung(ausweis.verbrauch_5 || 0, ausweis.verbrauch_6 || 0) > 0.30) { return [5, 6]; } diff --git a/src/components/Verbrauchsausweis/audits/WarmWasser.ts b/src/components/Verbrauchsausweis/audits/WarmWasser.ts index 337be57f..1c1de130 100644 --- a/src/components/Verbrauchsausweis/audits/WarmWasser.ts +++ b/src/components/Verbrauchsausweis/audits/WarmWasser.ts @@ -1,11 +1,14 @@ import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types"; +import { AuditType, hidden } from "./hidden"; export function auditWarmWasser(ausweis: VerbrauchsausweisWohnenClient): boolean { if (ausweis.warmwasser_anteil_bekannt && ausweis.warmwasser_enthalten && ausweis.anteil_warmwasser_1) { - return ( - ausweis.anteil_warmwasser_1 <= 6 || ausweis.anteil_warmwasser_1 >= 35 - ); + if (!hidden.has(AuditType.WARM_WASSER)){ + return ( + ausweis.anteil_warmwasser_1 <= 6 || ausweis.anteil_warmwasser_1 >= 35 + ); + } } return false diff --git a/src/components/Verbrauchsausweis/audits/WohnFlaeche.ts b/src/components/Verbrauchsausweis/audits/WohnFlaeche.ts index 14bcf290..a2151fe8 100644 --- a/src/components/Verbrauchsausweis/audits/WohnFlaeche.ts +++ b/src/components/Verbrauchsausweis/audits/WohnFlaeche.ts @@ -1,11 +1,13 @@ import { GebaeudeAufnahmeClient } from "#components/Ausweis/types"; +import { AuditType, hidden } from "./hidden"; export function auditWohnFlaeche(gebaeude: GebaeudeAufnahmeClient ): boolean { if (gebaeude.einheiten && gebaeude.flaeche ) { - - return ( - (gebaeude.flaeche < gebaeude.einheiten * 30) - ); + if (!hidden.has(AuditType.WOHN_FLAECHE)){ + return ( + (gebaeude.flaeche < gebaeude.einheiten * 30) + ); + } } return false diff --git a/src/components/Verbrauchsausweis/audits/WohnflaecheGroesserGesamtflaeche.ts b/src/components/Verbrauchsausweis/audits/WohnflaecheGroesserGesamtflaeche.ts new file mode 100644 index 00000000..c53c962d --- /dev/null +++ b/src/components/Verbrauchsausweis/audits/WohnflaecheGroesserGesamtflaeche.ts @@ -0,0 +1,10 @@ +import { GebaeudeAufnahmeClient } from "#components/Ausweis/types"; +import { AuditType, hidden } from "../audits/hidden"; + +export function auditWohnflaecheGroesserGesamtflaeche(gebaeude: GebaeudeAufnahmeClient ): boolean { + if (gebaeude.flaeche && gebaeude.nutzflaeche){ + return (gebaeude.flaeche > gebaeude.nutzflaeche && !hidden.has(AuditType.WOHNFLAECHE_GROESSER_GESAMTFLAECHE)); + } + + return false; +} \ No newline at end of file diff --git a/src/components/Verbrauchsausweis/audits/hidden.ts b/src/components/Verbrauchsausweis/audits/hidden.ts index 23246c6d..d7a5c9e4 100644 --- a/src/components/Verbrauchsausweis/audits/hidden.ts +++ b/src/components/Verbrauchsausweis/audits/hidden.ts @@ -8,5 +8,8 @@ export enum AuditType { KLIMA_FAKTOREN, WOHN_FLAECHE, WARM_WASSER, - LEER_STAND + LEER_STAND, + PLZ_NICHT_ERKANNT, + END_ENERGIE, + WOHNFLAECHE_GROESSER_GESAMTFLAECHE } \ No newline at end of file diff --git a/src/modules/Ausweise/VerbrauchsausweisWohnenModule.svelte b/src/modules/Ausweise/VerbrauchsausweisWohnenModule.svelte index a20a3af0..bae875ab 100644 --- a/src/modules/Ausweise/VerbrauchsausweisWohnenModule.svelte +++ b/src/modules/Ausweise/VerbrauchsausweisWohnenModule.svelte @@ -17,9 +17,12 @@ import { auditWohnFlaeche } from "#components/Verbrauchsausweis/audits/WohnFlaeche"; import { auditWarmWasser } from "#components/Verbrauchsausweis/audits/WarmWasser"; import { auditLeerStand } from "#components/Verbrauchsausweis/audits/LeerStand"; + import { auditPlzNichtErkannt } from "#components/Verbrauchsausweis/audits/PlzNichtErkannt"; import { AuditType, hidden } from "#components/Verbrauchsausweis/audits/hidden"; import { auditBedarfsausweisBenoetigt } from "#components/Verbrauchsausweis/audits/BedarfsausweisBenoetigt"; import { auditVerbrauchAbweichung } from "#components/Verbrauchsausweis/audits/VerbrauchAbweichung"; + import { auditEndEnergie } from "#components/Verbrauchsausweis/audits/EndEnergie"; + import { auditWohnflaecheGroesserGesamtflaeche } from "#components/Verbrauchsausweis/audits/WohnflaecheGroesserGesamtflaeche"; import { Enums } from "@ibcornelsen/database/client" import Overlay from "#components/Overlay.svelte"; import AusweisGespeichertModule from "./AusweisGespeichertModule.svelte"; @@ -92,6 +95,13 @@ let waitOverlayHidden = true; let speichernOverlayHidden = true; + + $: { + if (gebaeude_aufnahme_allgemein.saniert) { + gebaeude_aufnahme_allgemein.oberste_geschossdecke_gedaemmt = true; + gebaeude_aufnahme_allgemein.dachgeschoss_gedaemmt = true; + } + } @@ -101,7 +111,9 @@ -

Bitte warten sie, ihr Ausweis wird nun erstellt.

+

+ Bitte warten sie, ihr Ausweis wird nun erstellt. +

@@ -110,15 +122,19 @@
- +
-
+
- +