Kundendaten

This commit is contained in:
Moritz Utcke
2025-03-19 23:39:48 -03:00
parent d38bd8a6ad
commit 9706a839d6
3 changed files with 86 additions and 96 deletions

View File

@@ -5,7 +5,6 @@ export const createCaller = createCallerFactory({
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
"unterlage": await import("../src/pages/api/unterlage.ts"),
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
@@ -13,20 +12,24 @@ export const createCaller = createCallerFactory({
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
"auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"),
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
"bedarfsausweis-gewerbe/[uid]": await import("../src/pages/api/bedarfsausweis-gewerbe/[uid].ts"),
"bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"),
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
"geg-nachweis-gewerbe/[uid]": await import("../src/pages/api/geg-nachweis-gewerbe/[uid].ts"),
"geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"),
"geg-nachweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-wohnen/[uid].ts"),
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
"objekt": await import("../src/pages/api/objekt/index.ts"),
"rechnung/[uid]": await import("../src/pages/api/rechnung/[uid].ts"),
"rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"),
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
"ticket": await import("../src/pages/api/ticket/index.ts"),
"user": await import("../src/pages/api/user/index.ts"),
"user/self": await import("../src/pages/api/user/self.ts"),
@@ -34,9 +37,6 @@ export const createCaller = createCallerFactory({
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
"verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"),
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
"rechnung/[uid]": await import("../src/pages/api/rechnung/[uid].ts"),
"rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"),
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
"aufnahme/[uid]/bilder": await import("../src/pages/api/aufnahme/[uid]/bilder.ts"),
"aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid]/index.ts"),

View File

@@ -1,4 +1,3 @@
import Sqids from "sqids";
import { writable, Writable } from "svelte/store";
import { ZodEffects, ZodNullable, ZodOptional, ZodType } from "zod";

View File

@@ -27,12 +27,10 @@
import { addNotification } from "#components/Notifications/shared.js";
import NotificationWrapper from "#components/Notifications/NotificationWrapper.svelte";
import { nachweisSpeichern } from "#client/lib/nachweisSpeichern.js";
import { localStorageSync, writableSync } from "#client/lib/helpers.js";
import HelpLabel from "#components/labels/HelpLabel.svelte";
import InputLabel from "#components/labels/InputLabel.svelte";
import PlzSuche from "#components/PlzSuche.svelte";
import { writable } from "svelte/store";
export let user: Partial<BenutzerClient>;
export let ausweis: VerbrauchsausweisWohnenClient;
export let aufnahme: AufnahmeClient;
@@ -44,39 +42,32 @@
export let aktiveBezahlmethode: Bezahlmethoden = Enums.Bezahlmethoden.paypal;
export let ausweistyp: Enums.AusweisTyp = Enums.AusweisTyp.Standard;
const email = localStorageSync(user.email || "", "kundendaten.email")
const vorname = localStorageSync(user.vorname || "", "kundendaten.vorname")
const name = localStorageSync(user.name || "", "kundendaten.name")
const empfaenger = localStorageSync(`${user.vorname} ${user.name}`, "kundendaten.empfaenger", JSON.parse, JSON.stringify)
const strasse = localStorageSync(user.adresse || "", "kundendaten.strasse")
const plz = localStorageSync(user.plz || "", "kundendaten.plz")
const ort = localStorageSync(user.ort || "", "kundendaten.ort")
const zusatzzeile = localStorageSync("", "kundendaten.zusatzzeile")
const telefon = localStorageSync(user.telefon || "", "kundendaten.telefon")
let email = localStorage.getItem("kundendaten.email") || user.email;
let vorname = localStorage.getItem("kundendaten.vorname") || user.vorname;
let name = localStorage.getItem("kundendaten.name") || user.name;
let empfaenger = localStorage.getItem("kundendaten.empfaenger") || `${user.vorname} ${user.name}`
let strasse = localStorage.getItem("kundendaten.strasse") || user.adresse;
let plz = localStorage.getItem("kundendaten.plz") || user.plz;
let ort = localStorage.getItem("kundendaten.ort") || user.ort;
let zusatzzeile = localStorage.getItem("kundendaten.zusatzzeile")
let telefon = localStorage.getItem("kundendaten.telefon") || user.telefon;
const abweichende_versand_adresse = localStorageSync(false, "kundendaten.abweichende_versand_adresse", JSON.parse, JSON.stringify)
let abweichende_versand_adresse = JSON.parse(localStorage.getItem("kundendaten.abweichende_versand_adresse") || "false")
let versand_email,
versand_zusatzzeile,
versand_empfaenger,
versand_strasse,
versand_plz,
versand_ort;
let versand_email: string,
versand_zusatzzeile: string,
versand_empfaenger: string,
versand_strasse: string,
versand_plz: string,
versand_ort: string;
$: {
if ($abweichende_versand_adresse) {
versand_email = writable($email)
versand_zusatzzeile = writable($zusatzzeile)
versand_empfaenger = writable($empfaenger)
versand_strasse = writable($strasse)
versand_plz = writable($plz)
versand_ort = writable($ort)
} else {
versand_email = writableSync(email)
versand_zusatzzeile = writableSync(zusatzzeile)
versand_empfaenger = writableSync(empfaenger)
versand_strasse = writableSync(strasse)
versand_plz = writableSync(plz)
versand_ort = writableSync(ort)
if (!abweichende_versand_adresse) {
versand_email = email
versand_zusatzzeile = zusatzzeile
versand_empfaenger = empfaenger
versand_strasse = strasse
versand_plz = plz
versand_ort = ort
}
}
@@ -174,16 +165,16 @@
try {
const { uid } = await api.rechnung.anfordern.PUT.fetch(
{
email: $email,
empfaenger: $empfaenger,
strasse: $strasse,
plz: $plz,
ort: $ort,
versand_empfaenger: $versand_empfaenger,
versand_strasse: $versand_strasse,
versand_plz: $versand_plz,
versand_ort: $versand_ort,
telefon: $telefon,
email: email,
empfaenger: empfaenger,
strasse: strasse,
plz: plz,
ort: ort,
versand_empfaenger: versand_empfaenger,
versand_strasse: versand_strasse,
versand_plz: versand_plz,
versand_ort: versand_ort,
telefon: telefon,
nachweis_uid: result.uid_nachweis,
},
{
@@ -296,17 +287,17 @@
if (rechnung) {
const result = await api.rechnung._uid.PATCH.fetch({
bezahlmethode: aktiveBezahlmethode,
abweichende_versand_adresse: $abweichende_versand_adresse,
empfaenger: $empfaenger,
strasse: $strasse,
plz: $plz,
ort: $ort,
versand_empfaenger: $versand_empfaenger,
versand_strasse: $versand_strasse,
versand_plz: $versand_plz,
versand_ort: $versand_ort,
telefon: $telefon,
versand_zusatzzeile: $versand_zusatzzeile
abweichende_versand_adresse: abweichende_versand_adresse,
empfaenger: empfaenger,
strasse: strasse,
plz: plz,
ort: ort,
versand_empfaenger: versand_empfaenger,
versand_strasse: versand_strasse,
versand_plz: versand_plz,
versand_ort: versand_ort,
telefon: telefon,
versand_zusatzzeile: versand_zusatzzeile
}, {
params: {
uid: rechnung.uid
@@ -326,16 +317,16 @@
services: services
.filter((service) => service.selected)
.map((service) => service.id),
email: $email,
empfaenger: $empfaenger,
strasse: $strasse,
plz: $plz,
ort: $ort,
versand_empfaenger: $versand_empfaenger,
versand_strasse: $versand_strasse,
versand_plz: $versand_plz,
versand_ort: $versand_ort,
telefon: $telefon,
email: email,
empfaenger: empfaenger,
strasse: strasse,
plz: plz,
ort: ort,
versand_empfaenger: versand_empfaenger,
versand_strasse: versand_strasse,
versand_plz: versand_plz,
versand_ort: versand_ort,
telefon: telefon,
ausweis_uid: ausweis.uid,
ausweistyp,
},
@@ -455,7 +446,7 @@
<div class="input-standard order-1 md:order-1 xl:order-1">
<InputLabel title="Vorname *"></InputLabel>
<input name="vorname" type="text" bind:value={$vorname} required />
<input name="vorname" type="text" bind:value={vorname} required />
<div class="help-label">
<HelpLabel>
@@ -469,7 +460,7 @@
<div class="input-standard order-2 md:order-2 xl:order-2">
<InputLabel title="Nachname *"></InputLabel>
<input name="name" type="text" bind:value={$name} required />
<input name="name" type="text" bind:value={name} required />
<div class="help-label">
<HelpLabel>
@@ -484,7 +475,7 @@
<div class="input-standard order-3 md:order-3 xl:order-3">
<InputLabel title="Telefonnummer *"></InputLabel>
<input name="telefon" bind:value={$telefon} type="text" required />
<input name="telefon" bind:value={telefon} type="text" required />
<div class="help-label">
<HelpLabel>
@@ -513,7 +504,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
<input
name="rechnung_empfaenger"
type="text"
bind:value={$empfaenger}
bind:value={empfaenger}
required
data-rule-maxlength="100"
data-msg-maxlength="max. 100 Zeichen"
@@ -534,7 +525,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
<input
name="rechnung_strasse"
bind:value={$strasse}
bind:value={strasse}
type="text"
required
data-rule-maxlength="40"
@@ -556,8 +547,8 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
<InputLabel title="PLZ *"></InputLabel>
<PlzSuche
name="rechnung_plz"
bind:zip={$plz}
bind:city={$ort}
bind:zip={plz}
bind:city={ort}
/>
</div>
@@ -568,7 +559,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
name="rechnung_ort"
type="text"
required
bind:value={$ort}
bind:value={ort}
/>
<div class="help-label">
@@ -587,7 +578,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
<input
name="rechnung_zusatzzeile"
bind:value={$zusatzzeile}
bind:value={zusatzzeile}
type="text"
data-rule-maxlength="80"
data-msg-maxlength="max. 80 Zeichen"
@@ -606,7 +597,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
<div class="input-standard order-5 md:order-5 xl:order-5">
<InputLabel title="E-mail *"></InputLabel>
<input name="rechnung_email" bind:value={$email} type="email" />
<input name="rechnung_email" bind:value={email} type="email" />
<div class="help-label">
<HelpLabel>
@@ -625,7 +616,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
class="w-[15px] h-[15px]"
type="checkbox"
name="abweichende_versand_adresse"
bind:checked={$abweichende_versand_adresse}
bind:checked={abweichende_versand_adresse}
/>
<label for="abweichende_versand_adresse" class="cursor-pointer"
@@ -634,7 +625,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
</div>
</div>
{#if $abweichende_versand_adresse}
{#if abweichende_versand_adresse}
<!-- Versand Empfänger * -->
<div class="input-standard order-8 md:order-8 xl:order-8">
@@ -643,8 +634,8 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
<input
name="versand_empfaenger"
type="text"
readonly={!$abweichende_versand_adresse}
bind:value={$versand_empfaenger}
readonly={!abweichende_versand_adresse}
bind:value={versand_empfaenger}
required
data-rule-maxlength="100"
data-msg-maxlength="max. 100 Zeichen"
@@ -665,8 +656,8 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
<input
name="versand_strasse"
type="text"
readonly={!$abweichende_versand_adresse}
bind:value={$versand_strasse}
readonly={!abweichende_versand_adresse}
bind:value={versand_strasse}
required
data-rule-maxlength="40"
data-msg-maxlength="max. 40 Zeichen"
@@ -689,9 +680,9 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
<InputLabel title="PLZ *"></InputLabel>
<PlzSuche
name="versand_plz"
readonly={!$abweichende_versand_adresse}
bind:zip={$versand_plz}
bind:city={$versand_ort}
readonly={!abweichende_versand_adresse}
bind:zip={versand_plz}
bind:city={versand_ort}
/>
</div>
@@ -703,7 +694,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
type="text"
readonly
required
bind:value={$versand_ort}
bind:value={versand_ort}
/>
<div class="help-label">
@@ -723,8 +714,8 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
<input
name="versand_zusatzzeile"
type="text"
readonly={!$abweichende_versand_adresse}
bind:value={$versand_zusatzzeile}
readonly={!abweichende_versand_adresse}
bind:value={versand_zusatzzeile}
data-rule-maxlength="80"
data-msg-maxlength="max. 80 Zeichen"
/>
@@ -744,7 +735,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
<input
name="versand_email"
bind:value={$versand_email}
bind:value={versand_email}
type="email"
/>
@@ -929,7 +920,7 @@ sm:grid-cols-[min-content_min-content_min-content] sm:justify-self-end sm:mt-8"
<Overlay bind:hidden={loginOverlayHidden}>
<div class="bg-white w-full max-w-screen-sm py-8">
<EmbeddedAuthFlowModule onLogin={loginAction} email={$email}></EmbeddedAuthFlowModule>
<EmbeddedAuthFlowModule onLogin={loginAction} email={email}></EmbeddedAuthFlowModule>
</div>
</Overlay>