Verbrauchsausweis Gewerbe
This commit is contained in:
@@ -48,7 +48,58 @@ export async function ausweisSpeichern(
|
||||
|
||||
if (aufnahme.uid) {
|
||||
await api.aufnahme._uid.PATCH.fetch({
|
||||
...exclude(aufnahme, ["uid"])
|
||||
baujahr_gebaeude: aufnahme.baujahr_gebaeude,
|
||||
baujahr_heizung: aufnahme.baujahr_heizung,
|
||||
baujahr_klima: aufnahme.baujahr_klima,
|
||||
alternative_heizung: aufnahme.alternative_heizung,
|
||||
alternative_kuehlung: aufnahme.alternative_kuehlung,
|
||||
alternative_lueftung: aufnahme.alternative_lueftung,
|
||||
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
||||
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
||||
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
||||
ausweisart: aufnahme.ausweisart,
|
||||
brennstoff_1: aufnahme.brennstoff_1,
|
||||
brennstoff_2: aufnahme.brennstoff_2,
|
||||
brennwert_kessel: aufnahme.brennwert_kessel,
|
||||
dachgeschoss: aufnahme.dachgeschoss,
|
||||
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
||||
dachgeschoss_min_12cm_gedaemmt: aufnahme.dachgeschoss_min_12cm_gedaemmt,
|
||||
doppel_verglasung: aufnahme.doppel_verglasung,
|
||||
dreifach_verglasung: aufnahme.dreifach_verglasung,
|
||||
durchlauf_erhitzer: aufnahme.durchlauf_erhitzer,
|
||||
einfach_verglasung: aufnahme.einfach_verglasung,
|
||||
einheiten: aufnahme.einheiten,
|
||||
einzelofen: aufnahme.einzelofen,
|
||||
energieeffizienzklasse: aufnahme.energieeffizienzklasse,
|
||||
fenster_dicht: aufnahme.fenster_dicht,
|
||||
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
||||
flaeche: aufnahme.flaeche,
|
||||
gebaeudeteil: aufnahme.gebaeudeteil,
|
||||
gebaeudetyp: aufnahme.gebaeudetyp,
|
||||
heizungsrohre_gedaemmt: aufnahme.heizungsrohre_gedaemmt,
|
||||
isolier_verglasung: aufnahme.isolier_verglasung,
|
||||
keller: aufnahme.keller,
|
||||
keller_decke_gedaemmt: aufnahme.keller_decke_gedaemmt,
|
||||
keller_wand_gedaemmt: aufnahme.keller_wand_gedaemmt,
|
||||
kuehlung: aufnahme.kuehlung,
|
||||
leerstand: aufnahme.leerstand,
|
||||
lueftung: aufnahme.lueftung,
|
||||
niedertemperatur_kessel: aufnahme.niedertemperatur_kessel,
|
||||
nutzflaeche: aufnahme.nutzflaeche,
|
||||
oberste_geschossdecke_gedaemmt: aufnahme.oberste_geschossdecke_gedaemmt,
|
||||
oberste_geschossdecke_min_12cm_gedaemmt: aufnahme.oberste_geschossdecke_min_12cm_gedaemmt,
|
||||
photovoltaik: aufnahme.photovoltaik,
|
||||
raum_temperatur_regler: aufnahme.raum_temperatur_regler,
|
||||
rolllaeden_kaesten_gedaemmt: aufnahme.rolllaeden_kaesten_gedaemmt,
|
||||
saniert: aufnahme.saniert,
|
||||
solarsystem_warmwasser: aufnahme.solarsystem_warmwasser,
|
||||
standard_kessel: aufnahme.standard_kessel,
|
||||
tueren_dicht: aufnahme.tueren_dicht,
|
||||
tueren_undicht: aufnahme.tueren_undicht,
|
||||
waermepumpe: aufnahme.waermepumpe,
|
||||
warmwasser_rohre_gedaemmt: aufnahme.warmwasser_rohre_gedaemmt,
|
||||
zentralheizung: aufnahme.zentralheizung,
|
||||
zirkulation: aufnahme.zirkulation
|
||||
}, {
|
||||
params: {
|
||||
uid: aufnahme.uid
|
||||
|
||||
@@ -216,7 +216,7 @@
|
||||
>Stornieren</a>
|
||||
{/if}
|
||||
|
||||
{#if !rechnung || rechnung.bezahlmethode === Enums.Bezahlmethoden.rechnung}
|
||||
{#if ausweis.bestellt && (!rechnung || rechnung.bezahlmethode === Enums.Bezahlmethoden.rechnung)}
|
||||
<a href="/energieausweis-erstellen/bezahlung?uid={ausweis.uid}" class="button text-sm">Bezahlen</a>
|
||||
{/if}
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
maxlength="5"
|
||||
/>
|
||||
|
||||
<div data-test="plz-container" class="absolute top-[calc(100%+4px)] flex flex-col left-0 bg-white py-1 shadow-md rounded-lg z-10" class:hidden={hideZipDropdown}>
|
||||
<div data-cy="plz-container" class="absolute top-[calc(100%+4px)] flex flex-col left-0 bg-white py-1 shadow-md rounded-lg z-10" class:hidden={hideZipDropdown}>
|
||||
{#each zipCodes as zipCode}
|
||||
<button class="hover:bg-gray-100 cursor-pointer px-2 py-1 text-nowrap" type="button" tabindex="-1" on:click={() => {
|
||||
zip = zipCode.plz;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import fuelList from "#components/Ausweis/brennstoffListe.js";
|
||||
import { faker } from "@faker-js/faker";
|
||||
import { type Enums } from "#lib/client/prisma";
|
||||
import { Enums } from "#lib/client/prisma.js";
|
||||
|
||||
|
||||
import "cypress-file-upload"
|
||||
@@ -10,14 +10,14 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
||||
it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => {
|
||||
cy.visit("/energieausweis-erstellen/verbrauchsausweis-wohngebaeude");
|
||||
|
||||
cy.wait(1000);
|
||||
cy.wait(2000);
|
||||
|
||||
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
||||
cy.get("select[data-cy='ausstellgrund']")
|
||||
.select(
|
||||
faker.number.int({
|
||||
min: 0,
|
||||
max: (["Modernisierung", "Neubau", "Sonstiges", "Verkauf", "Vermietung"] as Enums.Ausstellgrund[]).length - 1,
|
||||
min: 1,
|
||||
max: Object.values(Enums.Ausstellgrund).length - 1,
|
||||
})
|
||||
)
|
||||
|
||||
@@ -60,6 +60,7 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
||||
);
|
||||
|
||||
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
||||
cy.get("[data-cy='plz-container']").find("button").first().click()
|
||||
|
||||
// Flaeche
|
||||
cy.get("input[name='flaeche']")
|
||||
@@ -103,8 +104,9 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
||||
}
|
||||
|
||||
// Verbrauchszeitraum
|
||||
cy.get("select[name='energieverbrauch_zeitraum_monat']").select(availableDates[0].month.toString());
|
||||
cy.get("select[name='energieverbrauch_zeitraum_jahr']").select(availableDates[0].year.toString());
|
||||
cy.get("select[name='energieverbrauch_zeitraum_monat']").select(availableDates[0].month.toString());
|
||||
|
||||
|
||||
// Verbrauch
|
||||
cy.get("input[name='verbrauch_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
||||
@@ -235,58 +237,45 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
||||
cy.get("input[name='gebaeude_image']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" });
|
||||
|
||||
// Jetzt können wir den Verbrauchsausweis erstellen.
|
||||
cy.get("form[name='ausweis'] button[data-cy='weiter']").click({ force: true });
|
||||
cy.get("form[data-cy='ausweis'] button[data-cy='weiter']").click({ force: true });
|
||||
|
||||
// Wir sind nicht eingeloggt also sollte jetzt ein Login Screen erscheinen.
|
||||
// Wir klicken auf registrieren und erstellen einen neuen Benutzer, danach loggen wir uns mit diesem ein.
|
||||
cy.get("[data-cy='registrieren']").click();
|
||||
cy.url().should("contain", "/kundendaten");
|
||||
|
||||
const email = faker.internet.email();
|
||||
const passwort = "test1234";
|
||||
const vorname = faker.person.firstName();
|
||||
const nachname = faker.person.lastName();
|
||||
const telefon = faker.phone.number()
|
||||
|
||||
cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").type(email);
|
||||
cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
||||
cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname);
|
||||
cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(nachname);
|
||||
const strasse = faker.location.streetAddress({ useFullAddress: true })
|
||||
const plz = faker.location.zipCode("#####")
|
||||
|
||||
cy.get("form[name='signup'] button[type='submit']").click();
|
||||
cy.get("input[name='vorname']").should("have.attr", "type", "text").type(vorname);
|
||||
cy.get("input[name='name']").should("have.attr", "type", "text").type(nachname);
|
||||
cy.get("input[name='telefon']").should("have.attr", "type", "text").type(telefon);
|
||||
// Rechnung
|
||||
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").type(`${vorname} ${nachname}`);
|
||||
cy.get("input[name='rechnung_strasse']").should("have.attr", "type", "text").type(strasse);
|
||||
cy.get("input[name='rechnung_plz']").should("have.attr", "type", "text").type(plz);
|
||||
cy.get("[data-cy='plz-container']").children().first().click()
|
||||
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").type(email);
|
||||
|
||||
cy.get("[data-cy='paypal']").click()
|
||||
|
||||
cy.get("button[data-cy='bestellen']").click();
|
||||
|
||||
cy.get("a[data-cy='registrieren']").should("be.visible").click();
|
||||
|
||||
// Wir sind jetzt registriert und können uns nun einloggen.
|
||||
// Die Email sollte automatisch eingetragen sein, da wir uns gerade registriert haben.
|
||||
cy.get("form[name='login'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email);
|
||||
cy.get("form[name='login'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
||||
cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname);
|
||||
cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(nachname);
|
||||
cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email);
|
||||
cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
||||
|
||||
cy.get("form[name='signup'] button[type='submit']").click();
|
||||
cy.get("form[name='login'] button[type='submit']").click();
|
||||
|
||||
// Der Ausweis sollte jetzt schon erstellt worden sein und wir sollten auf die kundendaten seite weitergeleitet worden sein.
|
||||
cy.url().should("contain", "/kundendaten");
|
||||
|
||||
cy.wait(1000)
|
||||
|
||||
// Wir füllen jetzt die Kundendaten aus.
|
||||
// cy.get("select[name='anrede']").select(Math.random() > 0.5 ? "Herr" : "Frau");
|
||||
cy.get("input[name='vorname']").should("contain.value", vorname);
|
||||
cy.get("input[name='name']").should("contain.value", nachname);
|
||||
// cy.get("input[name='email']").should("contain.value", email);
|
||||
// cy.get("input[name='telefon']").type(faker.phone.number());
|
||||
|
||||
cy.get("input[name='rechnung_empfaenger']").type(`${vorname} ${nachname}`);
|
||||
cy.get("input[name='rechnung_strasse']").type(faker.location.streetAddress());
|
||||
// TODO: Random Plz generieren, allerdings muss die auch in der Datenbank vorhanden sein...
|
||||
cy.get("input[name='rechnung_plz']").type("2103");
|
||||
// Jetzt sollte der PLZ Container erscheinen, dort klicken wir einfach das erste Element an.
|
||||
cy.get("div[data-test='plz-container']").children().first().click();
|
||||
// cy.get("input[name='rechnung_telefon']").type(faker.phone.number());
|
||||
cy.get("input[name='rechnung_email']").should("contain.value", email);
|
||||
cy.get("input[data-cy='paypal']").click();
|
||||
|
||||
// Datenschutz und AGB akzeptieren, dann schicken wir das Formular ab.
|
||||
// cy.get("input[name='agb-akzeptieren']").check()
|
||||
// cy.get("input[name='datenschutz-akzeptieren']").check()
|
||||
cy.get("button[data-cy='bestellen']").click();
|
||||
|
||||
cy.origin('https://www.mollie.com', () => {
|
||||
// Jetzt sind wir auf der Mollie Seite, dort wählen wir den "paid" status aus
|
||||
cy.get("input[type='radio'][name='final_state'][value='paid']").check();
|
||||
|
||||
@@ -11,7 +11,7 @@ import { addAnsichtsausweisLabel, addDatumGEG } from "./utils/helpers.js";
|
||||
|
||||
|
||||
export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: UploadedGebaeudeBild[], user: BenutzerClient) {
|
||||
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("./templates/GEG24_Nichtwohngebaeude.pdf", import.meta.url), "base64");
|
||||
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/GEG24_Nichtwohngebaeude.pdf", import.meta.url), "base64");
|
||||
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
|
||||
const pages = pdf.getPages()
|
||||
|
||||
@@ -184,7 +184,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
||||
|
||||
// Stempel und Unterschrift
|
||||
if (ausweis.ausgestellt) {
|
||||
const stempel = await pdf.embedPng(fs.readFileSync(new URL("./images/stempel-unterschrift.png", import.meta.url), "base64"));
|
||||
const stempel = await pdf.embedPng(fs.readFileSync(new URL("../../../public/pdf/images/stempel-unterschrift.png", import.meta.url), "base64"));
|
||||
const stempelHeight = 60
|
||||
|
||||
pages[0].drawImage(stempel, {
|
||||
@@ -197,7 +197,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
||||
|
||||
|
||||
// Aussteller
|
||||
const aussteller = await pdf.embedPng(fs.readFileSync(new URL("./images/aussteller.png", import.meta.url), "base64"));
|
||||
const aussteller = await pdf.embedPng(fs.readFileSync(new URL("../../../public/pdf/images/aussteller.png", import.meta.url), "base64"));
|
||||
pages[0].drawImage(aussteller, {
|
||||
x: 40,
|
||||
y: height - 750,
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
<script lang="ts">
|
||||
import PerformanceScore from "#components/Ausweis/PerformanceScore.svelte";
|
||||
import Progressbar from "#components/Ausweis/Progressbar.svelte";
|
||||
import { PRICES } from "#lib/constants.js";
|
||||
|
||||
import ButtonSpaeterHilfe from "#components/Ausweis/ButtonSpaeterHilfe.svelte";
|
||||
|
||||
import ButtonWeiterHilfe from "#components/Ausweis/ButtonWeiterHilfe.svelte";
|
||||
import Ausweisart from "#components/Ausweis/Ausweisart.svelte";
|
||||
import Warmwasseranteil from "#components/Ausweis/Warmwasseranteil.svelte";
|
||||
@@ -52,7 +50,7 @@
|
||||
const ausweisart = Enums.Ausweisart.VerbrauchsausweisGewerbe
|
||||
const anliegen = "Energieausweis erstellen";
|
||||
|
||||
if (moment(localStorage.getItem("verbrauchsausweis-gewerbe.updated_at") || new Date()).isAfter(ausweis.updated_at)) {
|
||||
if (!ausweis.updated_at || moment(localStorage.getItem("verbrauchsausweis-gewerbe.updated_at") || new Date()).isAfter(ausweis.updated_at)) {
|
||||
const localStorageAusweis = localStorage.getItem("verbrauchsausweis-gewerbe.ausweis");
|
||||
if (localStorageAusweis) {
|
||||
ausweis = JSON.parse(localStorageAusweis)
|
||||
|
||||
@@ -143,7 +143,7 @@ let skala: HTMLDivElement;
|
||||
|
||||
|
||||
|
||||
<form id="formInput-1" data-test="ausweis" bind:this={form}>
|
||||
<form id="formInput-1" data-cy="ausweis" bind:this={form}>
|
||||
<div id="formular-box" class="formular-boxen ring-0">
|
||||
|
||||
<ButtonWeiterHilfe
|
||||
|
||||
@@ -14,7 +14,9 @@ export const PATCH = defineApiRoute({
|
||||
aufnahme_id: true,
|
||||
updated_at: true,
|
||||
created_at: true
|
||||
}),
|
||||
}).merge(z.object({
|
||||
startdatum: z.coerce.date()
|
||||
})),
|
||||
output: z.void(),
|
||||
headers: {
|
||||
"Authorization": z.string()
|
||||
|
||||
Reference in New Issue
Block a user