2
.gitignore
vendored
2
.gitignore
vendored
@@ -34,7 +34,7 @@ dbml/schema.dbml
|
|||||||
|
|
||||||
prisma/migrations/20250315143314_/migration.sql
|
prisma/migrations/20250315143314_/migration.sql
|
||||||
|
|
||||||
src/astro-typesafe-api-caller.ts
|
# src/astro-typesafe-api-caller.ts
|
||||||
|
|
||||||
src/testing/ausweise.csv
|
src/testing/ausweise.csv
|
||||||
src/testing/users.csv
|
src/testing/users.csv
|
||||||
|
|||||||
Binary file not shown.
45
src/astro-typesafe-api-caller.ts
Normal file
45
src/astro-typesafe-api-caller.ts
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
import { createCallerFactory } from "astro-typesafe-api/server";
|
||||||
|
|
||||||
|
export const createCaller = createCallerFactory({
|
||||||
|
"bild": await import("../src/pages/api/bild.ts"),
|
||||||
|
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
|
||||||
|
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
|
||||||
|
"unterlage": await import("../src/pages/api/unterlage.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"),
|
||||||
|
"admin/nicht-ausstellen": await import("../src/pages/api/admin/nicht-ausstellen.ts"),
|
||||||
|
"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"),
|
||||||
|
"aufnahme": await import("../src/pages/api/aufnahme/index.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-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"),
|
||||||
|
"bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"),
|
||||||
|
"bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"),
|
||||||
|
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||||
|
"bilder/[id]": await import("../src/pages/api/bilder/[id].ts"),
|
||||||
|
"geg-nachweis-gewerbe/[id]": await import("../src/pages/api/geg-nachweis-gewerbe/[id].ts"),
|
||||||
|
"geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"),
|
||||||
|
"geg-nachweis-wohnen/[id]": await import("../src/pages/api/geg-nachweis-wohnen/[id].ts"),
|
||||||
|
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
|
||||||
|
"objekt": await import("../src/pages/api/objekt/index.ts"),
|
||||||
|
"rechnung/[id]": await import("../src/pages/api/rechnung/[id].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"),
|
||||||
|
"verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"),
|
||||||
|
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
|
||||||
|
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
||||||
|
"verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"),
|
||||||
|
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
|
||||||
|
"aufnahme/[id]/bilder": await import("../src/pages/api/aufnahme/[id]/bilder.ts"),
|
||||||
|
"aufnahme/[id]": await import("../src/pages/api/aufnahme/[id]/index.ts"),
|
||||||
|
"aufnahme/[id]/unterlagen": await import("../src/pages/api/aufnahme/[id]/unterlagen.ts"),
|
||||||
|
"objekt/[id]": await import("../src/pages/api/objekt/[id]/index.ts"),
|
||||||
|
})
|
||||||
@@ -124,7 +124,7 @@ let lightTheme = Astro.cookies.get("theme")?.value === "light";
|
|||||||
client:load
|
client:load
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<article class="box px-6 py-5 h-screen">
|
<article class="box px-6 py-5 h-full">
|
||||||
<slot />
|
<slot />
|
||||||
</article>
|
</article>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -85,13 +85,13 @@ export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis:
|
|||||||
let energieVerbrauchWarmwasser_1 = 0;
|
let energieVerbrauchWarmwasser_1 = 0;
|
||||||
let energieVerbrauchWarmwasser_2 = 0;
|
let energieVerbrauchWarmwasser_2 = 0;
|
||||||
|
|
||||||
if (ausweis.warmwasser_enthalten && ausweis.anteil_warmwasser_1 != 0) {
|
if (ausweis.warmwasser_enthalten && ausweis.anteil_warmwasser_1 != 0 && ausweis.anteil_warmwasser_1 !== null) {
|
||||||
|
|
||||||
// Wenn Warmwasser enthalten und Anteil bekannt
|
// Wenn Warmwasser enthalten und Anteil bekannt
|
||||||
energieVerbrauchWarmwasser_1 = energieVerbrauchGesamt_1 * ((ausweis.anteil_warmwasser_1 || 0) / 100);
|
energieVerbrauchWarmwasser_1 = energieVerbrauchGesamt_1 * ((ausweis.anteil_warmwasser_1 || 0) / 100);
|
||||||
energieVerbrauchWarmwasser_2 = energieVerbrauchGesamt_2 * ((ausweis.anteil_warmwasser_2 || 0) / 100);
|
energieVerbrauchWarmwasser_2 = energieVerbrauchGesamt_2 * ((ausweis.anteil_warmwasser_2 || 0) / 100);
|
||||||
|
|
||||||
} else if (ausweis.warmwasser_enthalten && ausweis.anteil_warmwasser_1 == 0){
|
} else if (ausweis.warmwasser_enthalten && (ausweis.anteil_warmwasser_1 == 0 || ausweis.anteil_warmwasser_1 === null)) {
|
||||||
if (aufnahme.gebaeudetyp == "Krankenhäuser (ohne Forschung und Lehre)" || aufnahme.gebaeudetyp == "Krankenhäuser (ohne Forschung und Lehre) & teilstationäre Versorgung" || aufnahme.gebaeudetyp == "Schwimmhallen") {
|
if (aufnahme.gebaeudetyp == "Krankenhäuser (ohne Forschung und Lehre)" || aufnahme.gebaeudetyp == "Krankenhäuser (ohne Forschung und Lehre) & teilstationäre Versorgung" || aufnahme.gebaeudetyp == "Schwimmhallen") {
|
||||||
energieVerbrauchWarmwasser_1 = energieVerbrauchGesamt_1 * 0.5;
|
energieVerbrauchWarmwasser_1 = energieVerbrauchGesamt_1 * 0.5;
|
||||||
energieVerbrauchWarmwasser_2 = energieVerbrauchGesamt_2 * ((ausweis.anteil_warmwasser_2 || 0) / 100);
|
energieVerbrauchWarmwasser_2 = energieVerbrauchGesamt_2 * ((ausweis.anteil_warmwasser_2 || 0) / 100);
|
||||||
@@ -107,8 +107,14 @@ export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis:
|
|||||||
energieVerbrauchWarmwasser_2 = 0;
|
energieVerbrauchWarmwasser_2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
let kuehlungsZuschlag_1: number = 0, kuehlungsZuschlag_2: number = 0;
|
let kuehlungsZuschlag_1: number = 0, kuehlungsZuschlag_2: number = 0; let kuehlungsZuschlag = 0;
|
||||||
if (aufnahme.kuehlung) {
|
if (aufnahme.kuehlung === "1" && aufnahme.kuehlung !== null) {
|
||||||
|
|
||||||
|
kuehlungsZuschlag = 6 * nutzflaeche * 3;
|
||||||
|
}
|
||||||
|
if (ausweis.kuehlung_enthalten && ausweis.kuehlung_enthalten !== null)
|
||||||
|
{
|
||||||
|
|
||||||
kuehlungsZuschlag_1 = energieVerbrauchGesamt_1 * ((ausweis.anteil_kuehlung_1 || 0) / 100);
|
kuehlungsZuschlag_1 = energieVerbrauchGesamt_1 * ((ausweis.anteil_kuehlung_1 || 0) / 100);
|
||||||
kuehlungsZuschlag_2 = energieVerbrauchGesamt_2 * ((ausweis.anteil_kuehlung_2 || 0) / 100);
|
kuehlungsZuschlag_2 = energieVerbrauchGesamt_2 * ((ausweis.anteil_kuehlung_2 || 0) / 100);
|
||||||
}
|
}
|
||||||
@@ -168,7 +174,7 @@ export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis:
|
|||||||
let co2EmissionenKuehlungsZuschlag_1 = endEnergieVerbrauchKuehlungsZuschlag_1 * brennstoff_1.coe;
|
let co2EmissionenKuehlungsZuschlag_1 = endEnergieVerbrauchKuehlungsZuschlag_1 * brennstoff_1.coe;
|
||||||
let co2EmissionenKuehlungsZuschlag_2 = endEnergieVerbrauchKuehlungsZuschlag_2 * brennstoff_2.coe;
|
let co2EmissionenKuehlungsZuschlag_2 = endEnergieVerbrauchKuehlungsZuschlag_2 * brennstoff_2.coe;
|
||||||
|
|
||||||
let endEnergieVerbrauchGesamt = endEnergieVerbrauch_1 + endEnergieVerbrauch_2 + endEnergieVerbrauchLeerstandsZuschlag;
|
let endEnergieVerbrauchGesamt = endEnergieVerbrauch_1 + endEnergieVerbrauch_2 + endEnergieVerbrauchLeerstandsZuschlag + (kuehlungsZuschlag / (3 * nutzflaeche));
|
||||||
let primaerEnergieVerbrauchGesamt = primaerEnergieVerbrauch_1 + primaerEnergieVerbrauch_2 + primaerEnergieVerbrauchLeerstandsZuschlag + primaerEnergieVerbrauchStrom;
|
let primaerEnergieVerbrauchGesamt = primaerEnergieVerbrauch_1 + primaerEnergieVerbrauch_2 + primaerEnergieVerbrauchLeerstandsZuschlag + primaerEnergieVerbrauchStrom;
|
||||||
let co2EmissionenGesamt = co2Emissionen_1 + co2Emissionen_2 + co2EmissionenLeerstandsZuschlag + co2EmissionenStrom;
|
let co2EmissionenGesamt = co2Emissionen_1 + co2Emissionen_2 + co2EmissionenLeerstandsZuschlag + co2EmissionenStrom;
|
||||||
|
|
||||||
@@ -180,6 +186,7 @@ export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis:
|
|||||||
brennstoff_2,
|
brennstoff_2,
|
||||||
kuehlungsZuschlag_1 : Math.round(kuehlungsZuschlag_1),
|
kuehlungsZuschlag_1 : Math.round(kuehlungsZuschlag_1),
|
||||||
kuehlungsZuschlag_2: Math.round(kuehlungsZuschlag_2),
|
kuehlungsZuschlag_2: Math.round(kuehlungsZuschlag_2),
|
||||||
|
kuehlungsZuschlag: Math.round(kuehlungsZuschlag),
|
||||||
durchschnittsKlimafaktor : Math.round(durchschnittsKlimafaktor * 100) / 100,
|
durchschnittsKlimafaktor : Math.round(durchschnittsKlimafaktor * 100) / 100,
|
||||||
Klimafaktor_1 : klimafaktoren[0],
|
Klimafaktor_1 : klimafaktoren[0],
|
||||||
Klimafaktor_2 : klimafaktoren[1],
|
Klimafaktor_2 : klimafaktoren[1],
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
|||||||
energieVerbrauchHeizung_2 * durchschnittsKlimafaktor;
|
energieVerbrauchHeizung_2 * durchschnittsKlimafaktor;
|
||||||
|
|
||||||
let kuehlungsZuschlag = 0;
|
let kuehlungsZuschlag = 0;
|
||||||
if (aufnahme.kuehlung) {
|
if (aufnahme.kuehlung === "1") {
|
||||||
kuehlungsZuschlag = 6 * 3 * energetischeNutzflaeche;
|
kuehlungsZuschlag = 6 * 3 * energetischeNutzflaeche;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
|||||||
const marginY = 150;
|
const marginY = 150;
|
||||||
|
|
||||||
benutzer = benutzer || {
|
benutzer = benutzer || {
|
||||||
|
firma: "Max Mustermann GmbH",
|
||||||
vorname: "Max",
|
vorname: "Max",
|
||||||
name: "Mustermann",
|
name: "Mustermann",
|
||||||
adresse: "Musterstraße 123",
|
adresse: "Musterstraße 123",
|
||||||
@@ -53,7 +54,7 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
|||||||
const id = ausweis.id;
|
const id = ausweis.id;
|
||||||
|
|
||||||
const layout = xml2pdf(`<layout height="${pages[0].getHeight()}" width="${pages[0].getWidth()}" marginTop="150" marginLeft="${marginX}" marginRight="${marginX}">
|
const layout = xml2pdf(`<layout height="${pages[0].getHeight()}" width="${pages[0].getWidth()}" marginTop="150" marginLeft="${marginX}" marginRight="${marginX}">
|
||||||
<text size="12" lineHeight="14">${benutzer.vorname} ${benutzer.name}</text>
|
<text size="12" lineHeight="14">${benutzer.firma}</text>
|
||||||
<text size="12" lineHeight="14">${benutzer.adresse}</text>
|
<text size="12" lineHeight="14">${benutzer.adresse}</text>
|
||||||
<text size="12" lineHeight="14">${benutzer.plz} ${benutzer.ort}</text>
|
<text size="12" lineHeight="14">${benutzer.plz} ${benutzer.ort}</text>
|
||||||
<flex direction="row" justify="space-between" marginTop="55" width="${innerWidth}">
|
<flex direction="row" justify="space-between" marginTop="55" width="${innerWidth}">
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import { Enums } from "#lib/server/prisma.js";
|
|||||||
import * as fs from "fs"
|
import * as fs from "fs"
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { PDFDocument, PDFFont, PDFImage, PDFPage, StandardFonts } from "pdf-lib";
|
import { PDFDocument, PDFFont, PDFImage, PDFPage, StandardFonts } from "pdf-lib";
|
||||||
import { addCheckMark } from "./utils/checkbox.js";
|
|
||||||
import { addText } from "./utils/text.js";
|
import { addText } from "./utils/text.js";
|
||||||
import { addAnsichtsausweisLabel, addDatumGEG, addRegistriernummer } from "./utils/helpers.js";
|
import { addAnsichtsausweisLabel, addDatumGEG, addRegistriernummer } from "./utils/helpers.js";
|
||||||
import { getS3File } from "#lib/s3.js";
|
import { getS3File } from "#lib/s3.js";
|
||||||
@@ -103,7 +102,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (ausweis.warmwasser_enthalten) {
|
if (ausweis.warmwasser_enthalten) {
|
||||||
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
pages[3].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
||||||
x: 211,
|
x: 211,
|
||||||
y: height - 299,
|
y: height - 299,
|
||||||
size: 10
|
size: 10
|
||||||
@@ -112,30 +111,73 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
|
|
||||||
|
|
||||||
if (aufnahme.lueftung === Enums.Lueftungskonzept.Fensterlueftung) {
|
if (aufnahme.lueftung === Enums.Lueftungskonzept.Fensterlueftung) {
|
||||||
addCheckMark(pages[0], 213, height - 334)
|
pages[0].drawText("x", {
|
||||||
|
x: 214,
|
||||||
|
y: height - 342,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.Schachtlueftung) {
|
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.Schachtlueftung) {
|
||||||
addCheckMark(pages[0], 213, height - 345)
|
pages[0].drawText("x", {
|
||||||
|
x: 214,
|
||||||
|
y: height - 353,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageMitWaermerueckgewinnung) {
|
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageMitWaermerueckgewinnung) {
|
||||||
addCheckMark(pages[0], 355, height - 334)
|
pages[0].drawText("x", {
|
||||||
|
x: 356,
|
||||||
|
y: height - 342,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung) {
|
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung) {
|
||||||
addCheckMark(pages[0], 355, height - 345)
|
pages[0].drawText("x", {
|
||||||
|
x: 356,
|
||||||
|
y: height - 353,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Kühlung
|
// Kühlung
|
||||||
if (aufnahme.kuehlung) {
|
if (aufnahme.kuehlung === "1" && aufnahme.kuehlung !== null) {
|
||||||
addCheckMark(pages[0], 213, height - 362.5)
|
pages[0].drawText("x", {
|
||||||
} else {
|
x: 356,
|
||||||
addCheckMark(pages[0], 355, height - 373.5)
|
y: height - 370.5,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ausweis.ausstellgrund === Enums.Ausstellgrund.Neubau) {
|
if (ausweis.ausstellgrund === Enums.Ausstellgrund.Neubau) {
|
||||||
addCheckMark(pages[0], 213, height - 406)
|
pages[0].drawText("x", {
|
||||||
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Vermietung) {
|
x: 214,
|
||||||
addCheckMark(pages[0], 213, height - 417)
|
y: height - 414,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
|
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Vermietung || ausweis.ausstellgrund === Enums.Ausstellgrund.Verkauf) {
|
||||||
|
pages[0].drawText("x", {
|
||||||
|
x: 214,
|
||||||
|
y: height - 425,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Modernisierung) {
|
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Modernisierung) {
|
||||||
addCheckMark(pages[0], 344.5, height - 406)
|
pages[0].drawText("x", {
|
||||||
|
x: 345.5,
|
||||||
|
y: height - 414,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Sonstiges) {
|
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Sonstiges) {
|
||||||
addCheckMark(pages[0], 463, height - 417)
|
pages[0].drawText("x", {
|
||||||
|
x: 464,
|
||||||
|
y: height - 425,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
// Aushangpflicht
|
// Aushangpflicht
|
||||||
// addCheckMark(pages[0], 463, height - 406)
|
// addCheckMark(pages[0], 463, height - 406)
|
||||||
@@ -161,11 +203,21 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Checkmark Angabe energetische Qualität des Gebäudes.
|
// Checkmark Verbrauchsausweis.
|
||||||
addCheckMark(pages[0], 40, height - 550)
|
pages[0].drawText("x", {
|
||||||
|
x: 41,
|
||||||
|
y: height - 558,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
|
|
||||||
// Datenerhebung durch Eigentümer
|
// Datenerhebung durch Eigentümer
|
||||||
addCheckMark(pages[0], 295, height - 580)
|
pages[0].drawText("x", {
|
||||||
|
x: 296.5,
|
||||||
|
y: height - 587.5,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
|
|
||||||
// Ausstellungsdatum
|
// Ausstellungsdatum
|
||||||
pages[0].drawText(moment().format("DD.MM.YYYY"), {
|
pages[0].drawText(moment().format("DD.MM.YYYY"), {
|
||||||
@@ -186,7 +238,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
// Stempel und Unterschrift
|
// Stempel und Unterschrift
|
||||||
if (ausweis.ausgestellt || !vorschau) {
|
if (ausweis.ausgestellt || !vorschau) {
|
||||||
const stempel = await pdf.embedPng(fs.readFileSync(new URL("../../../public/pdf/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
|
const stempelHeight = 65
|
||||||
|
|
||||||
pages[0].drawImage(stempel, {
|
pages[0].drawImage(stempel, {
|
||||||
x: 450,
|
x: 450,
|
||||||
@@ -200,10 +252,10 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
// Aussteller
|
// Aussteller
|
||||||
const aussteller = await pdf.embedPng(fs.readFileSync(new URL("../../../public/pdf/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, {
|
pages[0].drawImage(aussteller, {
|
||||||
x: 40,
|
x: 260,
|
||||||
y: height - 750,
|
y: height - 755,
|
||||||
width: 100,
|
width: 130,
|
||||||
height: 50
|
height: 65
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -216,10 +268,10 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
const pfeilNachOben = await pdf.embedPng(fs.readFileSync(new URL("../../../public/images/pfeil-nach-oben.png", import.meta.url), "base64"))
|
const pfeilNachOben = await pdf.embedPng(fs.readFileSync(new URL("../../../public/images/pfeil-nach-oben.png", import.meta.url), "base64"))
|
||||||
|
|
||||||
// Wir müssen den berechneten Wert zwischen 0 und 1000 als Wert zwischen 0 und 1 festlegen
|
// Wir müssen den berechneten Wert zwischen 0 und 1000 als Wert zwischen 0 und 1 festlegen
|
||||||
const endenergieverbrauchTranslationPercentage = Math.min(1000, Math.max(0, berechnungen?.endEnergieVerbrauchGesamt || 0)) / 1000
|
const endenergieverbrauchTranslationPercentage = Math.min((berechnungen?.vergleichsWertWaerme * 2), Math.max(0, berechnungen?.endEnergieVerbrauchGesamt || 0)) / (berechnungen?.vergleichsWertWaerme * 2)
|
||||||
const stromVerbrauchTranslationPercentage = Math.min(1000, Math.max(0, berechnungen?.endEnergieVerbrauchStrom || 0)) / 1000
|
const stromVerbrauchTranslationPercentage = Math.min((berechnungen?.vergleichsWertStrom * 2), Math.max(0, berechnungen?.endEnergieVerbrauchStrom || 0)) / (berechnungen?.vergleichsWertStrom * 2)
|
||||||
const vergleichsWertWaermeTranslationPercentage = Math.min(1000, Math.max(0, berechnungen?.vergleichsWertWaerme || 0)) / 1000
|
const vergleichsWertWaermeTranslationPercentage = Math.min((berechnungen?.vergleichsWertWaerme * 2), Math.max(0, berechnungen?.vergleichsWertWaerme || 0)) / (berechnungen?.vergleichsWertWaerme * 2)
|
||||||
const vergleichsWertStromTranslationPercentage = Math.min(1000, Math.max(0, berechnungen?.vergleichsWertStrom || 0)) / 1000
|
const vergleichsWertStromTranslationPercentage = Math.min((berechnungen?.vergleichsWertStrom * 2), Math.max(0, berechnungen?.vergleichsWertStrom || 0)) / (berechnungen?.vergleichsWertStrom * 2)
|
||||||
|
|
||||||
const minTranslation = 78
|
const minTranslation = 78
|
||||||
const maxTranslation = 512
|
const maxTranslation = 512
|
||||||
@@ -244,15 +296,64 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
width: pfeilWidth,
|
width: pfeilWidth,
|
||||||
height: 30
|
height: 30
|
||||||
})
|
})
|
||||||
|
const endEnergieVerbrauchGesamt = Math.round(berechnungen?.endEnergieVerbrauchGesamt ?? 0);
|
||||||
|
const MaxvergleichsWertWaerme = Math.round(berechnungen?.vergleichsWertWaerme * 2);
|
||||||
|
const MaxvergleichsWertWaermeText = `> ${MaxvergleichsWertWaerme.toString()}`;
|
||||||
|
const MaxvergleichswertStrom = Math.round(berechnungen?.vergleichsWertStrom * 2);
|
||||||
|
const MaxvergleichswertStromText = `> ${Math.round(MaxvergleichswertStrom).toString()}`;
|
||||||
|
const endEnergieVerbrauchGesamtText = `${endEnergieVerbrauchGesamt.toString()}kWh/(m²a)`;
|
||||||
|
const stromVerbrauchGesamtText = `${Math.round(berechnungen?.endEnergieVerbrauchStrom ?? 0).toString()}kWh/(m²a)`;
|
||||||
|
const vergleichswertWaermeText = `${Math.round(berechnungen?.vergleichsWertWaerme).toString()}kWh/(m²a)`
|
||||||
|
const vergleichswertWaermeText2 = `${Math.round(berechnungen?.vergleichsWertWaerme).toString()}`
|
||||||
|
const vergleichswertStromText = `${Math.round(berechnungen?.vergleichsWertStrom).toString()}kWh/(m²a)`
|
||||||
|
const vergleichswertStromText2 = `${Math.round(berechnungen?.vergleichsWertStrom).toString()}`
|
||||||
|
|
||||||
|
page.drawText("0", {
|
||||||
|
x: 85,
|
||||||
|
y: height - 241,
|
||||||
|
size: 13,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
|
|
||||||
|
page.drawText(vergleichswertWaermeText2, {
|
||||||
|
x: 295,
|
||||||
|
y: height - 241,
|
||||||
|
size: 13,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
|
|
||||||
|
page.drawText(MaxvergleichsWertWaermeText, {
|
||||||
|
x: vergleichsWertWaermeTranslationX * 2 - 78,
|
||||||
|
y: height - 241,
|
||||||
|
size: 13,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
|
|
||||||
|
page.drawText("0", {
|
||||||
|
x: 85,
|
||||||
|
y: height - 385,
|
||||||
|
size: 13,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
|
|
||||||
|
page.drawText(vergleichswertStromText2, {
|
||||||
|
x: 295,
|
||||||
|
y: height - 385,
|
||||||
|
size: 13,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
|
|
||||||
|
page.drawText(MaxvergleichswertStromText, {
|
||||||
|
x: vergleichsWertStromTranslationX * 2 - 78,
|
||||||
|
y: height - 385,
|
||||||
|
size: 13,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
|
|
||||||
const endEnergieVerbrauchGesamtText = `${berechnungen?.endEnergieVerbrauchGesamt.toString()}kWh/(m²a)`;
|
|
||||||
const stromVerbrauchGesamtText = `${berechnungen?.endEnergieVerbrauchStrom.toString()}kWh/(m²a)`;
|
|
||||||
const vergleichswertWaermeText = `${berechnungen?.vergleichsWertWaerme.toString()}kWh/(m²a)`
|
|
||||||
const vergleichswertStromText = `${berechnungen?.vergleichsWertStrom.toString()}kWh/(m²a)`
|
|
||||||
|
|
||||||
if (endenergieverbrauchTranslationPercentage > 0.5) {
|
if (endenergieverbrauchTranslationPercentage > 0.5) {
|
||||||
page.drawText("Endenergieverbrauch Wärme", {
|
page.drawText("Endenergieverbrauch Wärme", {
|
||||||
x: endenergieverbrauchTranslationX - margin - font.widthOfTextAtSize("Endenergieverbrauch", 10),
|
x: endenergieverbrauchTranslationX - margin - font.widthOfTextAtSize("Endenergieverbrauch Wärme", 10),
|
||||||
y: height - 191,
|
y: height - 191,
|
||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
@@ -279,7 +380,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
|
|
||||||
if (vergleichsWertWaermeTranslationPercentage > 0.5) {
|
if (vergleichsWertWaermeTranslationPercentage > 0.5) {
|
||||||
page.drawText("Vergleichswert Wärme", {
|
page.drawText("Vergleichswert Wärme", {
|
||||||
x: vergleichsWertWaermeTranslationX - margin - font.widthOfTextAtSize("Vergleichswert", 10),
|
x: vergleichsWertWaermeTranslationX - margin - font.widthOfTextAtSize("Vergleichswert Wärme", 10),
|
||||||
y: height - 275,
|
y: height - 275,
|
||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
@@ -318,9 +419,9 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
height: 30
|
height: 30
|
||||||
})
|
})
|
||||||
|
|
||||||
if (endenergieverbrauchTranslationPercentage > 0.5) {
|
if (stromVerbrauchTranslationPercentage > 0.5) {
|
||||||
page.drawText("Endenergieverbrauch Strom", {
|
page.drawText("Endenergieverbrauch Strom", {
|
||||||
x: stromVerbrauchTranslationX - margin - font.widthOfTextAtSize("Primärenergieverbrauch", 10),
|
x: stromVerbrauchTranslationX - margin - font.widthOfTextAtSize("Endenergieverbrauch Strom", 10),
|
||||||
y: height - 335,
|
y: height - 335,
|
||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
@@ -347,7 +448,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
|
|
||||||
if (vergleichsWertWaermeTranslationPercentage > 0.5) {
|
if (vergleichsWertWaermeTranslationPercentage > 0.5) {
|
||||||
page.drawText("Vergleichswert Strom", {
|
page.drawText("Vergleichswert Strom", {
|
||||||
x: vergleichsWertStromTranslationX - margin - font.widthOfTextAtSize("Vergleichswert", 10),
|
x: vergleichsWertStromTranslationX - margin - font.widthOfTextAtSize("Vergleichswert Strom", 10),
|
||||||
y: height - 420,
|
y: height - 420,
|
||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
@@ -376,35 +477,75 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
addEnergieverbrauchSkalaPfeile(pages[2])
|
addEnergieverbrauchSkalaPfeile(pages[2])
|
||||||
|
|
||||||
if (ausweis.warmwasser_enthalten) {
|
if (ausweis.warmwasser_enthalten) {
|
||||||
addCheckMark(pages[2], 41, height - 293)
|
pages[2].drawText("x", {
|
||||||
|
x: 42,
|
||||||
|
y: height - 301,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ausweis.kuehlung_enthalten) {
|
if (ausweis.kuehlung_enthalten) {
|
||||||
addCheckMark(pages[2], 41, height - 305)
|
pages[2].drawText("x", {
|
||||||
|
x: 42,
|
||||||
|
y: height - 313,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ausweis.stromverbrauch_enthaelt_heizung) {
|
if (ausweis.stromverbrauch_enthaelt_heizung) {
|
||||||
addCheckMark(pages[2], 41, height - 456)
|
pages[2].drawText("x", {
|
||||||
|
x: 42,
|
||||||
|
y: height - 464,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ausweis.stromverbrauch_enthaelt_warmwasser) {
|
if (ausweis.stromverbrauch_enthaelt_warmwasser) {
|
||||||
addCheckMark(pages[2], 131, height - 456)
|
pages[2].drawText("x", {
|
||||||
|
x: 132,
|
||||||
|
y: height - 464,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ausweis.stromverbrauch_enthaelt_lueftung) {
|
if (ausweis.stromverbrauch_enthaelt_lueftung) {
|
||||||
addCheckMark(pages[2], 218, height - 456)
|
pages[2].drawText("x", {
|
||||||
|
x: 219,
|
||||||
|
y: height - 464,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ausweis.stromverbrauch_enthaelt_beleuchtung) {
|
if (ausweis.stromverbrauch_enthaelt_beleuchtung) {
|
||||||
addCheckMark(pages[2], 281, height - 456)
|
pages[2].drawText("x", {
|
||||||
|
x: 282,
|
||||||
|
y: height - 464,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ausweis.stromverbrauch_enthaelt_kuehlung) {
|
if (ausweis.stromverbrauch_enthaelt_kuehlung) {
|
||||||
addCheckMark(pages[2], 422, height - 456)
|
pages[2].drawText("x", {
|
||||||
|
x: 423,
|
||||||
|
y: height - 464,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ausweis.stromverbrauch_enthaelt_sonstige) {
|
if (ausweis.stromverbrauch_enthaelt_sonstige) {
|
||||||
addCheckMark(pages[2], 492, height - 456)
|
pages[2].drawText("x", {
|
||||||
|
x: 493,
|
||||||
|
y: height - 464,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
addText(pages[2], berechnungen?.primaerEnergieVerbrauchGesamt.toString() || "", 475, height - 637, 10, font)
|
addText(pages[2], berechnungen?.primaerEnergieVerbrauchGesamt.toString() || "", 475, height - 637, 10, font)
|
||||||
@@ -498,7 +639,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
|
|
||||||
const addVerbrauch = addVerbrauchGenerator();
|
const addVerbrauch = addVerbrauchGenerator();
|
||||||
|
|
||||||
if (!ausweis.warmwasser_enthalten) {
|
if (ausweis.warmwasser_enthalten) {
|
||||||
// Mit Warmwasserzuschlag
|
// Mit Warmwasserzuschlag
|
||||||
addVerbrauch(
|
addVerbrauch(
|
||||||
moment(ausweis.startdatum).format("MM.YYYY"),
|
moment(ausweis.startdatum).format("MM.YYYY"),
|
||||||
@@ -506,7 +647,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
ausweis.brennstoff_1 || "",
|
ausweis.brennstoff_1 || "",
|
||||||
berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
|
berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
|
||||||
Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
|
||||||
"0",
|
Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(),
|
||||||
berechnungen?.endEnergieVerbrauchKuehlungsZuschlag_1,
|
berechnungen?.endEnergieVerbrauchKuehlungsZuschlag_1,
|
||||||
Math.round(berechnungen?.energieVerbrauchHeizung_1 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchHeizung_1 || 0).toString(),
|
||||||
berechnungen?.durchschnittsKlimafaktor.toString(),
|
berechnungen?.durchschnittsKlimafaktor.toString(),
|
||||||
@@ -545,7 +686,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
|
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
if (!ausweis.warmwasser_enthalten) {
|
if (ausweis.warmwasser_enthalten) {
|
||||||
/**
|
/**
|
||||||
* Dezentrale Warmwasserversorgung - Pauschale Erhöhung um 20kWh/m²
|
* Dezentrale Warmwasserversorgung - Pauschale Erhöhung um 20kWh/m²
|
||||||
* @link https://www.bundesanzeiger.de/pub/publication/MRYM4nI84Sdlr0EIvvW?2
|
* @link https://www.bundesanzeiger.de/pub/publication/MRYM4nI84Sdlr0EIvvW?2
|
||||||
@@ -592,7 +733,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aufnahme.kuehlung) {
|
if (aufnahme.kuehlung === "1") {
|
||||||
/**
|
/**
|
||||||
* Kühlungszuschlag - Pauschale Erhöhung um 6kWh/m²
|
* Kühlungszuschlag - Pauschale Erhöhung um 6kWh/m²
|
||||||
* Primärenergiefaktor Strom
|
* Primärenergiefaktor Strom
|
||||||
@@ -605,9 +746,9 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
"",
|
"",
|
||||||
// TODO
|
// TODO
|
||||||
// berechnungen?.primaerfaktorww.toString(),
|
// berechnungen?.primaerfaktorww.toString(),
|
||||||
Math.round(berechnungen?.kuehlungsZuschlag_1 || 0).toString(),
|
"",
|
||||||
"0",
|
"",
|
||||||
0,
|
Math.round(berechnungen?.kuehlungsZuschlag || 0),
|
||||||
""
|
""
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import { Enums } from "#lib/server/prisma.js";
|
|||||||
import * as fs from "fs"
|
import * as fs from "fs"
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { PDFDocument, PDFFont, PDFImage, PDFPage, StandardFonts } from "pdf-lib";
|
import { PDFDocument, PDFFont, PDFImage, PDFPage, StandardFonts } from "pdf-lib";
|
||||||
import { addCheckMark } from "./utils/checkbox.js";
|
|
||||||
import { addText } from "./utils/text.js";
|
import { addText } from "./utils/text.js";
|
||||||
import { addAnsichtsausweisLabel, addDatumGEG, addRegistriernummer } from "./utils/helpers.js";
|
import { addAnsichtsausweisLabel, addDatumGEG, addRegistriernummer } from "./utils/helpers.js";
|
||||||
import { getS3File } from "#lib/s3.js";
|
import { getS3File } from "#lib/s3.js";
|
||||||
@@ -12,6 +11,7 @@ import { endEnergieVerbrauchVerbrauchsausweis_2016_Server } from "#lib/Berechnun
|
|||||||
|
|
||||||
/* -------------------------------- Pdf Tools ------------------------------- */
|
/* -------------------------------- Pdf Tools ------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, vorschau = true) {
|
export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, vorschau = true) {
|
||||||
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/GEG24_Wohngebaeude_ohne_pfeile.pdf", import.meta.url), "base64");
|
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/GEG24_Wohngebaeude_ohne_pfeile.pdf", import.meta.url), "base64");
|
||||||
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
|
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
|
||||||
@@ -28,6 +28,18 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
const font = await pdf.embedFont(StandardFonts.Helvetica)
|
const font = await pdf.embedFont(StandardFonts.Helvetica)
|
||||||
const bold = await pdf.embedFont(StandardFonts.HelveticaBold)
|
const bold = await pdf.embedFont(StandardFonts.HelveticaBold)
|
||||||
|
|
||||||
|
|
||||||
|
for (let i = 0; i < pages.length; i++) {
|
||||||
|
const page = pages[i];
|
||||||
|
if (vorschau) {
|
||||||
|
addAnsichtsausweisLabel(page, font)
|
||||||
|
}
|
||||||
|
addDatumGEG(page, font)
|
||||||
|
if (i !== pages.length - 1) {
|
||||||
|
addRegistriernummer(page, font, ausweis.registriernummer || "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pages[0].drawText(`ID: ${ausweis.id || ""}`, {
|
pages[0].drawText(`ID: ${ausweis.id || ""}`, {
|
||||||
x: 211,
|
x: 211,
|
||||||
y: height - 112.5,
|
y: height - 112.5,
|
||||||
@@ -40,9 +52,34 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const bild = bilder && bilder.find(image => image.kategorie === Enums.BilderKategorie.Gebaeude);
|
||||||
|
|
||||||
|
if (bild) {
|
||||||
|
const file = await getS3File("ibc-images", `${bild.id}.jpg`);
|
||||||
|
|
||||||
|
if (file) {
|
||||||
|
let image: PDFImage;
|
||||||
|
image = await pdf.embedJpg(file)
|
||||||
|
pages[0].drawImage(image, {
|
||||||
|
x: 460.5,
|
||||||
|
y: height - 289,
|
||||||
|
width: 111,
|
||||||
|
height: 138
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pages[0].drawText(objekt.adresse || "", {
|
pages[0].drawText(objekt.adresse || "", {
|
||||||
x: 211,
|
x: 211,
|
||||||
y: height - 194,
|
y: height - 188.5,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const plzOrt = `${objekt.plz || ""} ${objekt.ort || ""}`
|
||||||
|
pages[0].drawText(plzOrt || "", {
|
||||||
|
x: 211,
|
||||||
|
y: height - 200,
|
||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -70,18 +107,36 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
|
|
||||||
pages[0].drawText(aufnahme.nutzflaeche?.toString() || "", {
|
pages[0].drawText(Math.round(berechnungen?.energetischeNutzflaeche || 0).toString() || "", {
|
||||||
x: 211,
|
x: 211,
|
||||||
y: height - 285,
|
y: height - 285,
|
||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Nach 82 aus Wohnfläche ermittelt
|
||||||
|
if (aufnahme.nutzflaeche == 0) {
|
||||||
|
pages[0].drawText("x", {
|
||||||
|
x: 275,
|
||||||
|
y: height - 285,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
||||||
x: 211,
|
x: 211,
|
||||||
y: height - 298.5,
|
y: height - 298.5,
|
||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (ausweis.warmwasser_enthalten) {
|
||||||
|
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
||||||
|
x: 211,
|
||||||
|
y: height - 299,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
if (ausweis.warmwasser_enthalten) {
|
if (ausweis.warmwasser_enthalten) {
|
||||||
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
||||||
x: 211,
|
x: 211,
|
||||||
@@ -91,6 +146,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const erneuerbareEnergienVerwendung = []
|
const erneuerbareEnergienVerwendung = []
|
||||||
|
|
||||||
if (ausweis.alternative_heizung) {
|
if (ausweis.alternative_heizung) {
|
||||||
@@ -115,69 +171,91 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
size: 8
|
size: 8
|
||||||
})
|
})
|
||||||
|
|
||||||
if (ausweis.warmwasser_enthalten) {
|
|
||||||
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
|
||||||
x: 211,
|
|
||||||
y: height - 299,
|
|
||||||
size: 10
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (aufnahme.lueftung === Enums.Lueftungskonzept.Fensterlueftung) {
|
if (aufnahme.lueftung === Enums.Lueftungskonzept.Fensterlueftung) {
|
||||||
addCheckMark(pages[0], 213, height - 347)
|
pages[0].drawText("x", {
|
||||||
|
x: 214,
|
||||||
|
y: height - 355,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.Schachtlueftung) {
|
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.Schachtlueftung) {
|
||||||
addCheckMark(pages[0], 213, height - 358)
|
pages[0].drawText("x", {
|
||||||
|
x: 214,
|
||||||
|
y: height - 366,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageMitWaermerueckgewinnung) {
|
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageMitWaermerueckgewinnung) {
|
||||||
addCheckMark(pages[0], 355, height - 347)
|
pages[0].drawText("x", {
|
||||||
|
x: 356,
|
||||||
|
y: height - 355,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung) {
|
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung) {
|
||||||
addCheckMark(pages[0], 355, height - 358)
|
pages[0].drawText("x", {
|
||||||
|
x: 356,
|
||||||
|
y: height - 366,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Kühlung
|
// Kühlung
|
||||||
if (aufnahme.kuehlung) {
|
if (aufnahme.kuehlung === "1") {
|
||||||
addCheckMark(pages[0], 213, height - 375.5)
|
pages[0].drawText("x", {
|
||||||
} else {
|
x: 213,
|
||||||
addCheckMark(pages[0], 355, height - 386.5)
|
y: height - 383.5,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ausweis.ausstellgrund === Enums.Ausstellgrund.Neubau) {
|
if (ausweis.ausstellgrund === Enums.Ausstellgrund.Neubau) {
|
||||||
addCheckMark(pages[0], 213, height - 419)
|
pages[0].drawText("x", {
|
||||||
|
x: 214,
|
||||||
|
y: height - 427,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Vermietung || ausweis.ausstellgrund === Enums.Ausstellgrund.Verkauf) {
|
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Vermietung || ausweis.ausstellgrund === Enums.Ausstellgrund.Verkauf) {
|
||||||
addCheckMark(pages[0], 213, height - 430)
|
pages[0].drawText("x", {
|
||||||
|
x: 214,
|
||||||
|
y: height - 438,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Modernisierung) {
|
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Modernisierung) {
|
||||||
addCheckMark(pages[0], 344.5, height - 419)
|
pages[0].drawText("x", {
|
||||||
|
x: 345.5,
|
||||||
|
y: height - 427,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Sonstiges) {
|
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Sonstiges) {
|
||||||
addCheckMark(pages[0], 463, height - 419)
|
pages[0].drawText("x", {
|
||||||
}
|
x: 464,
|
||||||
|
y: height - 427,
|
||||||
const bild = bilder && bilder.find(image => image.kategorie === Enums.BilderKategorie.Gebaeude);
|
size: 10,
|
||||||
|
font: bold
|
||||||
if (bild) {
|
|
||||||
const file = await getS3File("ibc-images", `${bild.id}.jpg`);
|
|
||||||
|
|
||||||
if (file) {
|
|
||||||
let image: PDFImage;
|
|
||||||
image = await pdf.embedJpg(file)
|
|
||||||
pages[0].drawImage(image, {
|
|
||||||
x: 460.5,
|
|
||||||
y: height - 289,
|
|
||||||
width: 111,
|
|
||||||
height: 138
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Nach 82 aus Wohnfläche ermittelt
|
// Checkmark Angabe Verbrauchsausweis
|
||||||
if (aufnahme.flaeche == 0) {
|
pages[0].drawText("x", {
|
||||||
addCheckMark(pages[0], 274, height - 277)
|
x: 44,
|
||||||
}
|
y: height - 568,
|
||||||
|
size: 10,
|
||||||
// Checkmark Angabe energetische Qualität des Gebäudes.
|
font: bold
|
||||||
addCheckMark(pages[0], 43, height - 560)
|
})
|
||||||
|
|
||||||
// Datenerhebung durch Eigentümer
|
// Datenerhebung durch Eigentümer
|
||||||
addCheckMark(pages[0], 298, height - 590)
|
pages[0].drawText("x", {
|
||||||
|
x: 299,
|
||||||
|
y: height - 598,
|
||||||
|
size: 10,
|
||||||
|
font: bold
|
||||||
|
})
|
||||||
|
|
||||||
// Ausstellungsdatum
|
// Ausstellungsdatum
|
||||||
pages[0].drawText(moment().format("DD.MM.YYYY"), {
|
pages[0].drawText(moment().format("DD.MM.YYYY"), {
|
||||||
@@ -198,7 +276,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
// Stempel und Unterschrift
|
// Stempel und Unterschrift
|
||||||
if (!vorschau) {
|
if (!vorschau) {
|
||||||
const stempel = await pdf.embedPng(fs.readFileSync(new URL("../../../public/pdf/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
|
const stempelHeight = 65
|
||||||
|
|
||||||
pages[0].drawImage(stempel, {
|
pages[0].drawImage(stempel, {
|
||||||
x: 450,
|
x: 450,
|
||||||
@@ -212,10 +290,10 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
const aussteller = await pdf.embedPng(fs.readFileSync(new URL("../../../public/pdf/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, {
|
pages[0].drawImage(aussteller, {
|
||||||
x: 40,
|
x: 260,
|
||||||
y: height - 770,
|
y: height - 775,
|
||||||
width: 100,
|
width: 130,
|
||||||
height: 50
|
height: 65
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -326,7 +404,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addEnergieverbrauchSkalaPfeile(pages[2])
|
|
||||||
|
|
||||||
// CO2 Emissionen
|
// CO2 Emissionen
|
||||||
pages[2].drawText(berechnungen?.co2EmissionenGesamt.toString() || "", {
|
pages[2].drawText(berechnungen?.co2EmissionenGesamt.toString() || "", {
|
||||||
@@ -336,6 +414,8 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
|
|
||||||
|
addEnergieverbrauchSkalaPfeile(pages[2])
|
||||||
|
|
||||||
// Endenergieverbrauch
|
// Endenergieverbrauch
|
||||||
pages[2].drawText(berechnungen?.endEnergieVerbrauchGesamt.toString() || "", {
|
pages[2].drawText(berechnungen?.endEnergieVerbrauchGesamt.toString() || "", {
|
||||||
x: 455,
|
x: 455,
|
||||||
@@ -501,7 +581,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aufnahme.kuehlung) {
|
if (aufnahme.kuehlung === "1") {
|
||||||
/**
|
/**
|
||||||
* Kühlungszuschlag - Pauschale Erhöhung um 6kWh/m²
|
* Kühlungszuschlag - Pauschale Erhöhung um 6kWh/m²
|
||||||
* Primärenergiefaktor Strom
|
* Primärenergiefaktor Strom
|
||||||
@@ -593,16 +673,5 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
addEmpfehlung(empfehlung.anlagenteil, empfehlung.description, true, empfehlung.amortisationszeit, empfehlung.kosten)
|
addEmpfehlung(empfehlung.anlagenteil, empfehlung.description, true, empfehlung.amortisationszeit, empfehlung.kosten)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < pages.length; i++) {
|
|
||||||
const page = pages[i];
|
|
||||||
if (vorschau) {
|
|
||||||
addAnsichtsausweisLabel(page, font)
|
|
||||||
}
|
|
||||||
addDatumGEG(page, font)
|
|
||||||
if (i !== pages.length - 1) {
|
|
||||||
addRegistriernummer(page, font, ausweis.registriernummer || "")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return pdf.save();
|
return pdf.save();
|
||||||
}
|
}
|
||||||
@@ -122,7 +122,7 @@ export async function createInvoice(
|
|||||||
},
|
},
|
||||||
title: "Rechnung",
|
title: "Rechnung",
|
||||||
introduction:
|
introduction:
|
||||||
"Ihren Energieausweis (Ausweis ID {ausweis.id}) stellen wir Ihnen hiermit in Rechnung",
|
`Ihren Energieausweis (Ausweis ID ${ausweis.id}) stellen wir Ihnen hiermit in Rechnung`,
|
||||||
remark: "Vielen Dank für Ihren Einkauf.",
|
remark: "Vielen Dank für Ihren Einkauf.",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1016,7 +1016,8 @@ grid-cols-3 sm:grid-cols-5 justify-around justify-items-center items-center"
|
|||||||
|
|
||||||
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
|
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
|
||||||
<!-- Verbrauchsausweis Wohnen [altes System: $ausweis->anteil_warmwasser_1 < 6 OR $ausweis->anteil_warmwasser_1 > 40] -->
|
<!-- Verbrauchsausweis Wohnen [altes System: $ausweis->anteil_warmwasser_1 < 6 OR $ausweis->anteil_warmwasser_1 > 40] -->
|
||||||
{#if (ausweis.anteil_warmwasser_1 < 6) || (ausweis.anteil_warmwasser_1 > 40)}
|
{#if (ausweis.anteil_warmwasser_1 !== null)}
|
||||||
|
{#if ((ausweis.anteil_warmwasser_1 < 6) && (ausweis.anteil_warmwasser_1 != 0)) || (ausweis.anteil_warmwasser_1 > 40)}
|
||||||
<div class="pruefpunkt">
|
<div class="pruefpunkt">
|
||||||
<input type="checkbox" name="pruefpunkt_anteil_warmwasser" bind:checked={ausweis.pruefpunkt_anteil_warmwasser} required/>
|
<input type="checkbox" name="pruefpunkt_anteil_warmwasser" bind:checked={ausweis.pruefpunkt_anteil_warmwasser} required/>
|
||||||
<div class="text-left">
|
<div class="text-left">
|
||||||
@@ -1025,6 +1026,7 @@ grid-cols-3 sm:grid-cols-5 justify-around justify-items-center items-center"
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
|
{/if}
|
||||||
{#if ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
|
{#if ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
|
||||||
<!-- Zusätzlich beim Bedarfsausweis [altes System: $ausweis->wohnflaeche < $ausweis->energetische_nutzfläche] -->
|
<!-- Zusätzlich beim Bedarfsausweis [altes System: $ausweis->wohnflaeche < $ausweis->energetische_nutzfläche] -->
|
||||||
{#if ausweis.flaeche < ausweis.nutzflaeche}
|
{#if ausweis.flaeche < ausweis.nutzflaeche}
|
||||||
|
|||||||
@@ -67,9 +67,11 @@ export const GET = defineApiRoute({
|
|||||||
|
|
||||||
const rechnung = await prisma.rechnung.findFirst({
|
const rechnung = await prisma.rechnung.findFirst({
|
||||||
where: {
|
where: {
|
||||||
verbrauchsausweis_wohnen: {
|
OR: [
|
||||||
id: id_ausweis,
|
{ bedarfsausweis_wohnen: { id: id_ausweis } },
|
||||||
},
|
{ verbrauchsausweis_wohnen: { id: id_ausweis } },
|
||||||
|
{ verbrauchsausweis_gewerbe: { id: id_ausweis } }
|
||||||
|
]
|
||||||
},
|
},
|
||||||
orderBy: {
|
orderBy: {
|
||||||
erstellt_am: "desc",
|
erstellt_am: "desc",
|
||||||
@@ -220,18 +222,6 @@ fax 040 · 209339859
|
|||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<p>
|
|
||||||
Alternativ können Sie auch direkt online zahlen indem Sie auf den entsprechenden Link klicken:
|
|
||||||
</p>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<tr><td>Per Einzuglastschrift zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.id}&p=SEPA'>jetzt per ELV bezahlen</a></td></tr>
|
|
||||||
<tr><td>Per Sofortüberweisung zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.id}&p=Sofort'>jetzt per Sofortüberweisung bezahlen</a></td></tr>
|
|
||||||
<tr><td>Über PayPal zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.id}&p=PayPal'>jetzt per Paypal bezahlen</a></td></tr>
|
|
||||||
<tr><td>Per Giropay zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.id}&p=Giropay'>jetzt per Giropay bezahlen</a></td></tr>
|
|
||||||
<tr><td>Per Visa oder MasterCard zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.id}&p=Kreditkarte'>jetzt per Kreditkarte bezahlen</a></td></tr>
|
|
||||||
</table>
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -264,7 +254,7 @@ fax 040 · 209339859
|
|||||||
subject: `Ihr Originalausweis vom Ingenieurbüro Cornelsen (ID: ${ausweis.id})`,
|
subject: `Ihr Originalausweis vom Ingenieurbüro Cornelsen (ID: ${ausweis.id})`,
|
||||||
html,
|
html,
|
||||||
attachments: [{
|
attachments: [{
|
||||||
filename: `ID_${ausweis.id}_Ansichtsausweis.pdf`,
|
filename: `ID_${ausweis.id}_Energieausweis.pdf`,
|
||||||
encoding: "binary",
|
encoding: "binary",
|
||||||
content: Buffer.from(pdfAusweis),
|
content: Buffer.from(pdfAusweis),
|
||||||
contentType: "application/pdf",
|
contentType: "application/pdf",
|
||||||
|
|||||||
@@ -23,13 +23,16 @@ const totalPages = await prisma.objekt.count({
|
|||||||
} : {}
|
} : {}
|
||||||
})
|
})
|
||||||
|
|
||||||
const objekte = await prisma.objekt.findMany({
|
let objekte = []
|
||||||
|
if (id) {
|
||||||
|
objekte = await prisma.objekt.findMany({
|
||||||
where: user.rolle === Enums.BenutzerRolle.USER ? {
|
where: user.rolle === Enums.BenutzerRolle.USER ? {
|
||||||
benutzer: {
|
benutzer: {
|
||||||
id: user.id
|
id: user.id
|
||||||
},
|
},
|
||||||
} : {
|
} : {
|
||||||
...(id ? {OR: [
|
...(id ? {
|
||||||
|
OR: [
|
||||||
{
|
{
|
||||||
aufnahmen: {
|
aufnahmen: {
|
||||||
every: {
|
every: {
|
||||||
@@ -87,6 +90,71 @@ const objekte = await prisma.objekt.findMany({
|
|||||||
take: 25,
|
take: 25,
|
||||||
skip: (page - 1) * 25
|
skip: (page - 1) * 25
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
objekte = await prisma.objekt.findMany({
|
||||||
|
where: user.rolle === Enums.BenutzerRolle.USER ? {
|
||||||
|
benutzer: {
|
||||||
|
id: user.id
|
||||||
|
},
|
||||||
|
} : {
|
||||||
|
OR: [
|
||||||
|
{
|
||||||
|
aufnahmen: {
|
||||||
|
every: {
|
||||||
|
verbrauchsausweise_gewerbe: {
|
||||||
|
some: {
|
||||||
|
ausgestellt: false,
|
||||||
|
bestellt: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aufnahmen: {
|
||||||
|
every: {
|
||||||
|
verbrauchsausweise_wohnen: {
|
||||||
|
some: {
|
||||||
|
ausgestellt: false,
|
||||||
|
bestellt: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aufnahmen: {
|
||||||
|
every: {
|
||||||
|
bedarfsausweise_wohnen: {
|
||||||
|
some: {
|
||||||
|
ausgestellt: false,
|
||||||
|
bestellt: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
orderBy: {
|
||||||
|
erstellungsdatum: "desc"
|
||||||
|
},
|
||||||
|
include: {
|
||||||
|
aufnahmen: {
|
||||||
|
include: {
|
||||||
|
bilder: true,
|
||||||
|
unterlagen: true,
|
||||||
|
bedarfsausweise_wohnen: true,
|
||||||
|
verbrauchsausweise_gewerbe: true,
|
||||||
|
verbrauchsausweise_wohnen: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
take: 25,
|
||||||
|
skip: (page - 1) * 25
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<UserLayout title="Objekte" {user}>
|
<UserLayout title="Objekte" {user}>
|
||||||
|
|||||||
37
src/testing/ausweise-bw-fix-ausgestellt.ts
Normal file
37
src/testing/ausweise-bw-fix-ausgestellt.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import { Enums, prisma } from "#lib/server/prisma.js";
|
||||||
|
|
||||||
|
let start = 1;
|
||||||
|
let limit = 10;
|
||||||
|
|
||||||
|
const existing_bedarfsausweiswohnen_list = await prisma.bedarfsausweisWohnen.findMany({
|
||||||
|
where: {
|
||||||
|
rechnung_id: null
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const ausweis of existing_bedarfsausweiswohnen_list) {
|
||||||
|
if (ausweis.bestellt == true && ausweis.benutzer_id != "USCTJ2VV"){
|
||||||
|
console.log(
|
||||||
|
'ID:' + ausweis.id +
|
||||||
|
' Reg.Nr:' + ausweis.registriernummer +
|
||||||
|
' Rechnung_id: ' + ausweis.rechnung_id +
|
||||||
|
' Bestellt: ' + ausweis.bestellt +
|
||||||
|
' Ausgestellt: ' + ausweis.ausgestellt +
|
||||||
|
' Ausgestellt am: ' + ausweis.ausstellungsdatum
|
||||||
|
);
|
||||||
|
|
||||||
|
await prisma.bedarfsausweisWohnen.update({
|
||||||
|
where: {
|
||||||
|
id: ausweis.id
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
bestellt: false,
|
||||||
|
ausgestellt: false,
|
||||||
|
ausstellungsdatum: null
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// if (start >= limit) break;
|
||||||
|
start++;
|
||||||
|
}
|
||||||
|
}
|
||||||
52
src/testing/ausweise-fix-rechnungsid.ts
Normal file
52
src/testing/ausweise-fix-rechnungsid.ts
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
import { Enums, prisma } from "#lib/server/prisma.js";
|
||||||
|
import Papa from "papaparse"
|
||||||
|
import * as fs from "fs";
|
||||||
|
import { fileURLToPath } from "url";
|
||||||
|
import { generatePrefixedId } from "#lib/db.js";
|
||||||
|
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||||
|
|
||||||
|
const path = fileURLToPath(new URL("./rechnungen.csv", import.meta.url));
|
||||||
|
|
||||||
|
if (!fs.existsSync(path)) {
|
||||||
|
throw new Error(`${path} existiert nicht.`)
|
||||||
|
}
|
||||||
|
|
||||||
|
const file = fs.createReadStream(path, "utf8");
|
||||||
|
Papa.parse(file, {
|
||||||
|
header: true,
|
||||||
|
async complete(results, file) {
|
||||||
|
let i = 0;
|
||||||
|
for (const rechnung of results.data as any) {
|
||||||
|
i++
|
||||||
|
if (i % 1000 === 0) {
|
||||||
|
console.log(`Processed ${i} of ${results.data.length}, ${Math.round(i / results.data.length * 100)}%`)
|
||||||
|
}
|
||||||
|
const existing_rechnung = await prisma.rechnung.findFirst({
|
||||||
|
where: {
|
||||||
|
alte_id: parseInt(rechnung.id)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (existing_rechnung) {
|
||||||
|
const existing_bedarfsausweiswohnen = await prisma.bedarfsausweisWohnen.findFirst({
|
||||||
|
where: {
|
||||||
|
alte_ausweis_id: parseInt(rechnung.ausweis_id)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (existing_bedarfsausweiswohnen){
|
||||||
|
if (existing_bedarfsausweiswohnen.rechnung_id != existing_rechnung.id){
|
||||||
|
console.log('Rechnungsnummer weicht ab. Alte Ausweis Id:'+ rechnung.ausweis_id + ': ' + existing_bedarfsausweiswohnen.rechnung_id + ' vs ' + existing_rechnung.id);
|
||||||
|
//Todo: Rechnungsid updaten
|
||||||
|
} else {
|
||||||
|
//console.log('Rechnungsnummer Abgleich ok. Alte Ausweis Id:'+ rechnung.ausweis_id + ': ' + existing_bedarfsausweiswohnen.rechnung_id + ' vs ' + existing_rechnung.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('Rechnung existiert nicht: '+ parseInt(rechnung.id));
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (i > 10000) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
37
src/testing/ausweise-vg-fix-ausgestellt.ts
Normal file
37
src/testing/ausweise-vg-fix-ausgestellt.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import { Enums, prisma } from "#lib/server/prisma.js";
|
||||||
|
|
||||||
|
let start = 1;
|
||||||
|
let limit = 10;
|
||||||
|
|
||||||
|
const existing_verbauchsauweisgewerbe_list = await prisma.verbrauchsausweisGewerbe.findMany({
|
||||||
|
where: {
|
||||||
|
rechnung_id: null
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const ausweis of existing_verbauchsauweisgewerbe_list) {
|
||||||
|
if (ausweis.bestellt == true && ausweis.benutzer_id != "USCTJ2VV"){
|
||||||
|
console.log(
|
||||||
|
'ID:' + ausweis.id +
|
||||||
|
' Reg.Nr:' + ausweis.registriernummer +
|
||||||
|
' Rechnung_id: ' + ausweis.rechnung_id +
|
||||||
|
' Bestellt: ' + ausweis.bestellt +
|
||||||
|
' Ausgestellt: ' + ausweis.ausgestellt +
|
||||||
|
' Ausgestellt am: ' + ausweis.ausstellungsdatum
|
||||||
|
);
|
||||||
|
|
||||||
|
await prisma.verbrauchsausweisGewerbe.update({
|
||||||
|
where: {
|
||||||
|
id: ausweis.id
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
bestellt: false,
|
||||||
|
ausgestellt: false,
|
||||||
|
ausstellungsdatum: null
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// if (start >= limit) break;
|
||||||
|
start++;
|
||||||
|
}
|
||||||
|
}
|
||||||
37
src/testing/ausweise-vw-fix-ausgestellt.ts
Normal file
37
src/testing/ausweise-vw-fix-ausgestellt.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import { Enums, prisma } from "#lib/server/prisma.js";
|
||||||
|
|
||||||
|
let start = 1;
|
||||||
|
let limit = 10;
|
||||||
|
|
||||||
|
const existing_verbauchsausweiswohnen_list = await prisma.verbrauchsausweisWohnen.findMany({
|
||||||
|
where: {
|
||||||
|
rechnung_id: null
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const ausweis of existing_verbauchsausweiswohnen_list) {
|
||||||
|
if (ausweis.bestellt == true && ausweis.benutzer_id != "USCTJ2VV"){
|
||||||
|
console.log(
|
||||||
|
'ID:' + ausweis.id +
|
||||||
|
' Reg.Nr:' + ausweis.registriernummer +
|
||||||
|
' Rechnung_id: ' + ausweis.rechnung_id +
|
||||||
|
' Bestellt: ' + ausweis.bestellt +
|
||||||
|
' Ausgestellt: ' + ausweis.ausgestellt +
|
||||||
|
' Ausgestellt am: ' + ausweis.ausstellungsdatum
|
||||||
|
);
|
||||||
|
|
||||||
|
await prisma.verbrauchsausweisWohnen.update({
|
||||||
|
where: {
|
||||||
|
id: ausweis.id
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
bestellt: false,
|
||||||
|
ausgestellt: false,
|
||||||
|
ausstellungsdatum: null
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// if (start >= limit) break;
|
||||||
|
start++;
|
||||||
|
}
|
||||||
|
}
|
||||||
46
src/testing/nutzer-fix-alteid.ts
Normal file
46
src/testing/nutzer-fix-alteid.ts
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
import { Enums, prisma } from "#lib/server/prisma.js";
|
||||||
|
import Papa from "papaparse"
|
||||||
|
import * as fs from "fs";
|
||||||
|
import { fileURLToPath } from "url";
|
||||||
|
import { generatePrefixedId } from "#lib/db.js";
|
||||||
|
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||||
|
|
||||||
|
const path = fileURLToPath(new URL("./users.csv", import.meta.url));
|
||||||
|
|
||||||
|
if (!fs.existsSync(path)) {
|
||||||
|
throw new Error(`${path} existiert nicht.`)
|
||||||
|
}
|
||||||
|
|
||||||
|
const file = fs.createReadStream(path, "utf8");
|
||||||
|
Papa.parse(file, {
|
||||||
|
header: true,
|
||||||
|
async complete(results, file) {
|
||||||
|
let i = 0;
|
||||||
|
for (const user of results.data as any) {
|
||||||
|
i++
|
||||||
|
if (i % 100 === 0) {
|
||||||
|
//console.log(`Processed ${i} of ${results.data.length}, ${Math.round(i / results.data.length * 100)}%`)
|
||||||
|
}
|
||||||
|
const existing = await prisma.benutzer.findFirst({
|
||||||
|
where: {
|
||||||
|
email: user.email
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (existing) {
|
||||||
|
if (existing.alte_id == null){
|
||||||
|
console.log('User: ' + user.email + ' fehlt alte id ('+user.id+')');
|
||||||
|
await prisma.benutzer.update({
|
||||||
|
where: {
|
||||||
|
email: user.email
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
alte_id: parseInt(user.id)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -19,7 +19,7 @@ Papa.parse(file, {
|
|||||||
let i = 0;
|
let i = 0;
|
||||||
for (const rechnung of results.data as any) {
|
for (const rechnung of results.data as any) {
|
||||||
i++
|
i++
|
||||||
if (i % 50 === 0) {
|
if (i % 500 === 0) {
|
||||||
console.log(`Processed ${i} of ${results.data.length}, ${Math.round(i / results.data.length * 100)}%`)
|
console.log(`Processed ${i} of ${results.data.length}, ${Math.round(i / results.data.length * 100)}%`)
|
||||||
}
|
}
|
||||||
const existing = await prisma.rechnung.findFirst({
|
const existing = await prisma.rechnung.findFirst({
|
||||||
@@ -29,7 +29,7 @@ Papa.parse(file, {
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (existing) {
|
if (existing) {
|
||||||
console.log(`Rechnung für ${rechnung.id} existiert bereits.`);
|
//console.log(`Rechnung für ${rechnung.id} existiert bereits.`);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,6 +166,7 @@ Papa.parse(file, {
|
|||||||
await prisma.rechnung.create({
|
await prisma.rechnung.create({
|
||||||
data
|
data
|
||||||
});
|
});
|
||||||
|
console.log('User: ' + rechnung.user_id + ' Rechnung:' + rechnung.id);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
Reference in New Issue
Block a user