Abrechnung Generierung

This commit is contained in:
Moritz Utcke
2025-08-04 17:23:04 -04:00
parent 3096f05f67
commit f56684a6e8
21 changed files with 459 additions and 115 deletions

View File

@@ -18,12 +18,6 @@ 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;
@@ -152,12 +146,13 @@ if (start.isValid() && end.isValid()) {
}
// Wann wurde der partner_code zum ersten mal benutzt?
const partnerCodeErstesMal = (
await prisma.rechnung.findFirst({
select: {
created_at: true,
},
where: {
if (!startdatum) {
startdatum = (
await prisma.rechnung.findFirst({
select: {
created_at: true,
},
where: {
partner_code: "immowelt",
OR: [
{
@@ -184,22 +179,30 @@ const partnerCodeErstesMal = (
created_at: "asc",
},
})
)?.created_at;
)?.created_at || moment().startOf("month").toDate();
}
const provisionen = await prisma.provisionen.findMany({
where: {
benutzer_id: benutzer.id
}
})
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];
provision += provisionen.find((p) => p.ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen)?.provision_betrag || 0;
}
if (bestellung.bedarfsausweis_wohnen) {
ausweisarten.push(Enums.Ausweisart.BedarfsausweisWohnen);
provision += provisionen[Enums.Ausweisart.BedarfsausweisWohnen];
provision += provisionen.find((p) => p.ausweisart === Enums.Ausweisart.BedarfsausweisWohnen)?.provision_betrag || 0;
}
if (bestellung.verbrauchsausweis_gewerbe) {
ausweisarten.push(Enums.Ausweisart.VerbrauchsausweisGewerbe);
provision += provisionen[Enums.Ausweisart.VerbrauchsausweisGewerbe];
provision += provisionen.find((p) => p.ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe)?.provision_betrag || 0;
}
}
---
@@ -210,9 +213,8 @@ for (const bestellung of bestellungen) {
extrahiereAusweisAusFeldMitMehrerenAusweisen(bestellung)
)}
{provisionen}
{partnerCodeErstesMal}
startDate={startdatum}
endDate={enddatum}
startdatum={startdatum}
enddatum={enddatum}
email={benutzer.email}
client:load
/>
@@ -220,15 +222,15 @@ for (const bestellung of bestellungen) {
<div class="fixed bottom-0 left-0 right-0 bg-white p-4 shadow">
<div class="flex justify-between items-center">
<div>
<p id="betrag_gesamt">
Abrechnungsbetrag gesamt: <b>{provision} €</b>
<p>
Abrechnungsbetrag gesamt: <b>{provision.toFixed(2)} €</b>
</p>
</div>
<a
target="_blank"
rel="noreferrer noopener"
class="bg-secondary text-white px-4 py-2 rounded-lg hover:bg-secondary-focus"
href=`/user/abrechnung/pdf.php?month=${moment().subtract(1, "month").get("month")}&year=${moment().subtract(1, "month").get("year")}`
href=`/dashboard/abrechnung/monatlich.pdf?d=${moment().subtract(1, "month").format("YYYY-MM")}`
>PDF für letzten Monat generieren.</a
>
</div>