Merge pull request #2 from IBCornelsen/VAOnScreenTests
VA On-Screen Checks
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
FROM oven/bun
|
||||
FROM oven/bun:1.0.23
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { GebaeudeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { GebaeudeAufnahmeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
|
||||
export function auditBedarfsausweisBenoetigt(ausweis: VerbrauchsausweisWohnenClient, gebaeude: GebaeudeClient): boolean {
|
||||
export function auditBedarfsausweisBenoetigt(ausweis: VerbrauchsausweisWohnenClient, gebaeude: GebaeudeAufnahmeClient): boolean {
|
||||
|
||||
if (gebaeude.baujahr_gebaeude && gebaeude.baujahr_gebaeude.length > 0) {
|
||||
return (
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import { GebaeudeAufnahmeClient } from "#components/Ausweis/types";
|
||||
|
||||
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)
|
||||
);
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
23
src/components/Verbrauchsausweis/audits/KlimaFaktoren.ts
Normal file
23
src/components/Verbrauchsausweis/audits/KlimaFaktoren.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
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<boolean> {
|
||||
if (hidden.has(AuditType.KLIMA_FAKTOREN)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ausweis.startdatum && gebaeude.plz && ausweis.verbrauch_1) {
|
||||
try {
|
||||
const response = await getKlimafaktoren(ausweis.startdatum, gebaeude.plz);
|
||||
return true; // Alle Klimfaktoren konnten abgefragt werden.
|
||||
} catch (e) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
11
src/components/Verbrauchsausweis/audits/LeerStand.ts
Normal file
11
src/components/Verbrauchsausweis/audits/LeerStand.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { GebaeudeAufnahmeClient } from "#components/Ausweis/types";
|
||||
|
||||
export function auditLeerStand(gebaeude: GebaeudeAufnahmeClient ): boolean {
|
||||
if (gebaeude.leerstand ) {
|
||||
return (
|
||||
(gebaeude.leerstand > 30)
|
||||
);
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
12
src/components/Verbrauchsausweis/audits/WarmWasser.ts
Normal file
12
src/components/Verbrauchsausweis/audits/WarmWasser.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
|
||||
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
|
||||
);
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
12
src/components/Verbrauchsausweis/audits/WohnFlaeche.ts
Normal file
12
src/components/Verbrauchsausweis/audits/WohnFlaeche.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { GebaeudeAufnahmeClient } from "#components/Ausweis/types";
|
||||
|
||||
export function auditWohnFlaeche(gebaeude: GebaeudeAufnahmeClient ): boolean {
|
||||
if (gebaeude.einheiten && gebaeude.flaeche ) {
|
||||
|
||||
return (
|
||||
(gebaeude.flaeche < gebaeude.einheiten * 30)
|
||||
);
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
22
src/components/Verbrauchsausweis/audits/ZeitraumAktuell.ts
Normal file
22
src/components/Verbrauchsausweis/audits/ZeitraumAktuell.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { GebaeudeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { AuditType, hidden } from "./hidden";
|
||||
|
||||
export function auditZeitraumAktuell(ausweis: VerbrauchsausweisWohnenClient, gebaeude: GebaeudeClient): boolean {
|
||||
if (hidden.has(AuditType.ZEITRAUM_AKTUELL)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ausweis) {
|
||||
if (ausweis.startdatum && ausweis.verbrauch_1) {
|
||||
let checkDate = new Date();
|
||||
checkDate.setMonth(checkDate.getMonth() - 54);
|
||||
|
||||
return (ausweis.startdatum < checkDate && ausweis.verbrauch_1 > 0);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,5 +2,11 @@ export const hidden = new Set<AuditType>()
|
||||
|
||||
export enum AuditType {
|
||||
HEIZUNG_GEBAEUDE_BAUJAHR,
|
||||
VERBRAUCH_ABWEICHUNG
|
||||
HEIZUNG_JUENGER_DREI_JAHRE,
|
||||
VERBRAUCH_ABWEICHUNG,
|
||||
ZEITRAUM_AKTUELL,
|
||||
KLIMA_FAKTOREN,
|
||||
WOHN_FLAECHE,
|
||||
WARM_WASSER,
|
||||
LEER_STAND
|
||||
}
|
||||
@@ -11,6 +11,12 @@
|
||||
import BilderZusatzsysteme from "#components/Ausweis/BilderZusatzsysteme.svelte";
|
||||
import { RawNotificationWrapper, RawNotification, notifications, addNotification, updateNotification } from "@ibcornelsen/ui";
|
||||
import { auditHeizungGebaeudeBaujahr } from "#components/Verbrauchsausweis/audits/HeizungGebaeudeBaujahr";
|
||||
import { auditHeizungJuengerDreiJahre } from "#components/Verbrauchsausweis/audits/HeizungJuengerDreiJahre";
|
||||
import { auditZeitraumAktuell } from "#components/Verbrauchsausweis/audits/ZeitraumAktuell";
|
||||
import { auditKlimaFaktoren } from "#components/Verbrauchsausweis/audits/KlimaFaktoren";
|
||||
import { auditWohnFlaeche } from "#components/Verbrauchsausweis/audits/WohnFlaeche";
|
||||
import { auditWarmWasser } from "#components/Verbrauchsausweis/audits/WarmWasser";
|
||||
import { auditLeerStand } from "#components/Verbrauchsausweis/audits/LeerStand";
|
||||
import { AuditType, hidden } from "#components/Verbrauchsausweis/audits/hidden";
|
||||
import { auditBedarfsausweisBenoetigt } from "#components/Verbrauchsausweis/audits/BedarfsausweisBenoetigt";
|
||||
import { auditVerbrauchAbweichung } from "#components/Verbrauchsausweis/audits/VerbrauchAbweichung";
|
||||
@@ -638,7 +644,7 @@
|
||||
</RawNotification>
|
||||
{/each}
|
||||
|
||||
{#if auditBedarfsausweisBenoetigt(ausweis, gebaeude)}
|
||||
{#if auditBedarfsausweisBenoetigt(ausweis, gebaeude_aufnahme_allgemein)}
|
||||
<RawNotification
|
||||
notification={{
|
||||
message: "Bedarfsausweis benötigt!",
|
||||
@@ -673,6 +679,132 @@
|
||||
</RawNotification>
|
||||
{/if}
|
||||
|
||||
{#if auditHeizungJuengerDreiJahre(gebaeude_aufnahme_allgemein)}
|
||||
<RawNotification
|
||||
notification={{
|
||||
message: "Plausibilitätsprüfung",
|
||||
timeout: 0,
|
||||
uid: "HEIZUNG_JUENGER_DREI_JAHRE",
|
||||
dismissable: true,
|
||||
onUserDismiss: () => {
|
||||
hidden.add(AuditType.HEIZUNG_JUENGER_DREI_JAHRE);
|
||||
gebaeude = gebaeude;
|
||||
},
|
||||
type: "warning",
|
||||
}}
|
||||
>
|
||||
Ihre Heizungsanlage ist jünger als 3 Jahre. Für den Verbrauchsausweis müssen
|
||||
Sie mindestens 3 Verbrauchsjahre eingeben die den aktuellen Stand des Gebäudes
|
||||
abbilden. Ein Verbrauchsausweis ist daher nicht möglich. Bitte klicken Sie
|
||||
<a href="/bedarfsausweis">hier</a> um zum Eingabeformular für den Bedarfsausweis
|
||||
zu gelangen.
|
||||
</RawNotification>
|
||||
{/if}
|
||||
|
||||
{#if auditZeitraumAktuell(ausweis, gebaeude)}
|
||||
<RawNotification
|
||||
notification={{
|
||||
message: "Plausibilitätsprüfung",
|
||||
timeout: 0,
|
||||
uid: "ZEITRAUM_AKTUELL",
|
||||
dismissable: true,
|
||||
onUserDismiss: () => {
|
||||
hidden.add(AuditType.ZEITRAUM_AKTUELL);
|
||||
gebaeude = gebaeude;
|
||||
},
|
||||
type: "warning",
|
||||
}}
|
||||
>
|
||||
Die Verbrauchszeiträume sind nicht aktuell genug. Das Ende des letzten
|
||||
Verbrauchszeitraumes darf nicht mehr als 18 Monate zurückliegen. Ein
|
||||
Verbrauchsausweis ist mit diesen Zeiträumen daher nicht möglich. Bitte
|
||||
klicken Sie <a href="/bedarfsausweis">hier</a> um zum Eingabeformular
|
||||
für den Bedarfsausweis zu gelangen.
|
||||
</RawNotification>
|
||||
{/if}
|
||||
|
||||
{#await auditKlimaFaktoren(ausweis, gebaeude) then result}
|
||||
{#if result}
|
||||
<RawNotification
|
||||
notification={{
|
||||
message: "Plausibilitätsprüfung",
|
||||
timeout: 0,
|
||||
uid: "KLIMA_FAKTOREN",
|
||||
dismissable: true,
|
||||
onUserDismiss: () => {
|
||||
hidden.add(AuditType.KLIMA_FAKTOREN);
|
||||
gebaeude = gebaeude;
|
||||
},
|
||||
type: "warning",
|
||||
}}
|
||||
>
|
||||
Die Verbrauchszeiträume sind zu aktuell und es liegen noch keine
|
||||
Klimafaktoren dazu vor. Bitte verschieben Sie die Verbrauchszeiträume
|
||||
1 Jahr nach hinten. Wenn das nicht möglich ist, klicken Sie
|
||||
<a href="/bedarfsausweis">hier</a> um zum Eingabeformular für den
|
||||
Bedarfsausweis zu gelangen.
|
||||
</RawNotification>
|
||||
{/if}
|
||||
{/await}
|
||||
|
||||
{#if auditWohnFlaeche(gebaeude_aufnahme_allgemein)}
|
||||
<RawNotification
|
||||
notification={{
|
||||
message: "Plausibilitätsprüfung",
|
||||
timeout: 0,
|
||||
uid: "WOHN_FLAECHE",
|
||||
dismissable: true,
|
||||
onUserDismiss: () => {
|
||||
hidden.add(AuditType.WOHN_FLAECHE);
|
||||
gebaeude = gebaeude;
|
||||
},
|
||||
type: "warning",
|
||||
}}
|
||||
>
|
||||
Die Wohnfläche ist viel zu klein. Bitte überprüfen Sie Ihre Eingabe nochmal
|
||||
und stellen sicher, daß sich Ihre Angaben auf das gesamte Gebäude beziehen.
|
||||
</RawNotification>
|
||||
{/if}
|
||||
|
||||
{#if auditWarmWasser(ausweis)}
|
||||
<RawNotification
|
||||
notification={{
|
||||
message: "Plausibilitätsprüfung",
|
||||
timeout: 0,
|
||||
uid: "WARM_WASSER",
|
||||
dismissable: true,
|
||||
onUserDismiss: () => {
|
||||
hidden.add(AuditType.WARM_WASSER);
|
||||
gebaeude = gebaeude;
|
||||
},
|
||||
type: "warning",
|
||||
}}
|
||||
>
|
||||
Bitte überprüfen Sie nochmal die Höhe des Warmwasseranteils. Dieser scheint
|
||||
nicht ganz im Rahmen zu liegen.
|
||||
</RawNotification>
|
||||
{/if}
|
||||
|
||||
{#if auditLeerStand(gebaeude_aufnahme_allgemein)}
|
||||
<RawNotification
|
||||
notification={{
|
||||
message: "Plausibilitätsprüfung",
|
||||
timeout: 0,
|
||||
uid: "LEER_STAND",
|
||||
dismissable: true,
|
||||
onUserDismiss: () => {
|
||||
hidden.add(AuditType.LEER_STAND);
|
||||
gebaeude = gebaeude;
|
||||
},
|
||||
type: "warning",
|
||||
}}
|
||||
>
|
||||
Bei Leerstand größer als 30% darf kein Verbrauchsausweis ausgestellt werden.
|
||||
Bitte klicken Sie <a href="/bedarfsausweis">hier</a> um zum Eingabeformular
|
||||
für den Bedarfsausweis zu gelangen.
|
||||
</RawNotification>
|
||||
{/if}
|
||||
|
||||
{#if auditVerbrauchAbweichung(ausweis, gebaeude).length > 0}
|
||||
<RawNotification
|
||||
notification={{
|
||||
|
||||
Reference in New Issue
Block a user