From 898575d80f3a2409e115791f413e4f767c50618a Mon Sep 17 00:00:00 2001 From: Moritz Utcke Date: Fri, 12 Jan 2024 14:26:15 +0700 Subject: [PATCH] Verbrauchsausweis Gewerbe --- package.json | 3 +- src/components/AnsichtsausweisButton.svelte | 4 +- .../Ausweis/AusweisPreviewContainer.svelte | 4 +- src/components/Ausweis/Ausweisart.svelte | 133 +++++++----------- .../Ausweis/BilderZusatzsysteme.svelte | 4 +- src/components/Ausweis/DaemmungImage.svelte | 4 +- src/components/Ausweis/FensterImage.svelte | 4 +- src/components/Ausweis/HeizungImage.svelte | 4 +- src/components/Ausweis/Verbrauch.svelte | 4 +- .../BedarfsausweisContent.svelte | 3 +- src/components/DatenblattButton.svelte | 4 +- src/components/ImageGrid.svelte | 4 +- .../Kaufabschluss/PriceContainer.svelte | 89 +++--------- src/components/UploadImages.svelte | 4 +- src/lib/constants.ts | 34 ++++- src/lib/login.ts | 2 +- .../VerbrauchsausweisWohnenModule.svelte | 10 +- src/modules/EmbeddedLoginModule.svelte | 3 + src/modules/KundendatenModule.svelte | 32 ++++- .../VerbrauchsausweisGewerbe/BuildingTypes.ts | 0 .../VerbrauchsausweisGewerbeModule.svelte} | 87 +++++------- .../VerbrauchsausweisWohnenFlowModule.svelte | 64 +++++++++ src/pages/payment/success.astro | 10 ++ .../verbrauchsausweis-gewerbe/index.astro | 5 +- 24 files changed, 281 insertions(+), 234 deletions(-) rename src/{components => modules}/VerbrauchsausweisGewerbe/BuildingTypes.ts (100%) rename src/{components/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeContent.svelte => modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte} (86%) create mode 100644 src/modules/VerbrauchsausweisWohnenFlowModule.svelte create mode 100644 src/pages/payment/success.astro diff --git a/package.json b/package.json index a07f804e..5171b287 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,8 @@ "@astrojs/node": "^5.1.4", "@astrojs/svelte": "^2.2.0", "@astrojs/tailwind": "^3.1.3", + "@ibcornelsen/api": "link:@ibcornelsen/api", "@ibcornelsen/database": "link:@ibcornelsen/database", - "@ibcornelsen/api": "link:@ibcornelsen/api", "@ibcornelsen/ui": "^0.0.2", "@mollie/api-client": "^3.7.0", "@trpc/client": "^10.45.0", @@ -30,6 +30,7 @@ "@types/body-scroll-lock": "^3.1.2", "astro": "^2.5.1", "astro-i18next": "1.0.0-beta.21", + "astro-spa": "^1.3.9", "body-scroll-lock": "^4.0.0-beta.0", "buffer": "^6.0.3", "bun": "^1.0.2", diff --git a/src/components/AnsichtsausweisButton.svelte b/src/components/AnsichtsausweisButton.svelte index a6e777f8..3d130a0c 100644 --- a/src/components/AnsichtsausweisButton.svelte +++ b/src/components/AnsichtsausweisButton.svelte @@ -1,8 +1,8 @@ diff --git a/src/components/Ausweis/Ausweisart.svelte b/src/components/Ausweis/Ausweisart.svelte index e717d8f1..f9a9327a 100644 --- a/src/components/Ausweis/Ausweisart.svelte +++ b/src/components/Ausweis/Ausweisart.svelte @@ -4,76 +4,44 @@ import { addNotification, deleteNotification } from "@ibcornelsen/ui"; import TagInput from "../TagInput.svelte"; import { writable } from "svelte/store"; - import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database"; + import { + BedarfsausweisWohnen, + Enums, + GebaeudeStammdaten, + VerbrauchsausweisGewerbe, + VerbrauchsausweisWohnen, + } from "@ibcornelsen/database"; export let gebaeude: GebaeudeStammdaten; - export let ausweis: VerbrauchsausweisWohnen; + export let ausweis: VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe | BedarfsausweisWohnen; - $: baujahrHeizung = writable(gebaeude.baujahr_heizung || []) + $: baujahrHeizung = writable(gebaeude.baujahr_heizung || []); $: baujahr = writable(gebaeude.baujahr_gebaeude || []);
- Anlass für Energieausweis * - -
- - - - - + Anlass für Energieausweis * +
+ {#each Object.entries(Enums.Ausstellgrund) as [name, ausstellgrund]} + + {/each}
- Bitte geben Sie hier das Baujahr der - Heizungsanlage ein. Sollten - unterschiedliche Baujahre vorliegen, - dann geben Sie einen Zeitbereich ein
z.B. 1994-2001. + Bitte geben Sie hier das Baujahr der Heizungsanlage ein. Sollten + unterschiedliche Baujahre vorliegen, dann geben Sie einen + Zeitbereich ein
z.B. 1994-2001.
{ addNotification({ message: "Info", - subtext: "Wussten sie, dass sie mehrere Jahre angeben können in denen z.B. Renovierungen an ihrer Heizung durchgeführt wurden. Drücken sie dafür einfach Enter oder Space nach jedem Jahr.", + subtext: + "Wussten sie, dass sie mehrere Jahre angeben können in denen z.B. Renovierungen an ihrer Heizung durchgeführt wurden. Drücken sie dafür einfach Enter oder Space nach jedem Jahr.", dismissable: true, uid: "HEIZUNG_BAUJAHR", timeout: 0, - type: "info" + type: "info", }); }} onFocusOut={() => { - deleteNotification("HEIZUNG_BAUJAHR") + deleteNotification("HEIZUNG_BAUJAHR"); }} - className="{auditHeizungGebaeudeBaujahr(gebaeude) ? "linked" : ""}" + className={auditHeizungGebaeudeBaujahr(gebaeude) + ? "linked" + : ""} bind:tags={baujahrHeizung} />
@@ -102,12 +73,9 @@
- Bitte geben Sie hier das Baujahr des - Gebäudes ein. Sollte eine eine - grundlegende Sanierung von Dach, - Fenster und Heizung stattgefunden - haben, dann berücksichtigen Sie das - in dem Sie bei Sanierungsstatus + Bitte geben Sie hier das Baujahr des Gebäudes ein. Sollte eine eine + grundlegende Sanierung von Dach, Fenster und Heizung stattgefunden + haben, dann berücksichtigen Sie das in dem Sie bei Sanierungsstatus -saniert- angeben.
@@ -118,17 +86,20 @@ onFocusIn={() => { addNotification({ message: "Info", - subtext: "Wussten sie, dass sie mehrere Jahre angeben können in denen z.B. Renovierungen an ihrem Gebäude durchgeführt wurden. Drücken sie dafür einfach Enter oder Space nach jedem Jahr.", + subtext: + "Wussten sie, dass sie mehrere Jahre angeben können in denen z.B. Renovierungen an ihrem Gebäude durchgeführt wurden. Drücken sie dafür einfach Enter oder Space nach jedem Jahr.", dismissable: true, uid: "GEBAEUDE_BAUJAHR", timeout: 0, - type: "info" + type: "info", }); }} onFocusOut={() => { - deleteNotification("GEBAEUDE_BAUJAHR") + deleteNotification("GEBAEUDE_BAUJAHR"); }} - className="{auditHeizungGebaeudeBaujahr(gebaeude) ? "linked" : ""}" + className={auditHeizungGebaeudeBaujahr(gebaeude) + ? "linked" + : ""} bind:tags={baujahr} />
@@ -137,9 +108,8 @@
- Bitte geben Sie hier die Anzahl der - Wohnungen ein, die sich im Gebäude - befinden. + Bitte geben Sie hier die Anzahl der Wohnungen ein, die sich im + Gebäude befinden.
- Bitte geben Sie an ob das Gebäude - energetisch saniert oder unsaniert - ist. Wenn das Dach mindestens 12 cm - gedämmt und Heizung sowie Fenster - nicht älter als 30 Jahre sind, - können Sie saniert auswählen. + Bitte geben Sie an ob das Gebäude energetisch saniert oder unsaniert + ist. Wenn das Dach mindestens 12 cm gedämmt und Heizung sowie + Fenster nicht älter als 30 Jahre sind, können Sie saniert auswählen.
@@ -195,4 +158,4 @@ .radio-inline { @apply flex items-center; } - \ No newline at end of file + diff --git a/src/components/Ausweis/BilderZusatzsysteme.svelte b/src/components/Ausweis/BilderZusatzsysteme.svelte index a76cafb9..662aad3d 100644 --- a/src/components/Ausweis/BilderZusatzsysteme.svelte +++ b/src/components/Ausweis/BilderZusatzsysteme.svelte @@ -5,10 +5,10 @@ import DaemmungImage from "./DaemmungImage.svelte"; import FensterImage from "./FensterImage.svelte"; import Label from "../Label.svelte"; - import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database"; + import { BedarfsausweisWohnen, GebaeudeStammdaten, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "@ibcornelsen/database"; export let gebaeude: GebaeudeStammdaten; - export let ausweis: VerbrauchsausweisWohnen; + export let ausweis: VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe | BedarfsausweisWohnen; diff --git a/src/components/Ausweis/DaemmungImage.svelte b/src/components/Ausweis/DaemmungImage.svelte index a432759a..ae3d372d 100644 --- a/src/components/Ausweis/DaemmungImage.svelte +++ b/src/components/Ausweis/DaemmungImage.svelte @@ -1,9 +1,9 @@
diff --git a/src/components/Ausweis/FensterImage.svelte b/src/components/Ausweis/FensterImage.svelte index ebe97cbf..95f80448 100644 --- a/src/components/Ausweis/FensterImage.svelte +++ b/src/components/Ausweis/FensterImage.svelte @@ -1,9 +1,9 @@
diff --git a/src/components/Ausweis/HeizungImage.svelte b/src/components/Ausweis/HeizungImage.svelte index fb83ef46..784e3860 100644 --- a/src/components/Ausweis/HeizungImage.svelte +++ b/src/components/Ausweis/HeizungImage.svelte @@ -1,9 +1,9 @@
diff --git a/src/components/Ausweis/Verbrauch.svelte b/src/components/Ausweis/Verbrauch.svelte index 8ee7322a..078ee040 100644 --- a/src/components/Ausweis/Verbrauch.svelte +++ b/src/components/Ausweis/Verbrauch.svelte @@ -4,7 +4,7 @@ import Label from "../Label.svelte"; import fuelList from "./fuelList"; import { auditVerbrauchAbweichung } from "../Verbrauchsausweis/audits/VerbrauchAbweichung"; - import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database"; + import { GebaeudeStammdaten, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "@ibcornelsen/database"; let availableYears = [ 2018, 2019, @@ -25,7 +25,7 @@ ]; export let gebaeude: GebaeudeStammdaten; - export let ausweis: VerbrauchsausweisWohnen; + export let ausweis: VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe; const fuelMap: Record = {}; for (const fuel of fuelList) { diff --git a/src/components/Bedarfsausweis/BedarfsausweisContent.svelte b/src/components/Bedarfsausweis/BedarfsausweisContent.svelte index 5effb71c..5ea671bd 100644 --- a/src/components/Bedarfsausweis/BedarfsausweisContent.svelte +++ b/src/components/Bedarfsausweis/BedarfsausweisContent.svelte @@ -10,8 +10,9 @@ import BilderZusatzsysteme from "../Ausweis/BilderZusatzsysteme.svelte"; import moment from "moment"; import { BitChecker } from "src/lib/BitChecker"; + import { BedarfsausweisWohnen } from "@ibcornelsen/database"; - let ausweis = new Bedarfsausweis(); + let ausweis: BedarfsausweisWohnen = {} as BedarfsausweisWohnen; let daemmungsBreiten = [0, 0.02, 0.05, 0.08, 0.12, 0.16, 0.2, 0.3, 0.4]; diff --git a/src/components/DatenblattButton.svelte b/src/components/DatenblattButton.svelte index b9a6995b..0ac80617 100644 --- a/src/components/DatenblattButton.svelte +++ b/src/components/DatenblattButton.svelte @@ -1,8 +1,8 @@
diff --git a/src/components/Kaufabschluss/PriceContainer.svelte b/src/components/Kaufabschluss/PriceContainer.svelte index 113e387b..bbf8b423 100644 --- a/src/components/Kaufabschluss/PriceContainer.svelte +++ b/src/components/Kaufabschluss/PriceContainer.svelte @@ -1,18 +1,17 @@
@@ -180,62 +179,20 @@ Zusatzleistungen:
- - - - - - - - - - - - - - - - + {#each services as service} + + + + + {/each}
Qualitätsdruck per Post (zusätzlich zur PDF Version) für 9€ - inkl. MwSt. -
Aushang (für öffentliche Gebäude gesetzlich vorgeschrieben) - für 10€ inkl. MwSt. -
Same Day Service (Bestellung Werktags vor 12:00 Uhr - - Ausstellung bis 18:00 Uhr am gleichen Tag) für 29€ inkl. - MwSt. -
Telefonische Energieeffizienzberatung für 75€ inkl. MwSt. -
{service.name} +
diff --git a/src/components/UploadImages.svelte b/src/components/UploadImages.svelte index b915f117..c759d626 100644 --- a/src/components/UploadImages.svelte +++ b/src/components/UploadImages.svelte @@ -1,11 +1,11 @@ diff --git a/src/modules/KundendatenModule.svelte b/src/modules/KundendatenModule.svelte index b8d847cb..a313ca4e 100644 --- a/src/modules/KundendatenModule.svelte +++ b/src/modules/KundendatenModule.svelte @@ -4,14 +4,36 @@ import ZipSearch from "../components/ZIPSearch.svelte"; import Label from "../components/Label.svelte"; import PriceContainer from "#components/Kaufabschluss/PriceContainer.svelte"; - import { Benutzer, Bezahlmethoden, Enums, Rechnungen, VerbrauchsausweisWohnen } from "@ibcornelsen/database"; + import { BedarfsausweisWohnen, Benutzer, Bezahlmethoden, Enums, Rechnungen, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "@ibcornelsen/database"; import PaymentOption from "#components/PaymentOption.svelte"; import { client } from "src/trpc"; export let user: Benutzer; - export let ausweis: VerbrauchsausweisWohnen + export let ausweis: VerbrauchsausweisWohnen | BedarfsausweisWohnen | VerbrauchsausweisGewerbe; let rechnung: Rechnungen = {} as Rechnungen; + let services = [{ + name: "Qualitätsdruck per Post (zusätzlich zur PDF Version) für 9€ inkl. MwSt.", + id: Enums.Service.Qualitaetsdruck, + price: 9, + selected: false + }, { + name: "Aushang (für öffentliche Gebäude gesetzlich vorgeschrieben) für 10€ inkl. MwSt.", + id: Enums.Service.Aushang, + price: 10, + selected: false + }, { + name: "Same Day Service (Bestellung Werktags vor 12:00 Uhr - Ausstellung bis 18:00 Uhr am gleichen Tag) für 29€ inkl. MwSt.", + id: Enums.Service.SameDay, + price: 29, + selected: false + }, { + name: "Telefonische Energieeffizienzberatung für 75€ inkl. MwSt.", + id: Enums.Service.Telefonberatung, + price: 75, + selected: false + }] + export let selectedPaymentType: Bezahlmethoden = Enums.Bezahlmethoden.PAYPAL; let agbAkzeptiert: boolean; @@ -19,10 +41,10 @@ async function createPayment() { const response = await client.v1.rechnungen.erstellen.mutate({ - ausweisart: "VerbrauchsausweisWohnen", + ausweisart: ausweis.ausweisart, uid: ausweis.uid, payment_method: selectedPaymentType, - services: [] + services: services.filter(service => service.selected).map(service => service.id) }) window.location.href = response.checkout_url @@ -328,7 +350,7 @@
- +
diff --git a/src/components/VerbrauchsausweisGewerbe/BuildingTypes.ts b/src/modules/VerbrauchsausweisGewerbe/BuildingTypes.ts similarity index 100% rename from src/components/VerbrauchsausweisGewerbe/BuildingTypes.ts rename to src/modules/VerbrauchsausweisGewerbe/BuildingTypes.ts diff --git a/src/components/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeContent.svelte b/src/modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte similarity index 86% rename from src/components/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeContent.svelte rename to src/modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte index d110ec94..20caa9aa 100644 --- a/src/components/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeContent.svelte +++ b/src/modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte @@ -6,65 +6,56 @@ import Verbrauch from "#components/Ausweis/Verbrauch.svelte"; import Label from "#components/Label.svelte"; import Ausweisart from "#components/Ausweis/Ausweisart.svelte"; - import ZipSearch from "../ZIPSearch.svelte"; + import ZipSearch from "../../components/ZIPSearch.svelte"; import { buildingTypes } from "./BuildingTypes"; - import BilderZusatzsysteme from "../Ausweis/BilderZusatzsysteme.svelte"; + import BilderZusatzsysteme from "../../components/Ausweis/BilderZusatzsysteme.svelte"; import moment from "moment"; - import { VerbrauchsausweisGewerbe } from "@ibcornelsen/database"; + import { Enums, GebaeudeStammdaten, VerbrauchsausweisGewerbe } from "@ibcornelsen/database"; - let ausweis: VerbrauchsausweisGewerbe = {}; + export let uid: string | null = null; + export let gebaeude: GebaeudeStammdaten = {} as GebaeudeStammdaten; + export let ausweis: VerbrauchsausweisGewerbe = { + ausweisart: Enums.Ausweisart.VerbrauchsausweisGewerbe + } as VerbrauchsausweisGewerbe; let additionalHeating: boolean = false; let heatedWaterIncluded: boolean = false; let heatedWaterPortion: number = 18; - let hasCellar: boolean = false; - - let area = 0; - let zip: string = ""; - let city: string = ""; - - let baujahrGebaeude: number; - let baujahrHeizungsAnlage: number; - let apartmentCount: number; - let certificateReason: - | "Vermietung" - | "Neubau" - | "Verkauf" - | "Modernisierung" - | "Sonstiges"; - let sanitationStatus: boolean; let needsRequirementCertificate: boolean = false; $: needsRequirementCertificate = - (ausweis.baujahr_gebaeude < 1978 && - ausweis.anzahl_einheiten <= 4 && - ausweis.objekt_saniert == false && + (gebaeude.baujahr_gebaeude[0] < 1978 && + (gebaeude.einheiten || 0) <= 4 && + gebaeude.saniert == false && (ausweis.ausstellgrund == "Vermietung" || ausweis.ausstellgrund == "Sonstiges")) || ausweis.ausstellgrund == "Neubau" || ausweis.ausstellgrund == "Modernisierung" || ausweis.ausstellgrund == "Verkauf"; - function automatischAusfüllen() { - ausweis.baujahr_gebaeude = 1962; - ausweis.baujahr_anlage = 1974; - ausweis.objekt_saniert = true; - ausweis.anzahl_einheiten = 1; + function automatischAusfüllen() { + gebaeude.baujahr_gebaeude = [1962]; + gebaeude.baujahr_heizung = [1952]; + gebaeude.saniert = true; + gebaeude.einheiten = 1; ausweis.ausstellgrund = "Vermietung"; - ausweis.energieverbrauch_1_heizquelle_1 = 15000; - ausweis.energieverbrauch_2_heizquelle_1 = 14000; - ausweis.energieverbrauch_3_heizquelle_1 = 16000; - ausweis.wohnflaeche = 152; + ausweis.verbrauch_1 = 15000; + ausweis.verbrauch_2 = 14000; + ausweis.verbrauch_3 = 16000; + gebaeude.flaeche = 152; ausweis.keller_beheizt = true; - ausweis.energietraeger_1 = "Erdgas H"; - ausweis.energietraeger_einheit_heizquelle_1 = "kWh"; - ausweis.warmwasser_enthalten = true; + ausweis.brennstoff_1 = "Erdgas H"; + ausweis.einheit_1 = "kWh"; ausweis.anteil_warmwasser_1 = 18; - ausweis.energieverbrauch_zeitraum = moment("12.01.2019"); - ausweis.objekt_plz = "21039"; - ausweis.objekt_ort = "Hamburg"; - ausweis.objekt_strasse = "Curslacker Deich 170"; + ausweis.startdatum = moment("12.01.2019").toDate(); + gebaeude.plz = "21039"; + gebaeude.ort = "Hamburg"; + gebaeude.adresse = "Curslacker Deich 170"; + gebaeude.gebaeudeteil = "Gesamtgebäude"; + + gebaeude = gebaeude; + ausweis = ausweis; } @@ -97,7 +88,7 @@ - +
@@ -152,8 +143,8 @@
@@ -168,7 +159,7 @@ name="IGort" readonly={true} - bind:value={ausweis.objekt_ort} + bind:value={gebaeude.ort} type="text" />
@@ -190,7 +181,7 @@ autocomplete="off" data-rule-minlength="2" data-msg-minlength="min. 2 Zeichen" - bind:value={ausweis.wohnflaeche} + bind:value={gebaeude.flaeche} />
@@ -202,7 +193,7 @@