--- import AbrechnungTable from "#components/Abrechnung/AbrechnungTable.svelte"; import BlankLayout from "#layouts/BlankLayout.astro"; import { getProvision } from "#lib/provision"; import { extrahiereAusweisAusFeldMitMehrerenAusweisen } from "#lib/server/ausweis"; import { Enums, prisma } from "#lib/server/prisma"; import { getCurrentUser } from "#lib/server/user"; import moment from "moment-timezone"; moment.tz.setDefault("Europe/Berlin"); 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(); const benutzer = await getCurrentUser(Astro); if (!benutzer) { return Astro.redirect("/404"); } // $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. let bestellungen; if (start.isValid() && end.isValid()) { bestellungen = await prisma.rechnung.findMany({ where: { partner_code: benutzer.partner_code, OR: [ { verbrauchsausweis_gewerbe: { ausgestellt: true, }, }, { bedarfsausweis_wohnen: { ausgestellt: true, }, }, { verbrauchsausweis_wohnen: { ausgestellt: true, }, }, ], AND: [ { erstellt_am: { gte: startdatum, }, }, { erstellt_am: { lte: enddatum, }, }, ], }, orderBy: { erstellt_am: "desc", }, include: { 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: benutzer.partner_code, OR: [ { verbrauchsausweis_gewerbe: { ausgestellt: true, }, }, { bedarfsausweis_wohnen: { ausgestellt: true, }, }, { verbrauchsausweis_wohnen: { ausgestellt: true, }, }, ], }, orderBy: { erstellt_am: "desc", }, include: { 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? if (!startdatum) { startdatum = ( await prisma.rechnung.findFirst({ select: { erstellt_am: true, }, where: { partner_code: benutzer.partner_code, OR: [ { verbrauchsausweis_gewerbe: { ausgestellt: true, }, }, { bedarfsausweis_wohnen: { ausgestellt: true, }, }, { verbrauchsausweis_wohnen: { ausgestellt: true, }, }, ], erstellt_am: { gte: moment().set("year", 2020).set("dayOfYear", 1).toDate(), }, }, orderBy: { erstellt_am: "asc", }, }) )?.erstellt_am || moment().startOf("month").toDate(); } const provisionen = await prisma.provisionen.findMany({ where: { benutzer_id: benutzer.id } }) bestellungen = bestellungen.map((bestellung) => extrahiereAusweisAusFeldMitMehrerenAusweisen(bestellung) ); let provision = 0; for (const bestellung of bestellungen) { const { provision_betrag, provision_prozent } = getProvision(bestellung.ausweis.ausweisart, bestellung.ausweis.ausweistyp, provisionen); provision += provision_betrag; } ---

Abrechnungsbetrag gesamt: {provision.toFixed(2)} €

PDF für letzten Monat generieren.