diff --git a/bun.lock b/bun.lock index 8a94ea08..bb6cacf8 100644 --- a/bun.lock +++ b/bun.lock @@ -15,6 +15,7 @@ "@pdfme/common": "^5.2.16", "@pdfme/generator": "^5.2.16", "@pdfme/ui": "^5.2.16", + "@svelte-plugins/datepicker": "^1.0.11", "@trpc/client": "^10.45.2", "@trpc/server": "^10.45.2", "astro": "^4.16.17", @@ -711,6 +712,8 @@ "@smithy/util-waiter": ["@smithy/util-waiter@4.0.2", "", { "dependencies": { "@smithy/abort-controller": "^4.0.1", "@smithy/types": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-piUTHyp2Axx3p/kc2CIJkYSv0BAaheBQmbACZgQSSfWUumWNW+R1lL+H9PDBxKJkvOeEX+hKYEFiwO8xagL8AQ=="], + "@svelte-plugins/datepicker": ["@svelte-plugins/datepicker@1.0.11", "", {}, "sha512-Tqc07QLyRkCpc3Glg6oRLTUApLtCrOh52d6vJ7L32QI17HrwvcDDjaH3LF3X1SBm3CWdMrnqfJp3xjUZmB4wzw=="], + "@sveltejs/vite-plugin-svelte": ["@sveltejs/vite-plugin-svelte@2.5.3", "", { "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^1.0.4", "debug": "^4.3.4", "deepmerge": "^4.3.1", "kleur": "^4.1.5", "magic-string": "^0.30.3", "svelte-hmr": "^0.15.3", "vitefu": "^0.2.4" }, "peerDependencies": { "svelte": "^3.54.0 || ^4.0.0 || ^5.0.0-next.0", "vite": "^4.0.0" } }, "sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w=="], "@sveltejs/vite-plugin-svelte-inspector": ["@sveltejs/vite-plugin-svelte-inspector@1.0.4", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "@sveltejs/vite-plugin-svelte": "^2.2.0", "svelte": "^3.54.0 || ^4.0.0", "vite": "^4.0.0" } }, "sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ=="], diff --git a/package.json b/package.json index c5f7595b..96dbcac3 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@pdfme/common": "^5.2.16", "@pdfme/generator": "^5.2.16", "@pdfme/ui": "^5.2.16", + "@svelte-plugins/datepicker": "^1.0.11", "@trpc/client": "^10.45.2", "@trpc/server": "^10.45.2", "astro": "^4.16.17", diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index 7f353fd2..262124be 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -12,8 +12,8 @@ export const createCaller = createCallerFactory({ "admin/nicht-ausstellen": await import("../src/pages/api/admin/nicht-ausstellen.ts"), "admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"), "admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"), - "ausweise": await import("../src/pages/api/ausweise/index.ts"), "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"), @@ -33,10 +33,10 @@ export const createCaller = createCallerFactory({ "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"), "verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"), "verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"), + "verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"), + "verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/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/Abrechnung/AbrechnungTable.svelte b/src/components/Abrechnung/AbrechnungTable.svelte new file mode 100644 index 00000000..dfbe44d9 --- /dev/null +++ b/src/components/Abrechnung/AbrechnungTable.svelte @@ -0,0 +1,121 @@ + + +
+
+ + + +

Abrechnungsübersicht für {email}

+
+
+ +
+ {#if !bestellungen || bestellungen.length === 0} +

Keine Bestellungen gefunden.

+ {/if} + {#each periods as dt} + {@const jahrMonat = dt.format("Y-MM")} + {#if jahrMonat in bestellungenNachMonat && bestellungenNachMonat[jahrMonat].length > 0} + + {@const provisionMonat = bestellungenNachMonat[jahrMonat].reduce((acc, bestellung) => { + return acc + provisionen[bestellung.ausweis.ausweisart] || 0; + }, 0) * 1.19} + + + + + + + + + + + + + + + + + + + + + {#each bestellungenNachMonat[jahrMonat] as bestellung} + {@const provisionBestellung = provisionen[bestellung.ausweis.ausweisart] || 0} + + + + + + + + + + {/each} +
IDDATUMGEBÄUDEADRESSE PLZ ORT AUSWEISBETRAG NETTO
{months[dt.format("MM")]} {dt.format("YYYY")}{provisionMonat.toFixed(2)} €
{bestellung.id}{moment(bestellung.created_at).format("DD.MM.YYYY")}{bestellung.ausweis.aufnahme.objekt.adresse}{bestellung.ausweis.aufnahme.objekt.plz}{bestellung.ausweis.aufnahme.objekt.ort}{bestellung.ausweis.ausweisart}{provisionBestellung.toFixed(2)} €
+ {/if} + {/each} +
\ No newline at end of file diff --git a/src/components/Abrechnung/AbrechungTable.svelte b/src/components/Abrechnung/AbrechungTable.svelte deleted file mode 100644 index 03aa4efb..00000000 --- a/src/components/Abrechnung/AbrechungTable.svelte +++ /dev/null @@ -1,109 +0,0 @@ - - - {#each periods as dt} - {@const jahrMonat = dt.format("Y-m")} - {#if jahrMonat in bestellungenNachMonat && bestellungenNachMonat[jahrMonat].length > 0} - - {@const provisionMonat = bestellungenNachMonat[jahrMonat].reduce((acc, bestellung) => { - if (bestellung.verbrauchsausweis_wohnen) { - return acc + provisionen[Enums.Ausweisart.VerbrauchsausweisWohnen]; - } - if (bestellung.bedarfsausweis_wohnen) { - return acc + provisionen[Enums.Ausweisart.BedarfsausweisWohnen]; - } - if (bestellung.verbrauchsausweis_gewerbe) { - return acc + provisionen[Enums.Ausweisart.VerbrauchsausweisGewerbe]; - } - - return acc; - }) * 1.19} - - - - - - - - - - - - - - - - {#each bestellungenNachMonat[jahrMonat] as bestellung} - {@const provisionBestellung = bestellung.verbrauchsausweis_wohnen ? provisionen[Enums.Ausweisart.VerbrauchsausweisWohnen] : bestellung.verbrauchsausweis_gewerbe ? provisionen[Enums.Ausweisart.VerbrauchsausweisGewerbe] : provisionen[Enums.Ausweisart.BedarfsausweisWohnen]} - - - - - - - - - - {/each} - - {/if} - {/each} - - - - \ No newline at end of file diff --git a/src/components/Dashboard/DashboardSidebar.svelte b/src/components/Dashboard/DashboardSidebar.svelte index a3706fe8..0fab3bac 100644 --- a/src/components/Dashboard/DashboardSidebar.svelte +++ b/src/components/Dashboard/DashboardSidebar.svelte @@ -70,7 +70,7 @@ {/if} - Conversions + Monatliche Abrechnung
diff --git a/src/lib/server/ausweis.ts b/src/lib/server/ausweis.ts index 052cc636..13ee0821 100644 --- a/src/lib/server/ausweis.ts +++ b/src/lib/server/ausweis.ts @@ -1,11 +1,27 @@ -import { AufnahmeClient, BedarfsausweisWohnenClient, BenutzerClient, BildClient, getAusweisartFromId, ObjektClient, RechnungClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js"; +import { + AufnahmeClient, + BedarfsausweisWohnenClient, + BenutzerClient, + BildClient, + getAusweisartFromId, + ObjektClient, + RechnungClient, + VerbrauchsausweisGewerbeClient, + VerbrauchsausweisWohnenClient, +} from "#components/Ausweis/types.js"; import { pdfDatenblattVerbrauchsausweisGewerbe } from "#lib/pdf/pdfDatenblattVerbrauchsausweisGewerbe.js"; import { pdfDatenblattVerbrauchsausweisWohnen } from "#lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.js"; import { pdfVerbrauchsausweisGewerbe } from "#lib/pdf/pdfVerbrauchsausweisGewerbe.js"; import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen.js"; import { pdfAushangVerbrauchsausweisGewerbe } from "#lib/pdf/pdfAushangVerbrauchsausweisGewerbe.js"; -import { Enums, prisma, Rechnung } from "#lib/server/prisma.js"; - +import { + BedarfsausweisWohnen, + Enums, + prisma, + Rechnung, + VerbrauchsausweisGewerbe, + VerbrauchsausweisWohnen, +} from "#lib/server/prisma.js"; /** * Gibt den richtigen Prisma Adapter für die Ausweisart basierend auf der UID zurück, oder null bei einer falschen UID. @@ -15,68 +31,179 @@ export function getPrismaAusweisAdapter(id: string) { const ausweisart = getAusweisartFromId(id); if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) { - return prisma.verbrauchsausweisWohnen + return prisma.verbrauchsausweisWohnen; } else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) { - return prisma.verbrauchsausweisGewerbe + return prisma.verbrauchsausweisGewerbe; } else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) { - return prisma.bedarfsausweisWohnen + return prisma.bedarfsausweisWohnen; } else if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) { - return prisma.gEGNachweisWohnen + return prisma.gEGNachweisWohnen; } else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) { - return prisma.gEGNachweisGewerbe + return prisma.gEGNachweisGewerbe; } else if (ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) { - return prisma.bedarfsausweisGewerbe + return prisma.bedarfsausweisGewerbe; } } /** * Gibt den richtigen Ansichtsausweis basierend auf der Ausweisart zurück. - * @param ausweis + * @param ausweis */ -export async function getAnsichtsausweis(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, vorschau: boolean = true, ausweisart = getAusweisartFromId(ausweis.id)) { +export async function getAnsichtsausweis( + ausweis: + | VerbrauchsausweisWohnenClient + | VerbrauchsausweisGewerbeClient + | BedarfsausweisWohnenClient, + aufnahme: AufnahmeClient, + objekt: ObjektClient, + bilder: BildClient[], + user: BenutzerClient, + vorschau: boolean = true, + ausweisart = getAusweisartFromId(ausweis.id) +) { if (!ausweisart) { - return null + return null; } if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) { - return await pdfVerbrauchsausweisWohnen(ausweis as VerbrauchsausweisWohnenClient, aufnahme, objekt, bilder, user, vorschau) + return await pdfVerbrauchsausweisWohnen( + ausweis as VerbrauchsausweisWohnenClient, + aufnahme, + objekt, + bilder, + user, + vorschau + ); } else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) { - return await pdfVerbrauchsausweisGewerbe(ausweis as VerbrauchsausweisGewerbeClient, aufnahme, objekt, bilder, user, vorschau) + return await pdfVerbrauchsausweisGewerbe( + ausweis as VerbrauchsausweisGewerbeClient, + aufnahme, + objekt, + bilder, + user, + vorschau + ); } - return null + return null; } /** * Gibt das richtige Datenblatt basierend auf der Ausweisart zurück. - * @param ausweis + * @param ausweis */ -export async function getDatenblatt(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, rechnung: Rechnung, ausweisart = getAusweisartFromId(ausweis.id)) { +export async function getDatenblatt( + ausweis: + | VerbrauchsausweisWohnenClient + | VerbrauchsausweisGewerbeClient + | BedarfsausweisWohnenClient, + aufnahme: AufnahmeClient, + objekt: ObjektClient, + bilder: BildClient[], + user: BenutzerClient, + rechnung: Rechnung, + ausweisart = getAusweisartFromId(ausweis.id) +) { if (!ausweisart) { - return null + return null; } if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) { - return await pdfDatenblattVerbrauchsausweisWohnen(ausweis as VerbrauchsausweisWohnenClient, aufnahme, objekt, rechnung, bilder) + return await pdfDatenblattVerbrauchsausweisWohnen( + ausweis as VerbrauchsausweisWohnenClient, + aufnahme, + objekt, + rechnung, + bilder + ); } else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) { - return await pdfDatenblattVerbrauchsausweisGewerbe(ausweis as VerbrauchsausweisGewerbeClient, aufnahme, objekt, rechnung, bilder) + return await pdfDatenblattVerbrauchsausweisGewerbe( + ausweis as VerbrauchsausweisGewerbeClient, + aufnahme, + objekt, + rechnung, + bilder + ); } - return null + return null; } /** * Gibt den richtigen Aushang basierend auf der Ausweisart zurück. - * @param ausweis + * @param ausweis */ -export async function getAushang(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, vorschau: boolean = true, rechnung: Rechnung, ausweisart = getAusweisartFromId(ausweis.id)) { +export async function getAushang( + ausweis: + | VerbrauchsausweisWohnenClient + | VerbrauchsausweisGewerbeClient + | BedarfsausweisWohnenClient, + aufnahme: AufnahmeClient, + objekt: ObjektClient, + bilder: BildClient[], + user: BenutzerClient, + vorschau: boolean = true, + rechnung: Rechnung, + ausweisart = getAusweisartFromId(ausweis.id) +) { if (!ausweisart || !rechnung.services.includes(Enums.Service.Aushang)) { - return null + return null; } if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) { - return await pdfAushangVerbrauchsausweisGewerbe(ausweis as VerbrauchsausweisGewerbeClient, aufnahme, objekt, bilder, user, vorschau) + return await pdfAushangVerbrauchsausweisGewerbe( + ausweis as VerbrauchsausweisGewerbeClient, + aufnahme, + objekt, + bilder, + user, + vorschau + ); } - return null -} \ No newline at end of file + return null; +} + +/** + * Extrahiert die Ausweisfelder aus einem Objekt, das mehrere Ausweisarten enthält, und fasst sie in einem gemeinsamen Feld `ausweis` zusammen. + * @param row Ein Objekt, das die Ausweisfelder enthält. + * @returns Ein neues Objekt, das die Ausweisfelder extrahiert und in einem gemeinsamen Feld `ausweis` zusammenfasst. + */ +export function extrahiereAusweisAusFeldMitMehrerenAusweisen( + row: T & { + bedarfsausweis_wohnen?: BedarfsausweisWohnen; + verbrauchsausweis_wohnen?: VerbrauchsausweisWohnen; + verbrauchsausweis_gewerbe?: VerbrauchsausweisGewerbe; + } +) { + const { + bedarfsausweis_wohnen, + verbrauchsausweis_wohnen, + verbrauchsausweis_gewerbe, + ...rest + } = row; + return { + ...rest, + ausweis: { + ...(bedarfsausweis_wohnen ?? + verbrauchsausweis_wohnen ?? + verbrauchsausweis_gewerbe), + ausweisart: bedarfsausweis_wohnen + ? Enums.Ausweisart.BedarfsausweisWohnen + : verbrauchsausweis_wohnen + ? Enums.Ausweisart.VerbrauchsausweisWohnen + : Enums.Ausweisart.VerbrauchsausweisGewerbe, + }, + } as { + ausweis: ( + | BedarfsausweisWohnen + | VerbrauchsausweisWohnen + | VerbrauchsausweisGewerbe + ) & { ausweisart: Enums.Ausweisart }; + } & Omit< + T, + | "bedarfsausweis_wohnen" + | "verbrauchsausweis_wohnen" + | "verbrauchsausweis_gewerbe" + >; +} diff --git a/src/modules/KundendatenModule.svelte b/src/modules/KundendatenModule.svelte index bdb9c830..a2d71b6b 100644 --- a/src/modules/KundendatenModule.svelte +++ b/src/modules/KundendatenModule.svelte @@ -1156,7 +1156,7 @@ grid-cols-3 sm:grid-cols-5 justify-around justify-items-center items-center" {/if}
- +
Ich habe die AGB und DSGVO im Impressum gelesen und akzeptiert.
diff --git a/src/pages/dashboard/abrechnung/index.astro b/src/pages/dashboard/abrechnung/index.astro index f0fe5e8a..d0cbac99 100644 --- a/src/pages/dashboard/abrechnung/index.astro +++ b/src/pages/dashboard/abrechnung/index.astro @@ -1,27 +1,28 @@ --- -import AbrechungTable from "#components/Abrechnung/AbrechungTable.svelte"; +import AbrechnungTable from "#components/Abrechnung/AbrechnungTable.svelte"; +import BlankLayout from "#layouts/BlankLayout.astro"; +import { extrahiereAusweisAusFeldMitMehrerenAusweisen } from "#lib/server/ausweis"; import { Enums, prisma } from "#lib/server/prisma"; import { getCurrentUser } from "#lib/server/user"; import moment from "moment"; +const start = moment(Astro.url.searchParams.get("start")); +const end = moment(Astro.url.searchParams.get("end")); -const start = moment(Astro.url.searchParams.get("start")) -const end = moment(Astro.url.searchParams.get("end")) +let startdatum = start.isValid() ? start.toDate() : moment().startOf("month").toDate(); +let enddatum = end.isValid() ? end.toDate() : moment().endOf("month").toDate(); -let startdatum = start.toDate(); -let enddatum = end.toDate(); - -const benutzer = await getCurrentUser(Astro) +const benutzer = await getCurrentUser(Astro); if (!benutzer) { - return Astro.redirect("/404") + return Astro.redirect("/404"); } -const provisionen={ +const provisionen = { [Enums.Ausweisart.VerbrauchsausweisWohnen]: 10, [Enums.Ausweisart.BedarfsausweisWohnen]: 10, [Enums.Ausweisart.VerbrauchsausweisGewerbe]: 10, -} +}; // $kommission = db()->one("SELECT abr_va, abr_ba, abr_vanw FROM users WHERE resellercode = :resellercode", ["resellercode" => $resellercode]); // Select every entry from database where user was involved. @@ -30,305 +31,206 @@ if (start.isValid() && end.isValid()) { bestellungen = await prisma.rechnung.findMany({ where: { partner_code: "immowelt", - OR: [{ - verbrauchsausweis_gewerbe: { - ausgestellt: true - } - }, - { - bedarfsausweis_wohnen: { - ausgestellt: true - } - }, - { - verbrauchsausweis_wohnen: { - ausgestellt: true - } - }], - AND: [{ - created_at: { - gte: startdatum + OR: [ + { + verbrauchsausweis_gewerbe: { + ausgestellt: true, + }, }, - }, { - created_at: { - lte: enddatum + { + bedarfsausweis_wohnen: { + ausgestellt: true, + }, }, - }] + { + verbrauchsausweis_wohnen: { + ausgestellt: true, + }, + }, + ], + AND: [ + { + created_at: { + gte: startdatum, + }, + }, + { + created_at: { + lte: enddatum, + }, + }, + ], }, orderBy: { - created_at: "desc" + created_at: "desc", }, include: { - bedarfsausweis_wohnen: true, - verbrauchsausweis_gewerbe: true, - verbrauchsausweis_wohnen: true - } + bedarfsausweis_wohnen: { + include: { + aufnahme: { + include: { + objekt: true, + }, + }, + }, + }, + verbrauchsausweis_gewerbe: { + include: { + aufnahme: { + include: { + objekt: true, + }, + }, + }, + }, + verbrauchsausweis_wohnen: { + include: { + aufnahme: { + include: { + objekt: true, + }, + }, + }, + }, + }, }); } else { bestellungen = await prisma.rechnung.findMany({ where: { partner_code: "immowelt", - OR: [{ - verbrauchsausweis_gewerbe: { - ausgestellt: true - } - }, - { - bedarfsausweis_wohnen: { - ausgestellt: true - } - }, - { - verbrauchsausweis_wohnen: { - ausgestellt: true - } - }] + OR: [ + { + verbrauchsausweis_gewerbe: { + ausgestellt: true, + }, + }, + { + bedarfsausweis_wohnen: { + ausgestellt: true, + }, + }, + { + verbrauchsausweis_wohnen: { + ausgestellt: true, + }, + }, + ], }, orderBy: { - created_at: "desc" + created_at: "desc", }, include: { - bedarfsausweis_wohnen: true, - verbrauchsausweis_gewerbe: true, - verbrauchsausweis_wohnen: true - } + bedarfsausweis_wohnen: { + include: { + aufnahme: { + include: { + objekt: true, + }, + }, + }, + }, + verbrauchsausweis_gewerbe: { + include: { + aufnahme: { + include: { + objekt: true, + }, + }, + }, + }, + verbrauchsausweis_wohnen: { + include: { + aufnahme: { + include: { + objekt: true, + }, + }, + }, + }, + }, }); } // Wann wurde der partner_code zum ersten mal benutzt? -const partnerCodeErstesMal = (await prisma.rechnung.findFirst({ - select: { - created_at: true - }, - where: { - partner_code: "immowelt", - OR: [{ - verbrauchsausweis_gewerbe: { - ausgestellt: true - } - }, - { - bedarfsausweis_wohnen: { - ausgestellt: true - } - }, - { - verbrauchsausweis_wohnen: { - ausgestellt: true - } - }], +const partnerCodeErstesMal = ( + await prisma.rechnung.findFirst({ + select: { + created_at: true, + }, + where: { + partner_code: "immowelt", + OR: [ + { + verbrauchsausweis_gewerbe: { + ausgestellt: true, + }, + }, + { + bedarfsausweis_wohnen: { + ausgestellt: true, + }, + }, + { + verbrauchsausweis_wohnen: { + ausgestellt: true, + }, + }, + ], created_at: { - gte: moment().set("year", 2020).set("dayOfYear", 1).toDate() - } - }, - orderBy: { - created_at: "asc" - } -}))?.created_at + gte: moment().set("year", 2020).set("dayOfYear", 1).toDate(), + }, + }, + orderBy: { + created_at: "asc", + }, + }) +)?.created_at; let provision = 0; const ausweisarten: string[] = []; for (const bestellung of bestellungen) { if (bestellung.verbrauchsausweis_wohnen) { - ausweisarten.push(Enums.Ausweisart.VerbrauchsausweisWohnen) - provision += provisionen[Enums.Ausweisart.VerbrauchsausweisWohnen] + ausweisarten.push(Enums.Ausweisart.VerbrauchsausweisWohnen); + provision += provisionen[Enums.Ausweisart.VerbrauchsausweisWohnen]; } if (bestellung.bedarfsausweis_wohnen) { - ausweisarten.push(Enums.Ausweisart.BedarfsausweisWohnen) - provision += provisionen[Enums.Ausweisart.BedarfsausweisWohnen] + ausweisarten.push(Enums.Ausweisart.BedarfsausweisWohnen); + provision += provisionen[Enums.Ausweisart.BedarfsausweisWohnen]; } if (bestellung.verbrauchsausweis_gewerbe) { - ausweisarten.push(Enums.Ausweisart.VerbrauchsausweisGewerbe) - provision += provisionen[Enums.Ausweisart.VerbrauchsausweisGewerbe] + ausweisarten.push(Enums.Ausweisart.VerbrauchsausweisGewerbe); + provision += provisionen[Enums.Ausweisart.VerbrauchsausweisGewerbe]; } } - --- + + + extrahiereAusweisAusFeldMitMehrerenAusweisen(bestellung) + )} + {provisionen} + {partnerCodeErstesMal} + startDate={startdatum} + endDate={enddatum} + email={benutzer.email} + client:load + /> - - - - - - Reporting | online-energieausweis.org - - - - - - - - - - - - - - - -
-
-IBCornelsen -
Erziehlte Conversions von {benutzer.email}
-
- -
- - - - -