From 23246fbda2057fd558a8285441452d499277fc3f Mon Sep 17 00:00:00 2001 From: Carl Mahnke Date: Thu, 24 Apr 2025 16:35:18 +0200 Subject: [PATCH 1/6] Bedarfsausweis Austellen - Fix Rechnung PDF Anhang --- src/astro-typesafe-api-caller.ts | 13 +++++++------ src/pages/api/admin/bedarfsausweis-ausstellen.ts | 6 ++++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index a249c381..9ce6fa16 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -14,29 +14,30 @@ export const createCaller = createCallerFactory({ "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-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"), "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-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"), "verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/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"), - "webhooks/mollie": await import("../src/pages/api/webhooks/mollie.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"), "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"), diff --git a/src/pages/api/admin/bedarfsausweis-ausstellen.ts b/src/pages/api/admin/bedarfsausweis-ausstellen.ts index e7bf8588..e926b850 100644 --- a/src/pages/api/admin/bedarfsausweis-ausstellen.ts +++ b/src/pages/api/admin/bedarfsausweis-ausstellen.ts @@ -139,7 +139,7 @@ export const POST = defineApiRoute({ } // Hier müssen wir warten, damit wir sichergehen können, dass die Rechnung bei LexOffice existiert. - let pdfRechnung, pdfRechnungError; + let pdfRechnung, pdfRechnungError, pdfSource; try { const rechnungsCheckCommand = new GetObjectCommand({ @@ -155,9 +155,11 @@ export const POST = defineApiRoute({ } if (pdfRechnung && !pdfRechnungError) { + pdfSource = 'S3'; console.log('PDF from S3'); } else { [pdfRechnung, pdfRechnungError] = await tryCatch(getLexOfficeRechnung(rechnung)); + pdfSource = 'LexOffice'; console.log('PDF from LexOffice'); } @@ -228,7 +230,7 @@ export const POST = defineApiRoute({ }); } - if (!rechnungsCheckCommand && pdfRechnung != null ){ + if (pdfSource == 'LexOffice' && pdfRechnung != null ){ const rechnungsCommand = new PutObjectCommand({ Bucket: "ibc-pdfs", Key: `ID_${ausweis.id}_Rechnung.pdf`, From d5fb937dd676d6e645e6ad7ad73e4efd90a895ff Mon Sep 17 00:00:00 2001 From: Carl Mahnke Date: Thu, 24 Apr 2025 16:47:41 +0200 Subject: [PATCH 2/6] Bedarfsausweis Austellen - Fix Rechnung PDF Anhang --- src/lib/server/invoice.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/server/invoice.ts b/src/lib/server/invoice.ts index 1181dccc..17f94a26 100644 --- a/src/lib/server/invoice.ts +++ b/src/lib/server/invoice.ts @@ -339,7 +339,7 @@ export async function getLexOfficeRechnung(rechnung: Rechnung) { }) if (fileRequest.status !== 200) { - throw new Error("File request hat nicht funktioniert.") + throw new Error("File request hat nicht funktioniert." + rechnung.lex_office_id + "/" + file_id) } const file = await fileRequest.arrayBuffer() From f17a8a648119b8dcef59a60490f86e62ba3dc1ff Mon Sep 17 00:00:00 2001 From: Carl Mahnke Date: Thu, 24 Apr 2025 16:51:12 +0200 Subject: [PATCH 3/6] Bedarfsausweis Austellen - Fix Rechnung PDF Anhang --- src/pages/api/admin/bedarfsausweis-ausstellen.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/api/admin/bedarfsausweis-ausstellen.ts b/src/pages/api/admin/bedarfsausweis-ausstellen.ts index e926b850..ed52c61b 100644 --- a/src/pages/api/admin/bedarfsausweis-ausstellen.ts +++ b/src/pages/api/admin/bedarfsausweis-ausstellen.ts @@ -139,6 +139,7 @@ export const POST = defineApiRoute({ } // Hier müssen wir warten, damit wir sichergehen können, dass die Rechnung bei LexOffice existiert. + setTimeout(async () => { let pdfRechnung, pdfRechnungError, pdfSource; try { @@ -394,5 +395,6 @@ export const POST = defineApiRoute({ }, }); } + }, 3000); }, }); \ No newline at end of file From e535cdaeba3cb32f40313800b2724c3f22b9dbeb Mon Sep 17 00:00:00 2001 From: Carl Mahnke Date: Thu, 24 Apr 2025 16:56:52 +0200 Subject: [PATCH 4/6] Bedarfsausweis ausstellen - cleanup --- src/lib/server/invoice.ts | 2 +- src/pages/api/admin/bedarfsausweis-ausstellen.ts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/lib/server/invoice.ts b/src/lib/server/invoice.ts index 17f94a26..1181dccc 100644 --- a/src/lib/server/invoice.ts +++ b/src/lib/server/invoice.ts @@ -339,7 +339,7 @@ export async function getLexOfficeRechnung(rechnung: Rechnung) { }) if (fileRequest.status !== 200) { - throw new Error("File request hat nicht funktioniert." + rechnung.lex_office_id + "/" + file_id) + throw new Error("File request hat nicht funktioniert.") } const file = await fileRequest.arrayBuffer() diff --git a/src/pages/api/admin/bedarfsausweis-ausstellen.ts b/src/pages/api/admin/bedarfsausweis-ausstellen.ts index ed52c61b..66944cc2 100644 --- a/src/pages/api/admin/bedarfsausweis-ausstellen.ts +++ b/src/pages/api/admin/bedarfsausweis-ausstellen.ts @@ -157,11 +157,9 @@ export const POST = defineApiRoute({ if (pdfRechnung && !pdfRechnungError) { pdfSource = 'S3'; - console.log('PDF from S3'); } else { [pdfRechnung, pdfRechnungError] = await tryCatch(getLexOfficeRechnung(rechnung)); pdfSource = 'LexOffice'; - console.log('PDF from LexOffice'); } if (pdfRechnungError) { From cc583080ea1325348a83b76135d5914c45826770 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Thu, 24 Apr 2025 17:17:29 +0200 Subject: [PATCH 5/6] Preis fix Bedarfsausweis --- src/components/Dashboard/DashboardAusweis.svelte | 6 ++++-- src/lib/server/invoice.ts | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/Dashboard/DashboardAusweis.svelte b/src/components/Dashboard/DashboardAusweis.svelte index 30bf779d..9d095310 100644 --- a/src/components/Dashboard/DashboardAusweis.svelte +++ b/src/components/Dashboard/DashboardAusweis.svelte @@ -262,10 +262,10 @@
{#if ausweis.storniert}

Storniert

@@ -424,6 +424,8 @@ {:else if !ausweis.ausgestellt} Der Ausweis wurde von Ihnen freigegeben und befindet sich in Prüfung durch IB Cornelsen {/if} + {:else if ausweis.ausgestellt} + Vorgang erledigt. Ausweis ist geprüft und ausgestellt. {:else} Der Ausweis wurde von Ihnen gespeichert und muss noch bestellt werden. {/if} diff --git a/src/lib/server/invoice.ts b/src/lib/server/invoice.ts index 1181dccc..a1a35a3b 100644 --- a/src/lib/server/invoice.ts +++ b/src/lib/server/invoice.ts @@ -188,7 +188,7 @@ export async function createInvoice( data["lineItems"].push( createLineItem( `Bedarfsausweis Online (ID ${ausweis.id})`, - PRICES.VerbrauchsausweisWohnen.Standard, + PRICES.BedarfsausweisWohnen.Standard, 19 ) ); @@ -196,7 +196,7 @@ export async function createInvoice( data["lineItems"].push( createLineItem( `Bedarfsausweis Online (Vorprüfung negativ) (ID ${ausweis.id})`, - PRICES.VerbrauchsausweisWohnen.Beratung, + PRICES.BedarfsausweisWohnen.Beratung, 19 ) ); @@ -204,7 +204,7 @@ export async function createInvoice( data["lineItems"].push( createLineItem( `Bedarfsausweis Offline (ID ${ausweis.id})`, - PRICES.VerbrauchsausweisWohnen.Offline, + PRICES.BedarfsausweisWohnen.Offline, 19 ) ); From 88c35f81f7667d4eee75d7dad3fe99c441890dbc Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 25 Apr 2025 10:55:08 +0200 Subject: [PATCH 6/6] Text verbessert --- src/astro-typesafe-api-caller.ts | 8 ++++---- src/components/Dashboard/DashboardAusweis.svelte | 10 +++++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index 9ce6fa16..3ba70511 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -22,21 +22,21 @@ export const createCaller = createCallerFactory({ "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"), + "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"), "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"), + "verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"), + "verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"), "user": await import("../src/pages/api/user/index.ts"), "user/self": await import("../src/pages/api/user/self.ts"), "verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"), "verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.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"), "aufnahme/[id]/bilder": await import("../src/pages/api/aufnahme/[id]/bilder.ts"), "aufnahme/[id]": await import("../src/pages/api/aufnahme/[id]/index.ts"), diff --git a/src/components/Dashboard/DashboardAusweis.svelte b/src/components/Dashboard/DashboardAusweis.svelte index 9d095310..864f5add 100644 --- a/src/components/Dashboard/DashboardAusweis.svelte +++ b/src/components/Dashboard/DashboardAusweis.svelte @@ -586,7 +586,8 @@
{/if}
- Heizung (Bj {aufnahme.baujahr_heizung}) wird mit {ausweis.brennstoff_1} betrieben. Die Verbräuche vom + Heizung (Bj {aufnahme.baujahr_heizung}) wird mit + {ausweis.brennstoff_1} betrieben. Die Verbräuche vom {moment(ausweis.startdatum).format("MM.YYYY")} bis {moment(ausweis.startdatum).add("3", "years").format("MM.YYYY")} betragen {ausweis.verbrauch_1} {ausweis.einheit_1}, {ausweis.verbrauch_2} {ausweis.einheit_1} und {ausweis.verbrauch_3} {ausweis.einheit_1}. {#if ausweis.zusaetzliche_heizquelle} - @@ -602,12 +603,15 @@ {:else} Es wurde ein Warmwasseranteil von {ausweis.anteil_warmwasser_1}% berücksichtigt. {/if} + Der Anteil wird vom Gesamtverbrauch abgezogen, um den Heizwärmebedarf zu ermitteln und diesen mit dem + über drei Jahre gemittelten Klimafaktor {ausweis.klimafaktor} zu multiplizieren. {:else} {#if aufnahme.solarsystem_warmwasser} Da ein Solarsystem für Warmwasser vorhanden ist, wurde ein reduzierter Warmwasserzuschlag von 12 kWh/m²a angesetzt. {:else} Es wurde ein Warmwasserzuschlag von 20 kWh/m²a angesetzt. - {/if} + {/if} + Der Anteil wird als Zuschlag zum Gesamtverbrauch addiert, und im Ausweis in einer separaten Zeile ausgewiesen. {/if} {#if !ausweis.alternative_heizung && !ausweis.alternative_warmwasser && !ausweis.alternative_lueftung && !ausweis.alternative_kuehlung} Alternative Energieversorgung wird nicht verwendet @@ -723,7 +727,7 @@ {bild.kategorie} {/each}
- +

Unterlagen

{#if aufnahme.unterlagen.length > 0}