Bugfixes
This commit is contained in:
17
prisma/migrations/20250409152238_ausweis_id/migration.sql
Normal file
17
prisma/migrations/20250409152238_ausweis_id/migration.sql
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "BedarfsausweisGewerbe" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'BedarfsausweisGewerbe';
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "BedarfsausweisWohnen" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'BedarfsausweisWohnen';
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "GEGNachweisGewerbe" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'GEGNachweisGewerbe';
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "GEGNachweisWohnen" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'GEGNachweisWohnen';
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "VerbrauchsausweisGewerbe" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'VerbrauchsausweisGewerbe';
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "VerbrauchsausweisWohnen" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'VerbrauchsausweisWohnen';
|
||||||
@@ -26,6 +26,7 @@ model BedarfsausweisGewerbe {
|
|||||||
klimatisierung Boolean? @default(false)
|
klimatisierung Boolean? @default(false)
|
||||||
|
|
||||||
nachweistyp AusweisTyp @default(Standard)
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(BedarfsausweisGewerbe)
|
||||||
|
|
||||||
created_at DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
updated_at DateTime @updatedAt @default(now())
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ model BedarfsausweisWohnen {
|
|||||||
pruefpunkt_fenster Boolean? @default(false)
|
pruefpunkt_fenster Boolean? @default(false)
|
||||||
|
|
||||||
ausweistyp AusweisTyp @default(Standard)
|
ausweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(BedarfsausweisWohnen)
|
||||||
|
|
||||||
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ model GEGNachweisGewerbe {
|
|||||||
beschreibung String? @db.Text
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
nachweistyp AusweisTyp @default(Standard)
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(GEGNachweisGewerbe)
|
||||||
|
|
||||||
created_at DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
updated_at DateTime @updatedAt @default(now())
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ model GEGNachweisWohnen {
|
|||||||
beschreibung String? @db.Text
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
nachweistyp AusweisTyp @default(Standard)
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(GEGNachweisWohnen)
|
||||||
|
|
||||||
created_at DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
updated_at DateTime @updatedAt @default(now())
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ model VerbrauchsausweisGewerbe {
|
|||||||
updated_at DateTime @updatedAt @default(now())
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
ausweistyp AusweisTyp @default(Standard)
|
ausweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(VerbrauchsausweisGewerbe)
|
||||||
|
|
||||||
pruefpunkt_heizungsalter Boolean? @default(false)
|
pruefpunkt_heizungsalter Boolean? @default(false)
|
||||||
pruefpunkt_verbrauch_niedrig Boolean? @default(false)
|
pruefpunkt_verbrauch_niedrig Boolean? @default(false)
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ model VerbrauchsausweisWohnen {
|
|||||||
kontrolldatei_angefragt Boolean? @default(false)
|
kontrolldatei_angefragt Boolean? @default(false)
|
||||||
|
|
||||||
ausweistyp AusweisTyp @default(Standard)
|
ausweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(VerbrauchsausweisWohnen)
|
||||||
|
|
||||||
created_at DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
updated_at DateTime @updatedAt @default(now())
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { api } from "astro-typesafe-api/client";
|
import { api } from "astro-typesafe-api/client";
|
||||||
import { exclude } from "#lib/exclude.js";
|
|
||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
import {
|
import {
|
||||||
@@ -566,7 +565,7 @@ export async function ausweisSpeichern(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
aufnahme.id = aufnahme_id;
|
aufnahme.id = aufnahme_id as string;
|
||||||
|
|
||||||
if (ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
if (ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||||
const id = await verbrauchsausweisWohnenSpeichern(
|
const id = await verbrauchsausweisWohnenSpeichern(
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js";
|
|
||||||
import ThickArrowDown from "radix-svelte-icons/src/lib/icons/ThickArrowDown.svelte";
|
import ThickArrowDown from "radix-svelte-icons/src/lib/icons/ThickArrowDown.svelte";
|
||||||
import {
|
import {
|
||||||
BedarfsausweisWohnenClient,
|
BedarfsausweisWohnenClient,
|
||||||
@@ -9,8 +8,9 @@
|
|||||||
VerbrauchsausweisWohnenClient,
|
VerbrauchsausweisWohnenClient,
|
||||||
} from "./types.js";
|
} from "./types.js";
|
||||||
import ThickArrowUp from "radix-svelte-icons/src/lib/icons/ThickArrowUp.svelte";
|
import ThickArrowUp from "radix-svelte-icons/src/lib/icons/ThickArrowUp.svelte";
|
||||||
import { Enums } from "#lib/client/prisma";
|
import { Enums } from "#lib/client/prisma.js";
|
||||||
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
|
import { endEnergieVerbrauchVerbrauchsausweis_2016_Client } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Client.js";
|
||||||
|
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Client } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Client.js";
|
||||||
|
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient;
|
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient;
|
||||||
export let aufnahme: AufnahmeClient;
|
export let aufnahme: AufnahmeClient;
|
||||||
@@ -21,7 +21,9 @@
|
|||||||
[Enums.Ausweisart.VerbrauchsausweisGewerbe]: 1000,
|
[Enums.Ausweisart.VerbrauchsausweisGewerbe]: 1000,
|
||||||
[Enums.Ausweisart.VerbrauchsausweisWohnen]: 250,
|
[Enums.Ausweisart.VerbrauchsausweisWohnen]: 250,
|
||||||
[Enums.Ausweisart.BedarfsausweisWohnen]: 250,
|
[Enums.Ausweisart.BedarfsausweisWohnen]: 250,
|
||||||
[Enums.Ausweisart.BedarfsausweisGewerbe]: 250
|
[Enums.Ausweisart.BedarfsausweisGewerbe]: 0,
|
||||||
|
[Enums.Ausweisart.GEGNachweisGewerbe]: 0,
|
||||||
|
[Enums.Ausweisart.GEGNachweisWohnen]: 0,
|
||||||
}[ausweisart];
|
}[ausweisart];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -64,9 +66,9 @@
|
|||||||
(async () => {
|
(async () => {
|
||||||
let result;
|
let result;
|
||||||
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
|
||||||
result = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
|
result = await endEnergieVerbrauchVerbrauchsausweis_2016_Client(ausweis, aufnahme, objekt);
|
||||||
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||||
result = await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis, aufnahme, objekt);
|
result = await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Client(ausweis, aufnahme, objekt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
|
|||||||
@@ -398,7 +398,6 @@
|
|||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if benutzer.rolle === Enums.BenutzerRolle.ADMIN}
|
{#if benutzer.rolle === Enums.BenutzerRolle.ADMIN}
|
||||||
<!-- TODO -->
|
|
||||||
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
|
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
|
||||||
<a
|
<a
|
||||||
class="button text-sm"
|
class="button text-sm"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const BedarfsausweisGewerbeSchema = z.object({
|
export const BedarfsausweisGewerbeSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -20,6 +20,7 @@ export const BedarfsausweisGewerbeSchema = z.object({
|
|||||||
bauteilaktivierung: z.boolean().nullish(),
|
bauteilaktivierung: z.boolean().nullish(),
|
||||||
klimatisierung: z.boolean().nullish(),
|
klimatisierung: z.boolean().nullish(),
|
||||||
nachweistyp: z.nativeEnum(AusweisTyp),
|
nachweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const BedarfsausweisWohnenSchema = z.object({
|
export const BedarfsausweisWohnenSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -86,6 +86,7 @@ export const BedarfsausweisWohnenSchema = z.object({
|
|||||||
pruefpunkt_geometrie: z.boolean().nullish(),
|
pruefpunkt_geometrie: z.boolean().nullish(),
|
||||||
pruefpunkt_fenster: z.boolean().nullish(),
|
pruefpunkt_fenster: z.boolean().nullish(),
|
||||||
ausweistyp: z.nativeEnum(AusweisTyp),
|
ausweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
rechnung_id: z.string().nullish(),
|
rechnung_id: z.string().nullish(),
|
||||||
aufnahme_id: z.string().describe("ID der korrespondierenden Gebäudeaufnahme"),
|
aufnahme_id: z.string().describe("ID der korrespondierenden Gebäudeaufnahme"),
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const GEGNachweisGewerbeSchema = z.object({
|
export const GEGNachweisGewerbeSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -10,6 +10,7 @@ export const GEGNachweisGewerbeSchema = z.object({
|
|||||||
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
||||||
nachweistyp: z.nativeEnum(AusweisTyp),
|
nachweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const GEGNachweisWohnenSchema = z.object({
|
export const GEGNachweisWohnenSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -10,6 +10,7 @@ export const GEGNachweisWohnenSchema = z.object({
|
|||||||
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
||||||
nachweistyp: z.nativeEnum(AusweisTyp),
|
nachweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const VerbrauchsausweisGewerbeSchema = z.object({
|
export const VerbrauchsausweisGewerbeSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -52,6 +52,7 @@ export const VerbrauchsausweisGewerbeSchema = z.object({
|
|||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
ausweistyp: z.nativeEnum(AusweisTyp),
|
ausweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
pruefpunkt_heizungsalter: z.boolean().nullish(),
|
pruefpunkt_heizungsalter: z.boolean().nullish(),
|
||||||
pruefpunkt_verbrauch_niedrig: z.boolean().nullish(),
|
pruefpunkt_verbrauch_niedrig: z.boolean().nullish(),
|
||||||
pruefpunkt_verbrauch_hoch: z.boolean().nullish(),
|
pruefpunkt_verbrauch_hoch: z.boolean().nullish(),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const VerbrauchsausweisWohnenSchema = z.object({
|
export const VerbrauchsausweisWohnenSchema = z.object({
|
||||||
id: z.string().describe("ID des Ausweises"),
|
id: z.string().describe("ID des Ausweises"),
|
||||||
@@ -38,6 +38,7 @@ export const VerbrauchsausweisWohnenSchema = z.object({
|
|||||||
beschreibung: z.string().nullish(),
|
beschreibung: z.string().nullish(),
|
||||||
kontrolldatei_angefragt: z.boolean().describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde").nullish(),
|
kontrolldatei_angefragt: z.boolean().describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde").nullish(),
|
||||||
ausweistyp: z.nativeEnum(AusweisTyp),
|
ausweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
pruefpunkt_heizungsalter: z.boolean().nullish(),
|
pruefpunkt_heizungsalter: z.boolean().nullish(),
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ export async function getVerbrauchsausweisWohnenKomplett(id: string) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type VerbrauchsausweisWohnenKomplett = Awaited<ReturnType<typeof getVerbrauchsausweisWohnenKomplett>>;
|
||||||
|
|
||||||
export async function getVerbrauchsausweisGewerbe(id: string): Promise<VerbrauchsausweisGewerbe | null> {
|
export async function getVerbrauchsausweisGewerbe(id: string): Promise<VerbrauchsausweisGewerbe | null> {
|
||||||
return await prisma.verbrauchsausweisGewerbe.findUnique({
|
return await prisma.verbrauchsausweisGewerbe.findUnique({
|
||||||
where: {
|
where: {
|
||||||
|
|||||||
@@ -1,37 +1,52 @@
|
|||||||
import { getAusweisartFromId } from "#components/Ausweis/types.js";
|
import { getAusweisartFromId } from "#components/Ausweis/types.js";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { createLexOfficeCustomer } from "./lexoffice.js";
|
import { createLexOfficeCustomer } from "./lexoffice.js";
|
||||||
import { Enums, prisma, Rechnung, VerbrauchsausweisWohnen } from "./prisma.js";
|
import { Enums, prisma, Rechnung } from "./prisma.js";
|
||||||
import { LEX_OFFICE_API_KEY, PRICES } from "#lib/constants.js";
|
import { LEX_OFFICE_API_KEY, PRICES } from "#lib/constants.js";
|
||||||
|
import { VerbrauchsausweisWohnenKomplett } from "./db.js";
|
||||||
|
|
||||||
export function createLineItem(name: string, preis: number, steuer: number) {
|
export function createLineItem(name: string, preis: number, steuer: number) {
|
||||||
return {
|
return {
|
||||||
"type": "custom",
|
type: "custom",
|
||||||
"name": name,
|
name: name,
|
||||||
"description": "",
|
description: "",
|
||||||
"quantity": 1,
|
quantity: 1,
|
||||||
"lineItemAmount": preis,
|
lineItemAmount: preis,
|
||||||
"unitName": name,
|
unitName: name,
|
||||||
"unitPrice": {
|
unitPrice: {
|
||||||
"currency": "EUR",
|
currency: "EUR",
|
||||||
"grossAmount": preis,
|
grossAmount: preis,
|
||||||
"taxRatePercentage": steuer
|
taxRatePercentage: steuer,
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addedServicesNeu(data: any, rechnung: Rechnung, steuer: number){
|
type LineItem = ReturnType<typeof createLineItem>;
|
||||||
if (rechnung.services.includes(Enums.Service.Qualitaetsdruck)){
|
|
||||||
data["lineItems"].push(createLineItem('Zusatzservice Postversand', 9, steuer))
|
export function addedServicesNeu(
|
||||||
|
data: any,
|
||||||
|
rechnung: Rechnung,
|
||||||
|
steuer: number
|
||||||
|
) {
|
||||||
|
if (rechnung.services.includes(Enums.Service.Qualitaetsdruck)) {
|
||||||
|
data["lineItems"].push(
|
||||||
|
createLineItem("Zusatzservice Postversand", 9, steuer)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (rechnung.services.includes(Enums.Service.Aushang)){
|
if (rechnung.services.includes(Enums.Service.Aushang)) {
|
||||||
data["lineItems"].push(createLineItem('Zusatzservice Aushang', 10, steuer))
|
data["lineItems"].push(
|
||||||
|
createLineItem("Zusatzservice Aushang", 10, steuer)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (rechnung.services.includes(Enums.Service.SameDay)){
|
if (rechnung.services.includes(Enums.Service.SameDay)) {
|
||||||
data["lineItems"].push(createLineItem('Zusatzservice Same Day Service', 29, steuer))
|
data["lineItems"].push(
|
||||||
|
createLineItem("Zusatzservice Same Day Service", 29, steuer)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (rechnung.services.includes(Enums.Service.Telefonberatung)){
|
if (rechnung.services.includes(Enums.Service.Telefonberatung)) {
|
||||||
data["lineItems"].push(createLineItem('Zusatzservice Telefonische Beratung', 75, steuer))
|
data["lineItems"].push(
|
||||||
|
createLineItem("Zusatzservice Telefonische Beratung", 75, steuer)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
@@ -45,16 +60,23 @@ export function addedServicesNeu(data: any, rechnung: Rechnung, steuer: number){
|
|||||||
* @return array
|
* @return array
|
||||||
* @throws Error
|
* @throws Error
|
||||||
*/
|
*/
|
||||||
export async function createInvoice(ausweis: VerbrauchsausweisWohnen, rechnung: Rechnung) {
|
export async function createInvoice(
|
||||||
|
ausweis: VerbrauchsausweisWohnenKomplett,
|
||||||
|
rechnung: Rechnung
|
||||||
|
) {
|
||||||
|
if (!ausweis) {
|
||||||
|
throw new Error("Ausweis ist null");
|
||||||
|
}
|
||||||
|
|
||||||
if (!ausweis.benutzer_id) {
|
if (!ausweis.benutzer_id) {
|
||||||
throw new Error("Benutzer ist nicht vorhanden")
|
throw new Error("Benutzer ist nicht vorhanden");
|
||||||
}
|
}
|
||||||
|
|
||||||
const user = await prisma.benutzer.findUnique({
|
const user = await prisma.benutzer.findUnique({
|
||||||
where: {
|
where: {
|
||||||
id: ausweis.benutzer_id
|
id: ausweis.benutzer_id,
|
||||||
}
|
},
|
||||||
})
|
});
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
throw new Error("Nutzer existiert nicht!");
|
throw new Error("Nutzer existiert nicht!");
|
||||||
@@ -66,126 +88,195 @@ export async function createInvoice(ausweis: VerbrauchsausweisWohnen, rechnung:
|
|||||||
|
|
||||||
await prisma.benutzer.update({
|
await prisma.benutzer.update({
|
||||||
where: {
|
where: {
|
||||||
id: user.id
|
id: user.id,
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
lex_office_id: user.lex_office_id
|
lex_office_id: user.lex_office_id,
|
||||||
}
|
},
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const ausweisart = getAusweisartFromId(ausweis.id);
|
const ausweisart = getAusweisartFromId(ausweis.id);
|
||||||
|
|
||||||
let data = {
|
let data = {
|
||||||
"voucherDate": moment().format('YYYY-MM-DDTHH:mm:ss.SSSZ'),
|
voucherDate: moment().format("YYYY-MM-DDTHH:mm:ss.SSSZ"),
|
||||||
"taxConditions": {
|
taxConditions: {
|
||||||
"taxType": "gross"
|
taxType: "gross",
|
||||||
},
|
},
|
||||||
"shippingConditions": {
|
shippingConditions: {
|
||||||
"shippingType": "none"
|
shippingType: "none",
|
||||||
},
|
},
|
||||||
"address": {
|
address: {
|
||||||
"contactId": user.lex_office_id,
|
contactId: user.lex_office_id,
|
||||||
"name": rechnung.empfaenger || "----",
|
name: rechnung.empfaenger || "----",
|
||||||
"street": rechnung.strasse,
|
street: rechnung.strasse,
|
||||||
"city": rechnung.ort,
|
city: rechnung.ort,
|
||||||
"zip": rechnung.plz,
|
zip: rechnung.plz,
|
||||||
"countryCode": "DE",
|
countryCode: "DE",
|
||||||
"supplement": rechnung.zusatzzeile
|
supplement: rechnung.zusatzzeile,
|
||||||
},
|
},
|
||||||
"lineItems": [],
|
lineItems: [] as LineItem[],
|
||||||
"totalPrice": {
|
totalPrice: {
|
||||||
"currency": "EUR",
|
currency: "EUR",
|
||||||
"totalGrossAmount": rechnung.betrag,
|
totalGrossAmount: rechnung.betrag,
|
||||||
},
|
},
|
||||||
"title": "Rechnung",
|
title: "Rechnung",
|
||||||
"introduction": "Ihren Energieausweis (Ausweis ID {ausweis.id}) stellen wir Ihnen hiermit in Rechnung",
|
introduction:
|
||||||
"remark": "Vielen Dank für Ihren Einkauf."
|
"Ihren Energieausweis (Ausweis ID {ausweis.id}) stellen wir Ihnen hiermit in Rechnung",
|
||||||
|
remark: "Vielen Dank für Ihren Einkauf.",
|
||||||
};
|
};
|
||||||
|
|
||||||
if (rechnung.status == Enums.Rechnungsstatus.paid) {
|
if (rechnung.status == Enums.Rechnungsstatus.paid) {
|
||||||
const types = {
|
const types: Record<Enums.Bezahlmethoden, string> = {
|
||||||
[Enums.Bezahlmethoden.paypal]: "PayPal",
|
[Enums.Bezahlmethoden.paypal]: "PayPal",
|
||||||
[Enums.Bezahlmethoden.creditcard]: "Kreditkarte",
|
[Enums.Bezahlmethoden.creditcard]: "Kreditkarte",
|
||||||
[Enums.Bezahlmethoden.sofort]: "Sofortüberweisung",
|
[Enums.Bezahlmethoden.sofort]: "Sofortüberweisung",
|
||||||
[Enums.Bezahlmethoden.giropay]: "Giropay",
|
[Enums.Bezahlmethoden.giropay]: "Giropay",
|
||||||
|
[Enums.Bezahlmethoden.rechnung]: "Rechnung",
|
||||||
};
|
};
|
||||||
|
|
||||||
const type = types[rechnung.bezahlmethode];
|
const type = types[rechnung.bezahlmethode];
|
||||||
|
|
||||||
data["introduction"] = `Vielen Dank für Ihren Einkauf (Ausweis ID ${ausweis.id}). Ihre Rechnung haben sie bereits mit ${type} bezahlt.`;
|
data[
|
||||||
|
"introduction"
|
||||||
|
] = `Vielen Dank für Ihren Einkauf (Ausweis ID ${ausweis.id}). Ihre Rechnung haben sie bereits mit ${type} bezahlt.`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const tax_rate = 19;
|
const tax_rate = 19;
|
||||||
|
|
||||||
if (rechnung.betrag == 15) {
|
if (rechnung.betrag == 15) {
|
||||||
// Korrektur alleinstehend
|
// Korrektur alleinstehend
|
||||||
data["lineItems"].push(createLineItem("Service Korrektur anfordern", rechnung.betrag, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem("Service Korrektur anfordern", rechnung.betrag, 19)
|
||||||
|
);
|
||||||
} else if (rechnung.betrag == 476) {
|
} else if (rechnung.betrag == 476) {
|
||||||
data["lineItems"].push(createLineItem("GEG Berechnung Wohngebäude", rechnung.betrag, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem("GEG Berechnung Wohngebäude", rechnung.betrag, 19)
|
||||||
|
);
|
||||||
} else if (rechnung.betrag > 400 && rechnung.betrag != 476) {
|
} else if (rechnung.betrag > 400 && rechnung.betrag != 476) {
|
||||||
data["lineItems"].push(createLineItem("Bedarfsausweis Gewerbe", rechnung.betrag, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem("Bedarfsausweis Gewerbe", rechnung.betrag, 19)
|
||||||
|
);
|
||||||
} else if (ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
} else if (ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||||
if (ausweis.ausweistyp == Enums.AusweisTyp.Standard) {
|
if (ausweis.ausweistyp == Enums.AusweisTyp.Standard) {
|
||||||
data["lineItems"].push(createLineItem(`Verbrauchsausweis Online (ID ${ausweis.id})`, PRICES.VerbrauchsausweisWohnen.Standard, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem(
|
||||||
|
`Verbrauchsausweis Online (ID ${ausweis.id})`,
|
||||||
|
PRICES.VerbrauchsausweisWohnen.Standard,
|
||||||
|
19
|
||||||
|
)
|
||||||
|
);
|
||||||
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Beratung) {
|
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Beratung) {
|
||||||
data["lineItems"].push(createLineItem(`Verbrauchsausweis Online (Vorprüfung negativ) (ID ${ausweis.id})`, PRICES.VerbrauchsausweisWohnen.Beratung, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem(
|
||||||
|
`Verbrauchsausweis Online (Vorprüfung negativ) (ID ${ausweis.id})`,
|
||||||
|
PRICES.VerbrauchsausweisWohnen.Beratung,
|
||||||
|
19
|
||||||
|
)
|
||||||
|
);
|
||||||
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Offline) {
|
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Offline) {
|
||||||
data["lineItems"].push(createLineItem(`Verbrauchsausweis Offline (ID ${ausweis.id})`, PRICES.VerbrauchsausweisWohnen.Offline, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem(
|
||||||
|
`Verbrauchsausweis Offline (ID ${ausweis.id})`,
|
||||||
|
PRICES.VerbrauchsausweisWohnen.Offline,
|
||||||
|
19
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} else if (ausweisart == Enums.Ausweisart.BedarfsausweisWohnen) {
|
} else if (ausweisart == Enums.Ausweisart.BedarfsausweisWohnen) {
|
||||||
if (ausweis.ausweistyp == Enums.AusweisTyp.Standard) {
|
if (ausweis.ausweistyp == Enums.AusweisTyp.Standard) {
|
||||||
data["lineItems"].push(createLineItem(`Bedarfsausweis Online (ID ${ausweis.id})`, PRICES.VerbrauchsausweisWohnen.Standard, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem(
|
||||||
|
`Bedarfsausweis Online (ID ${ausweis.id})`,
|
||||||
|
PRICES.VerbrauchsausweisWohnen.Standard,
|
||||||
|
19
|
||||||
|
)
|
||||||
|
);
|
||||||
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Beratung) {
|
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Beratung) {
|
||||||
data["lineItems"].push(createLineItem(`Bedarfsausweis Online (Vorprüfung negativ) (ID ${ausweis.id})`, PRICES.VerbrauchsausweisWohnen.Beratung, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem(
|
||||||
|
`Bedarfsausweis Online (Vorprüfung negativ) (ID ${ausweis.id})`,
|
||||||
|
PRICES.VerbrauchsausweisWohnen.Beratung,
|
||||||
|
19
|
||||||
|
)
|
||||||
|
);
|
||||||
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Offline) {
|
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Offline) {
|
||||||
data["lineItems"].push(createLineItem(`Bedarfsausweis Offline (ID ${ausweis.id})`, PRICES.VerbrauchsausweisWohnen.Offline, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem(
|
||||||
|
`Bedarfsausweis Offline (ID ${ausweis.id})`,
|
||||||
|
PRICES.VerbrauchsausweisWohnen.Offline,
|
||||||
|
19
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} else if (ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
} else if (ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||||
if (ausweis.ausweistyp == Enums.AusweisTyp.Standard) {
|
if (ausweis.ausweistyp == Enums.AusweisTyp.Standard) {
|
||||||
data["lineItems"].push(createLineItem(`Verbrauchsausweis Nichtwohngebäude Online (ID ${ausweis.id})`, PRICES.VerbrauchsausweisGewerbe.Standard, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem(
|
||||||
|
`Verbrauchsausweis Nichtwohngebäude Online (ID ${ausweis.id})`,
|
||||||
|
PRICES.VerbrauchsausweisGewerbe.Standard,
|
||||||
|
19
|
||||||
|
)
|
||||||
|
);
|
||||||
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Beratung) {
|
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Beratung) {
|
||||||
data["lineItems"].push(createLineItem(`Verbrauchsausweis Nichtwohngebäude Online (Vorprüfung negativ) (ID ${ausweis.id})`, PRICES.VerbrauchsausweisGewerbe.Beratung, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem(
|
||||||
|
`Verbrauchsausweis Nichtwohngebäude Online (Vorprüfung negativ) (ID ${ausweis.id})`,
|
||||||
|
PRICES.VerbrauchsausweisGewerbe.Beratung,
|
||||||
|
19
|
||||||
|
)
|
||||||
|
);
|
||||||
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Offline) {
|
} else if (ausweis.ausweistyp == Enums.AusweisTyp.Offline) {
|
||||||
data["lineItems"].push(createLineItem(`Verbrauchsausweis Nichtwohngebäude Offline (ID ${ausweis.id})`, PRICES.VerbrauchsausweisGewerbe.Offline, 19));
|
data["lineItems"].push(
|
||||||
|
createLineItem(
|
||||||
|
`Verbrauchsausweis Nichtwohngebäude Offline (ID ${ausweis.id})`,
|
||||||
|
PRICES.VerbrauchsausweisGewerbe.Offline,
|
||||||
|
19
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data = addedServicesNeu(data, rechnung, 19);
|
data = addedServicesNeu(data, rechnung, 19);
|
||||||
|
|
||||||
|
const response = await fetch(
|
||||||
const response = await fetch("https://api.lexoffice.io/v1/invoices?finalize=true", {
|
"https://api.lexoffice.io/v1/invoices?finalize=true",
|
||||||
method: "POST",
|
{
|
||||||
headers: {
|
method: "POST",
|
||||||
Accept: `application/json`,
|
headers: {
|
||||||
Authorization: `Bearer ${LEX_OFFICE_API_KEY}`,
|
Accept: `application/json`,
|
||||||
"Content-Type": "application/json"
|
Authorization: `Bearer ${LEX_OFFICE_API_KEY}`,
|
||||||
},
|
"Content-Type": "application/json",
|
||||||
body: JSON.stringify(data)
|
},
|
||||||
})
|
body: JSON.stringify(data),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
if (response.status == 400) {
|
if (response.status == 400) {
|
||||||
throw new Error("Fehler beim Absenden der Request.")
|
throw new Error("Fehler beim Absenden der Request.");
|
||||||
}
|
}
|
||||||
|
|
||||||
const invoice = await response.json()
|
const invoice = await response.json();
|
||||||
|
|
||||||
// Wir müssen den Ausweis nun wieder abfragen, um die erstellte Rechnungsnummer zu bekommen.
|
// Wir müssen den Ausweis nun wieder abfragen, um die erstellte Rechnungsnummer zu bekommen.
|
||||||
const response_id = invoice["id"];
|
const response_id = invoice["id"];
|
||||||
|
|
||||||
const request = await fetch(`https://api.lexoffice.io/v1/invoices/${response_id}`, {
|
const request = await fetch(
|
||||||
method: "GET",
|
`https://api.lexoffice.io/v1/invoices/${response_id}`,
|
||||||
headers: {
|
{
|
||||||
Accept: `application/json`,
|
method: "GET",
|
||||||
Authorization: `Bearer ${LEX_OFFICE_API_KEY}`,
|
headers: {
|
||||||
"Content-Type": "application/json"
|
Accept: `application/json`,
|
||||||
|
Authorization: `Bearer ${LEX_OFFICE_API_KEY}`,
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
})
|
);
|
||||||
|
|
||||||
const abfrage_response = await request.json()
|
const abfrage_response = await request.json();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: invoice["id"],
|
id: invoice["id"],
|
||||||
voucherNumber: abfrage_response["voucherNumber"]
|
voucherNumber: abfrage_response["voucherNumber"],
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<span>{user.vorname} {user.name}</span>
|
<span>{user.vorname} {user.name}</span>
|
||||||
<span class="text-xs">{user.email}</span>
|
<span class="text-xs">{user.email}</span>
|
||||||
</div>
|
</div>
|
||||||
<a href="/dashboard/admin/impersonate?uid={user.uid}" class="button text-sm">Einloggen</a>
|
<a href="/dashboard/admin/impersonate?id={user.id}" class="button text-sm">Einloggen</a>
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -32,6 +32,8 @@
|
|||||||
import { getMaximumDevitationInPercent } from "#client/lib/helpers.js";
|
import { getMaximumDevitationInPercent } from "#client/lib/helpers.js";
|
||||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js";
|
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js";
|
||||||
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
|
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
|
||||||
|
import { endEnergieVerbrauchVerbrauchsausweis_2016_Client } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Client.js";
|
||||||
|
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Client } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Client.js";
|
||||||
|
|
||||||
export let user: Partial<BenutzerClient>;
|
export let user: Partial<BenutzerClient>;
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbe | BedarfsausweisWohnen;
|
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbe | BedarfsausweisWohnen;
|
||||||
@@ -394,33 +396,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO
|
|
||||||
* Ausschlusskriterien: Neubau, Modernisierung
|
|
||||||
Baujahr vor 1978, unsaniert und bis 4 Wohneinheiten /
|
|
||||||
Heizung jünger als 3 Jahre / Verbrauchsjahre unvollständig / Verbrauchsjahre nicht aktuell genug /
|
|
||||||
Klimafaktoren unvollständig /
|
|
||||||
Leerstand größer 30% /
|
|
||||||
Fehlende oder unvollständige Bilder (pro Abschnitt mindestens ein Bild) /
|
|
||||||
Fehlende Angaben zum Sanierungsstand (Bei F mindestens 2 Haken), (Bei G mindestens 1 Haken)
|
|
||||||
*/
|
|
||||||
let bestellenNichtMoeglich = false;
|
|
||||||
if (
|
|
||||||
((ausweis.ausstellgrund === "Neubau" ||
|
|
||||||
ausweis.ausstellgrund === "Modernisierung") &&
|
|
||||||
aufnahme.baujahr_gebaeude[0] < 1978 &&
|
|
||||||
aufnahme.saniert === false &&
|
|
||||||
aufnahme.einheiten &&
|
|
||||||
aufnahme.einheiten > 4) ||
|
|
||||||
new Date().getFullYear() - aufnahme.baujahr_heizung[0] < 3 ||
|
|
||||||
!ausweis.verbrauch_1 ||
|
|
||||||
!ausweis.verbrauch_2 ||
|
|
||||||
!ausweis.verbrauch_3 ||
|
|
||||||
(aufnahme.leerstand && aufnahme.leerstand > 30)
|
|
||||||
) {
|
|
||||||
bestellenNichtMoeglich = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
const gegAnfrage =
|
const gegAnfrage =
|
||||||
ausweisart === Enums.Ausweisart.GEGNachweisWohnen ||
|
ausweisart === Enums.Ausweisart.GEGNachweisWohnen ||
|
||||||
ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe ||
|
ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe ||
|
||||||
@@ -924,7 +899,7 @@ grid-cols-3 sm:grid-cols-5 justify-around justify-items-center items-center"
|
|||||||
<h3>Bitte untenstehende Punkte bestätigen. Bitte gehen Sie gegebenenfalls zurück zum Formular und überprüfen bzw. korrigieren Ihre Eingaben.</h3>
|
<h3>Bitte untenstehende Punkte bestätigen. Bitte gehen Sie gegebenenfalls zurück zum Formular und überprüfen bzw. korrigieren Ihre Eingaben.</h3>
|
||||||
|
|
||||||
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
|
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
|
||||||
{@const request = ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen ? endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt) : endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis, aufnahme, objekt)}
|
{@const request = ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen ? endEnergieVerbrauchVerbrauchsausweis_2016_Client(ausweis, aufnahme, objekt) : endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Client(ausweis, aufnahme, objekt)}
|
||||||
|
|
||||||
{#await request}
|
{#await request}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,11 @@ import { PutObjectCommand } from "@aws-sdk/client-s3";
|
|||||||
import { s3Client } from "#lib/s3.js";
|
import { s3Client } from "#lib/s3.js";
|
||||||
import { createInvoice } from "#lib/server/invoice.js";
|
import { createInvoice } from "#lib/server/invoice.js";
|
||||||
import { tryCatch } from "#lib/tryCatch.js";
|
import { tryCatch } from "#lib/tryCatch.js";
|
||||||
import { getBedarfsausweisWohnenKomplett, getVerbrauchsausweisGewerbeKomplett, getVerbrauchsausweisWohnenKomplett } from "#lib/server/db.js";
|
import {
|
||||||
|
getBedarfsausweisWohnenKomplett,
|
||||||
|
getVerbrauchsausweisGewerbeKomplett,
|
||||||
|
getVerbrauchsausweisWohnenKomplett,
|
||||||
|
} from "#lib/server/db.js";
|
||||||
|
|
||||||
export const GET = defineApiRoute({
|
export const GET = defineApiRoute({
|
||||||
input: z.object({
|
input: z.object({
|
||||||
@@ -40,18 +44,18 @@ export const GET = defineApiRoute({
|
|||||||
aufnahme: Aufnahme & {
|
aufnahme: Aufnahme & {
|
||||||
bilder: Bild[];
|
bilder: Bild[];
|
||||||
objekt: Objekt & {
|
objekt: Objekt & {
|
||||||
benutzer: Benutzer;
|
benutzer: Benutzer | null;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
| null = null;
|
| null = null;
|
||||||
|
|
||||||
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||||
ausweis = await getVerbrauchsausweisWohnenKomplett(id_ausweis)
|
ausweis = await getVerbrauchsausweisWohnenKomplett(id_ausweis);
|
||||||
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||||
ausweis = await getVerbrauchsausweisGewerbeKomplett(id_ausweis)
|
ausweis = await getVerbrauchsausweisGewerbeKomplett(id_ausweis);
|
||||||
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
|
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
|
||||||
ausweis = await getBedarfsausweisWohnenKomplett(id_ausweis)
|
ausweis = await getBedarfsausweisWohnenKomplett(id_ausweis);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ausweis) {
|
if (!ausweis) {
|
||||||
@@ -81,22 +85,24 @@ export const GET = defineApiRoute({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!rechnung.lex_office_id) {
|
if (!rechnung.lex_office_id) {
|
||||||
const [result, error] = await tryCatch(createInvoice(ausweis, rechnung));
|
const [result, error] = await tryCatch(
|
||||||
|
createInvoice(ausweis, rechnung)
|
||||||
|
);
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { id, voucherNumber } = result;
|
const { id, voucherNumber } = result;
|
||||||
|
|
||||||
await prisma.rechnung.update({
|
await prisma.rechnung.update({
|
||||||
where: {
|
where: {
|
||||||
id: rechnung.id
|
id: rechnung.id,
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
lex_office_id: id
|
lex_office_id: id,
|
||||||
}
|
},
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const pdfAusweis = await getAnsichtsausweis(
|
const pdfAusweis = await getAnsichtsausweis(
|
||||||
@@ -123,7 +129,7 @@ export const GET = defineApiRoute({
|
|||||||
ACL: "private",
|
ACL: "private",
|
||||||
});
|
});
|
||||||
|
|
||||||
const response = await s3Client.send(command);
|
await s3Client.send(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdfDatenblatt) {
|
if (pdfDatenblatt) {
|
||||||
@@ -134,7 +140,7 @@ export const GET = defineApiRoute({
|
|||||||
ACL: "private",
|
ACL: "private",
|
||||||
});
|
});
|
||||||
|
|
||||||
const response = await s3Client.send(command);
|
await s3Client.send(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
let text: string;
|
let text: string;
|
||||||
@@ -230,30 +236,30 @@ fax 040 · 209339859
|
|||||||
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||||
await prisma.verbrauchsausweisWohnen.update({
|
await prisma.verbrauchsausweisWohnen.update({
|
||||||
where: {
|
where: {
|
||||||
id: ausweis.id
|
id: ausweis.id,
|
||||||
},
|
|
||||||
data: {
|
|
||||||
ausgestellt: true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
|
||||||
await prisma.verbrauchsausweisGewerbe.update({
|
|
||||||
where: {
|
|
||||||
id: ausweis.id
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
ausgestellt: true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
|
|
||||||
await prisma.bedarfsausweisWohnen.update({
|
|
||||||
where: {
|
|
||||||
id: ausweis.id
|
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
ausgestellt: true,
|
ausgestellt: true,
|
||||||
}
|
},
|
||||||
})
|
});
|
||||||
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||||
|
await prisma.verbrauchsausweisGewerbe.update({
|
||||||
|
where: {
|
||||||
|
id: ausweis.id,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
ausgestellt: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
|
||||||
|
await prisma.bedarfsausweisWohnen.update({
|
||||||
|
where: {
|
||||||
|
id: ausweis.id,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
ausgestellt: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { GEGNachweisWohnenClient, OptionalNullable, UUidWithPrefix, ZodOverlap } from "#components/Ausweis/types.js";
|
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||||
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||||
import { generatePrefixedId } from "#lib/db.js";
|
import { generatePrefixedId } from "#lib/db.js";
|
||||||
import { exclude } from "#lib/exclude.js";
|
import { exclude } from "#lib/exclude.js";
|
||||||
@@ -19,7 +19,8 @@ export const PATCH = defineApiRoute({
|
|||||||
rechnung_id: true,
|
rechnung_id: true,
|
||||||
storniert: true,
|
storniert: true,
|
||||||
updated_at: true,
|
updated_at: true,
|
||||||
zurueckgestellt: true
|
zurueckgestellt: true,
|
||||||
|
ausweisart: true
|
||||||
}),
|
}),
|
||||||
output: z.void(),
|
output: z.void(),
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ export const PUT = defineApiRoute({
|
|||||||
rechnung_id: true,
|
rechnung_id: true,
|
||||||
storniert: true,
|
storniert: true,
|
||||||
updated_at: true,
|
updated_at: true,
|
||||||
zurueckgestellt: true
|
zurueckgestellt: true,
|
||||||
|
ausweisart: true
|
||||||
}),
|
}),
|
||||||
aufnahme_id: UUidWithPrefix
|
aufnahme_id: UUidWithPrefix
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { BedarfsausweisWohnenClient, OptionalNullable, UUidWithPrefix, VerbrauchsausweisWohnenClient, ZodOverlap } from "#components/Ausweis/types.js";
|
import { BedarfsausweisWohnenClient, OptionalNullable, UUidWithPrefix, ZodOverlap } from "#components/Ausweis/types.js";
|
||||||
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||||
import { generatePrefixedId } from "#lib/db.js";
|
import { generatePrefixedId } from "#lib/db.js";
|
||||||
import { exclude } from "#lib/exclude.js";
|
import { exclude } from "#lib/exclude.js";
|
||||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||||
import { BedarfsausweisWohnen, prisma } from "#lib/server/prisma.js";
|
import { prisma } from "#lib/server/prisma.js";
|
||||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||||
import { BedarfsausweisWohnenSchema } from "src/generated/zod/bedarfsausweiswohnen.js";
|
import { BedarfsausweisWohnenSchema } from "src/generated/zod/bedarfsausweiswohnen.js";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
@@ -19,7 +19,8 @@ export const PATCH = defineApiRoute({
|
|||||||
zurueckgestellt: true,
|
zurueckgestellt: true,
|
||||||
created_at: true,
|
created_at: true,
|
||||||
updated_at: true,
|
updated_at: true,
|
||||||
storniert: true
|
storniert: true,
|
||||||
|
ausweisart: true
|
||||||
}),
|
}),
|
||||||
output: z.void(),
|
output: z.void(),
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ export const PUT = defineApiRoute({
|
|||||||
created_at: true,
|
created_at: true,
|
||||||
updated_at: true,
|
updated_at: true,
|
||||||
storniert: true,
|
storniert: true,
|
||||||
|
ausweisart: true
|
||||||
}),
|
}),
|
||||||
aufnahme_id: UUidWithPrefix,
|
aufnahme_id: UUidWithPrefix,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { GEGNachweisWohnenClient, OptionalNullable, UUidWithPrefix, ZodOverlap } from "#components/Ausweis/types.js";
|
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||||
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||||
import { generatePrefixedId } from "#lib/db.js";
|
import { generatePrefixedId } from "#lib/db.js";
|
||||||
import { exclude } from "#lib/exclude.js";
|
import { exclude } from "#lib/exclude.js";
|
||||||
@@ -19,7 +19,8 @@ export const PATCH = defineApiRoute({
|
|||||||
rechnung_id: true,
|
rechnung_id: true,
|
||||||
storniert: true,
|
storniert: true,
|
||||||
updated_at: true,
|
updated_at: true,
|
||||||
zurueckgestellt: true
|
zurueckgestellt: true,
|
||||||
|
ausweisart: true
|
||||||
}),
|
}),
|
||||||
output: z.void(),
|
output: z.void(),
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ export const PUT = defineApiRoute({
|
|||||||
rechnung_id: true,
|
rechnung_id: true,
|
||||||
storniert: true,
|
storniert: true,
|
||||||
updated_at: true,
|
updated_at: true,
|
||||||
zurueckgestellt: true
|
zurueckgestellt: true,
|
||||||
|
ausweisart: true
|
||||||
}),
|
}),
|
||||||
aufnahme_id: UUidWithPrefix
|
aufnahme_id: UUidWithPrefix
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ export const PATCH = defineApiRoute({
|
|||||||
rechnung_id: true,
|
rechnung_id: true,
|
||||||
storniert: true,
|
storniert: true,
|
||||||
updated_at: true,
|
updated_at: true,
|
||||||
zurueckgestellt: true
|
zurueckgestellt: true,
|
||||||
|
ausweisart: true
|
||||||
}),
|
}),
|
||||||
output: z.void(),
|
output: z.void(),
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ export const PUT = defineApiRoute({
|
|||||||
rechnung_id: true,
|
rechnung_id: true,
|
||||||
storniert: true,
|
storniert: true,
|
||||||
updated_at: true,
|
updated_at: true,
|
||||||
zurueckgestellt: true
|
zurueckgestellt: true,
|
||||||
|
ausweisart: true
|
||||||
}),
|
}),
|
||||||
aufnahme_id: UUidWithPrefix
|
aufnahme_id: UUidWithPrefix
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ export const PATCH = defineApiRoute({
|
|||||||
benutzer_id: true,
|
benutzer_id: true,
|
||||||
aufnahme_id: true,
|
aufnahme_id: true,
|
||||||
updated_at: true,
|
updated_at: true,
|
||||||
created_at: true
|
created_at: true,
|
||||||
|
ausweisart: true
|
||||||
}).merge(z.object({
|
}).merge(z.object({
|
||||||
startdatum: z.coerce.date().nullable(),
|
startdatum: z.coerce.date().nullable(),
|
||||||
})),
|
})),
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ export const PUT = defineApiRoute({
|
|||||||
aufnahme_id: true,
|
aufnahme_id: true,
|
||||||
rechnung_id: true,
|
rechnung_id: true,
|
||||||
updated_at: true,
|
updated_at: true,
|
||||||
created_at: true
|
created_at: true,
|
||||||
|
ausweisart: true
|
||||||
}).merge(z.object({
|
}).merge(z.object({
|
||||||
startdatum: z.coerce.date().nullable()
|
startdatum: z.coerce.date().nullable()
|
||||||
})),
|
})),
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ export const PATCH = defineApiRoute({
|
|||||||
aufnahme_id: true,
|
aufnahme_id: true,
|
||||||
rechnung_id: true,
|
rechnung_id: true,
|
||||||
created_at: true,
|
created_at: true,
|
||||||
updated_at: true
|
updated_at: true,
|
||||||
|
ausweisart: true
|
||||||
}).merge(z.object({
|
}).merge(z.object({
|
||||||
startdatum: z.coerce.date().nullable()
|
startdatum: z.coerce.date().nullable()
|
||||||
})),
|
})),
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ export const PUT = defineApiRoute({
|
|||||||
aufnahme_id: true,
|
aufnahme_id: true,
|
||||||
rechnung_id: true,
|
rechnung_id: true,
|
||||||
created_at: true,
|
created_at: true,
|
||||||
updated_at: true
|
updated_at: true,
|
||||||
|
ausweisart: true
|
||||||
}),
|
}),
|
||||||
aufnahme_id: UUidWithPrefix
|
aufnahme_id: UUidWithPrefix
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import ImpersonateUserModule from "#modules/ImpersonateUserModule.svelte";
|
|||||||
const caller = createCaller(Astro)
|
const caller = createCaller(Astro)
|
||||||
|
|
||||||
const params = Astro.params;
|
const params = Astro.params;
|
||||||
const page = Number(params.page)
|
|
||||||
|
|
||||||
const user = await caller.user.self.GET.fetch(undefined, {
|
const user = await caller.user.self.GET.fetch(undefined, {
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@@ -22,15 +22,15 @@ if (user.rolle !== Enums.BenutzerRolle.ADMIN) {
|
|||||||
return Astro.redirect("/dashboard")
|
return Astro.redirect("/dashboard")
|
||||||
}
|
}
|
||||||
|
|
||||||
const uid = Astro.url.searchParams.get("uid")
|
const id = Astro.url.searchParams.get("id")
|
||||||
|
|
||||||
if (!uid) {
|
if (!id) {
|
||||||
return Astro.redirect("/404")
|
return Astro.redirect("/404")
|
||||||
}
|
}
|
||||||
|
|
||||||
const searchedUser = await prisma.benutzer.findUnique({
|
const searchedUser = await prisma.benutzer.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid
|
id
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -40,12 +40,12 @@ if (!searchedUser) {
|
|||||||
|
|
||||||
const refreshTokenExpiry = moment().add(30, "days");
|
const refreshTokenExpiry = moment().add(30, "days");
|
||||||
const accessToken = encodeToken({
|
const accessToken = encodeToken({
|
||||||
uid: searchedUser.uid,
|
id: searchedUser.id,
|
||||||
typ: TokenType.Access,
|
typ: TokenType.Access,
|
||||||
exp: moment().add(30, "minutes").valueOf(),
|
exp: moment().add(30, "minutes").valueOf(),
|
||||||
});
|
});
|
||||||
const refreshToken = encodeToken({
|
const refreshToken = encodeToken({
|
||||||
uid: searchedUser.uid,
|
id: searchedUser.id,
|
||||||
typ: TokenType.Refresh,
|
typ: TokenType.Refresh,
|
||||||
exp: refreshTokenExpiry.valueOf(),
|
exp: refreshTokenExpiry.valueOf(),
|
||||||
});
|
});
|
||||||
@@ -60,7 +60,6 @@ Astro.cookies.set(API_ACCESS_TOKEN_COOKIE_NAME, accessToken, {
|
|||||||
path: "/",
|
path: "/",
|
||||||
expires: moment().add(30, "minutes").toDate()
|
expires: moment().add(30, "minutes").toDate()
|
||||||
})
|
})
|
||||||
Astro.cookies.set("uid", searchedUser.uid)
|
|
||||||
|
|
||||||
return Astro.redirect("/dashboard")
|
return Astro.redirect("/dashboard")
|
||||||
---
|
---
|
||||||
Reference in New Issue
Block a user