Bitte untenstehende Punkte bestätigen. Bitte gehen Sie gegebenenfalls zurück zum Formular und überprüfen bzw. korrigieren Ihre Eingaben.
@@ -1115,29 +1158,31 @@ sm:grid-cols-[min-content_min-content_min-content] sm:justify-self-end sm:mt-8"
- {#if rechnung && rechnung.status === "paid"}
-
-
- {:else}
- {#if gegAnfrage}
+ {#if !nurRechnungsadresseUpdate}
+ {#if rechnung && rechnung.status === "paid"}
+
bestellen()}>Absenden
{:else}
-
+ {#if gegAnfrage}
+
+ {:else}
+
+ {/if}
{/if}
{/if}
diff --git a/src/pages/api/rechnung/[id].ts b/src/pages/api/rechnung/[id].ts
index e19131b3..5f70c5e6 100644
--- a/src/pages/api/rechnung/[id].ts
+++ b/src/pages/api/rechnung/[id].ts
@@ -16,12 +16,14 @@ export const PATCH = defineApiRoute({
strasse: true,
telefon: true,
empfaenger: true,
+ zusatzzeile: true,
versand_empfaenger: true,
versand_ort: true,
versand_plz: true,
versand_strasse: true,
versand_zusatzzeile: true,
- abweichende_versand_adresse: true
+ abweichende_versand_adresse: true,
+ email: true
}),
output: z.object({
checkout_url: z.string().optional(),
@@ -31,22 +33,39 @@ export const PATCH = defineApiRoute({
headers: authorizationHeaders,
async fetch(input, context, user) {
// Wir holen uns die Rechnung
- const rechnung = await prisma.rechnung.findUnique({
- where: {
- id: context.params.id,
- benutzer: {
- id: user.id
+ let rechnung;
+ if (user.rolle !== Enums.BenutzerRolle.ADMIN) {
+ rechnung = await prisma.rechnung.findUnique({
+ where: {
+ id: context.params.id,
+ benutzer: {
+ id: user.id
+ }
+ },
+ include: {
+ bedarfsausweis_gewerbe: true,
+ bedarfsausweis_wohnen: true,
+ geg_nachweis_gewerbe: true,
+ geg_nachweis_wohnen: true,
+ verbrauchsausweis_gewerbe: true,
+ verbrauchsausweis_wohnen: true
}
- },
- include: {
- bedarfsausweis_gewerbe: true,
- bedarfsausweis_wohnen: true,
- geg_nachweis_gewerbe: true,
- geg_nachweis_wohnen: true,
- verbrauchsausweis_gewerbe: true,
- verbrauchsausweis_wohnen: true
- }
- })
+ })
+ } else {
+ rechnung = await prisma.rechnung.findUnique({
+ where: {
+ id: context.params.id
+ },
+ include: {
+ bedarfsausweis_gewerbe: true,
+ bedarfsausweis_wohnen: true,
+ geg_nachweis_gewerbe: true,
+ geg_nachweis_wohnen: true,
+ verbrauchsausweis_gewerbe: true,
+ verbrauchsausweis_wohnen: true
+ }
+ })
+ }
if (!rechnung) {
throw new APIError({
@@ -66,12 +85,14 @@ export const PATCH = defineApiRoute({
strasse: input.strasse,
telefon: input.telefon,
empfaenger: input.empfaenger,
+ zusatzzeile: input.zusatzzeile,
versand_empfaenger: input.versand_empfaenger,
versand_ort: input.versand_ort,
versand_plz: input.versand_plz,
versand_strasse: input.versand_strasse,
versand_zusatzzeile: input.versand_zusatzzeile,
abweichende_versand_adresse: input.abweichende_versand_adresse,
+ email: input.email
}
})
diff --git a/src/pages/dashboard/rechnung/aendern.astro b/src/pages/dashboard/rechnung/aendern.astro
new file mode 100644
index 00000000..cfc37b59
--- /dev/null
+++ b/src/pages/dashboard/rechnung/aendern.astro
@@ -0,0 +1,108 @@
+---
+import { encodeToken } from "#lib/auth/token";
+import { TokenType } from "#lib/auth/types";
+import { API_ACCESS_TOKEN_COOKIE_NAME, API_REFRESH_TOKEN_COOKIE_NAME } from "#lib/constants";
+import { Enums, prisma } from "#lib/server/prisma";
+import moment from "moment";
+import { createCaller } from "src/astro-typesafe-api-caller";
+import KundendatenModule from "#modules/KundendatenModule.svelte";
+import AusweisLayout from "#layouts/AusweisLayoutPruefung.astro";
+import { getCurrentUser, getOtherUser } from "#lib/server/user";
+import { getAusweisartFromId } from "#components/Ausweis/types";
+import { getAufnahme, getBedarfsausweisWohnen, getBilder, getObjekt, getRechnung, getUnterlagen, getVerbrauchsausweisGewerbe, getVerbrauchsausweisWohnen } from "#lib/server/db";
+import { BenutzerClient } from "#components/Ausweis/types.js";
+
+function getExistingAusweis(rechnung) {
+ if (rechnung.verbrauchsausweis_wohnen) {
+ return rechnung.verbrauchsausweis_wohnen;
+ }
+ if (rechnung.verbrauchsausweis_gewerbe) {
+ return rechnung.verbrauchsausweis_gewerbe;
+ }
+ if (rechnung.bedarfsausweis_wohnen) {
+ return rechnung.bedarfsausweis_wohnen ;
+ }
+ if (rechnung.bedarfsausweis_gewerbe) {
+ return rechnung.bedarfsausweis_gewerbe;
+ }
+ if (rechnung.geg_nachweis_gewerbe) {
+ return rechnung.geg_nachweis_gewerbe;
+ }
+ if (rechnung.geg_nachweis_wohnen) {
+ return rechnung.geg_nachweis_wohnen;
+ }
+ return null;
+}
+
+const user = await getCurrentUser(Astro);
+
+if (!user) {
+ return Astro.redirect("/auth/login")
+}
+
+const rechnungid = Astro.url.searchParams.get("rechnungid")
+
+if (!rechnungid) {
+ return Astro.redirect("/404")
+}
+
+let rechnung;
+
+//Only Admin can read foreign invoices
+if (user.rolle !== Enums.BenutzerRolle.ADMIN) {
+ rechnung = await prisma.rechnung.findUnique({
+ where: {
+ id: rechnungid,
+ benutzer_id: user.id
+ },
+ include: {
+ verbrauchsausweis_wohnen: true,
+ verbrauchsausweis_gewerbe: true,
+ bedarfsausweis_wohnen: true,
+ bedarfsausweis_gewerbe: true,
+ geg_nachweis_gewerbe: true,
+ geg_nachweis_wohnen: true
+ }
+ })
+} else {
+ rechnung = await prisma.rechnung.findUnique({
+ where: {
+ id: rechnungid,
+ },
+ include: {
+ verbrauchsausweis_wohnen: true,
+ verbrauchsausweis_gewerbe: true,
+ bedarfsausweis_wohnen: true,
+ bedarfsausweis_gewerbe: true,
+ geg_nachweis_gewerbe: true,
+ geg_nachweis_wohnen: true
+ }
+ })
+}
+
+if (!rechnung) {
+ return Astro.redirect("/404")
+}
+
+const ausweis = getExistingAusweis(rechnung);
+const ausweisart = getAusweisartFromId(ausweis.id)
+
+let aufnahme, objekt, bilder, unterlagen, partner_code;
+
+aufnahme = await getAufnahme(ausweis.aufnahme_id)
+objekt = await getObjekt(aufnahme?.objekt_id)
+bilder = await getBilder(ausweis.aufnahme_id)
+unterlagen = await getUnterlagen(ausweis.aufnahme_id)
+
+
+let impersonatedUser: Partial
| null = null;
+
+if (user){
+ if (user.id !== ausweis.benutzer_id && ausweis.benutzer_id !== undefined){
+ impersonatedUser = await getOtherUser(Astro, ausweis.benutzer_id) || {}
+ }
+}
+---
+
+
+
\ No newline at end of file