diff --git a/.github/workflows/prevent-wrong-pr.yml b/.github/workflows/prevent-wrong-pr.yml
index c2073db3..d25826c0 100644
--- a/.github/workflows/prevent-wrong-pr.yml
+++ b/.github/workflows/prevent-wrong-pr.yml
@@ -13,6 +13,8 @@ jobs:
steps:
- name: Prevent dev merges
run: |
+ echo "${{ github.head_ref }}";
+ echo "${{ github.base_ref }}";
if [[ "${{ github.head_ref }}" == "dev" ]]; then
echo "ERROR: Merging 'dev' into '${{ github.base_ref }}' is forbidden!"
exit 1
@@ -21,6 +23,8 @@ jobs:
- name: Allow only staging into main
if: github.base_ref == 'main'
run: |
+ echo "${{ github.head_ref }}";
+ echo "${{ github.base_ref }}";
if [[ "${{ github.head_ref }}" != "staging" ]]; then
echo "ERROR: Only 'staging' branch is allowed to merge into 'main'. Current: '${{ github.head_ref }}'"
exit 1
diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts
index 85eb31a1..478d3c24 100644
--- a/src/astro-typesafe-api-caller.ts
+++ b/src/astro-typesafe-api-caller.ts
@@ -5,7 +5,6 @@ export const createCaller = createCallerFactory({
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
"unterlage": await import("../src/pages/api/unterlage.ts"),
- "aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
"admin/bedarfsausweis-ausstellen": await import("../src/pages/api/admin/bedarfsausweis-ausstellen.ts"),
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
@@ -13,9 +12,11 @@ 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"),
+ "aufnahme": await import("../src/pages/api/aufnahme/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"),
+ "ausweise": await import("../src/pages/api/ausweise/index.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"),
@@ -34,6 +35,8 @@ export const createCaller = createCallerFactory({
"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/Abrechnung/AbrechungTable.svelte b/src/components/Abrechnung/AbrechungTable.svelte
new file mode 100644
index 00000000..03aa4efb
--- /dev/null
+++ b/src/components/Abrechnung/AbrechungTable.svelte
@@ -0,0 +1,109 @@
+
+
+ {#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}
+
+
+
$month_name $year_name - Klicke, um Tabelle anzuzeigen
+
PDF Ansehen
+
+
+
+
+ | ID |
+ DATUM |
+ GEBÄUDEADRESSE |
+ PLZ |
+ ORT |
+ AUSWEIS |
+ BETRAG NETTO |
+
+
+
+ {#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]}
+
+ | {bestellung.id} |
+ {moment(bestellung.created_at).format("Y/m/d")} |
+ {bestellung["objekt_strasse"]} |
+ {bestellung["objekt_plz"]} |
+ {bestellung["objekt_ort"]} |
+ {bestellung['ausweisart']} |
+ {provisionBestellung} € |
+
+ {/each}
+
+ {/if}
+ {/each}
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Dashboard/DashboardSidebar.svelte b/src/components/Dashboard/DashboardSidebar.svelte
index 5a0e4767..a3706fe8 100644
--- a/src/components/Dashboard/DashboardSidebar.svelte
+++ b/src/components/Dashboard/DashboardSidebar.svelte
@@ -70,6 +70,7 @@
{/if}
+ Conversions
diff --git a/src/pages/dashboard/abrechnung/index.astro b/src/pages/dashboard/abrechnung/index.astro
new file mode 100644
index 00000000..f0fe5e8a
--- /dev/null
+++ b/src/pages/dashboard/abrechnung/index.astro
@@ -0,0 +1,334 @@
+---
+import AbrechungTable from "#components/Abrechnung/AbrechungTable.svelte";
+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"))
+
+let startdatum = start.toDate();
+let enddatum = end.toDate();
+
+const benutzer = await getCurrentUser(Astro)
+
+if (!benutzer) {
+ return Astro.redirect("/404")
+}
+
+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.
+let bestellungen;
+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
+ },
+ }, {
+ created_at: {
+ lte: enddatum
+ },
+ }]
+ },
+ orderBy: {
+ created_at: "desc"
+ },
+ include: {
+ bedarfsausweis_wohnen: true,
+ verbrauchsausweis_gewerbe: true,
+ verbrauchsausweis_wohnen: true
+ }
+ });
+} else {
+ bestellungen = await prisma.rechnung.findMany({
+ where: {
+ partner_code: "immowelt",
+ OR: [{
+ verbrauchsausweis_gewerbe: {
+ ausgestellt: true
+ }
+ },
+ {
+ bedarfsausweis_wohnen: {
+ ausgestellt: true
+ }
+ },
+ {
+ verbrauchsausweis_wohnen: {
+ ausgestellt: true
+ }
+ }]
+ },
+ orderBy: {
+ created_at: "desc"
+ },
+ include: {
+ bedarfsausweis_wohnen: true,
+ verbrauchsausweis_gewerbe: true,
+ verbrauchsausweis_wohnen: 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
+ }
+ }],
+ 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]
+ }
+ if (bestellung.bedarfsausweis_wohnen) {
+ ausweisarten.push(Enums.Ausweisart.BedarfsausweisWohnen)
+ provision += provisionen[Enums.Ausweisart.BedarfsausweisWohnen]
+ }
+ if (bestellung.verbrauchsausweis_gewerbe) {
+ ausweisarten.push(Enums.Ausweisart.VerbrauchsausweisGewerbe)
+ provision += provisionen[Enums.Ausweisart.VerbrauchsausweisGewerbe]
+ }
+}
+
+---
+
+
+
+
+
+
+
+ Reporting | online-energieausweis.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file