Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ services:
container_name: walter_dev_db
restart: unless-stopped
volumes:
- postgres-data:/var/lib/postgresql/data
- ./test_data:/var/lib/postgresql/data
environment:
- POSTRES_DB=walter_dev_full_generic_db
- POSTGRES_USER=postgres
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/feature.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
on:
push:
branches:
- feature/*

jobs:
test:
uses: ./.github/workflows/reusable_test.yaml
build:
uses: ./.github/workflows/reusable_build.yaml
4 changes: 2 additions & 2 deletions .github/workflows/reusable_build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
yarn install
yarn build
- name: Upload svelte artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: svelte-app
path: Deeplex.Saverwalter.WebAPI/wwwroot
Expand All @@ -33,7 +33,7 @@ jobs:
dotnet restore
dotnet publish -c release
- name: Upload dotnet artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: dotnet-app
path: Deeplex.Saverwalter.WebAPI/bin
4 changes: 2 additions & 2 deletions .github/workflows/reusable_deploy_latest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Download artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: svelte-app
path: Deeplex.Saverwalter.WebAPI/wwwroot
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: dotnet-app
path: Deeplex.Saverwalter.WebAPI/bin
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/reusable_deploy_release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Download artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: svelte-app
path: Deeplex.Saverwalter.WebAPI/wwwroot
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: dotnet-app
path: Deeplex.Saverwalter.WebAPI/bin
Expand Down
6 changes: 3 additions & 3 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,10 @@
"ASPNETCORE_ENVIRONMENT": "Development",
"DATABASE_HOST": "walter_dev_db",
"DATABASE_PORT": "5432",
"DATABASE_NAME": "walter_dev_generic_db",
"DATABASE_NAME": "saverdb",
"DATABASE_USER": "postgres",
"DATABASE_PASS": "postgres",
"WALTER_PASSWORD": "postgres",
"DATABASE_PASS": "admin",
"WALTER_PASSWORD": "verysecure",
"S3_PROVIDER": "http://s3:9000/saverwalter"
},
"sourceFileMap": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public void AbrechnungseinheitIsValidForOneWohnung()
{
// Arrange
var adresse = new Adresse("Teststraße", "Testhausnummer", "Testpostleitzahl", "Teststadt");
var wohnung = new Wohnung("Testwohnung", 100, 200, 1) { Adresse = adresse };
var wohnung = new Wohnung("Testwohnung", 100, 200, 100, 1) { Adresse = adresse };
var wohnungen = new List<Wohnung> { wohnung };
var umlage = new Umlage(Umlageschluessel.NachNutzeinheit)
{
Expand All @@ -46,6 +46,7 @@ public void AbrechnungseinheitIsValidForOneWohnung()
var abrechnungseinheit = new Abrechnungseinheit(umlagen, vertrag, zeitraum, notes);

// Assert
abrechnungseinheit.GesamtMiteigentumsanteile.Should().Be(100);
abrechnungseinheit.GesamtWohnflaeche.Should().Be(100);
abrechnungseinheit.GesamtNutzflaeche.Should().Be(200);
abrechnungseinheit.GesamtEinheiten.Should().Be(1);
Expand All @@ -59,10 +60,10 @@ public void AbrechnungseinheitIsValidForManyWohnungen()
{
// Arrange
var adresse = new Adresse("Teststraße", "Testhausnummer", "Testpostleitzahl", "Teststadt");
var wohnung = new Wohnung("Testwohnung1", 100, 200, 1) { Adresse = adresse };
var wohnung = new Wohnung("Testwohnung1", 100, 200, 100, 1) { Adresse = adresse };
var wohnungen = new List<Wohnung> {
wohnung,
new("Testwohnung2", 150, 300, 2) { Adresse = adresse },
new("Testwohnung2", 150, 300, 100, 2) { Adresse = adresse },
};
var umlage = new Umlage(Umlageschluessel.NachNutzeinheit)
{
Expand All @@ -82,6 +83,7 @@ public void AbrechnungseinheitIsValidForManyWohnungen()
var abrechnungseinheit = new Abrechnungseinheit(umlagen, vertrag, zeitraum, notes);

// Assert
abrechnungseinheit.GesamtMiteigentumsanteile.Should().Be(200);
abrechnungseinheit.GesamtWohnflaeche.Should().Be(250);
abrechnungseinheit.GesamtNutzflaeche.Should().Be(500);
abrechnungseinheit.GesamtEinheiten.Should().Be(3);
Expand All @@ -95,14 +97,14 @@ public void AbrechnungseinheitOnlyCaresForUmlagenOfFirstWohnung()
{
// Arrange
var adresse = new Adresse("Teststraße", "Testhausnummer", "Testpostleitzahl", "Teststadt");
var wohnung = new Wohnung("Testwohnung1", 100, 200, 1) { Adresse = adresse };
var wohnung = new Wohnung("Testwohnung1", 100, 200, 100, 1) { Adresse = adresse };
var wohnungen1 = new List<Wohnung>
{
wohnung
};
var wohnungen2 = new List<Wohnung> {
wohnung,
new("Testwohnung2", 150, 300, 2) { Adresse = adresse },
new("Testwohnung2", 150, 300, 100, 2) { Adresse = adresse },
};
var umlage1 = new Umlage(Umlageschluessel.NachNutzeinheit)
{
Expand All @@ -127,7 +129,8 @@ public void AbrechnungseinheitOnlyCaresForUmlagenOfFirstWohnung()
// Act
var abrechnungseinheit = new Abrechnungseinheit(umlagen, vertrag, zeitraum, notes);

// // Assert
// Assert
abrechnungseinheit.GesamtMiteigentumsanteile.Should().Be(100);
abrechnungseinheit.GesamtWohnflaeche.Should().Be(100);
abrechnungseinheit.GesamtNutzflaeche.Should().Be(200);
abrechnungseinheit.GesamtEinheiten.Should().Be(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,11 @@ public class Abrechnungseinheit
public string Bezeichnung { get; }
public double GesamtWohnflaeche { get; }
public double GesamtNutzflaeche { get; }
public double GesamtMiteigentumsanteile { get; }
public int GesamtEinheiten { get; }
public double WFZeitanteil { get; }
public double NFZeitanteil { get; }
public double MEAZeitanteil { get; }
public double NEZeitanteil { get; }
public List<VerbrauchAnteil> VerbrauchAnteile { get; }
public List<PersonenZeitanteil> PersonenZeitanteile { get; }
Expand All @@ -44,11 +46,17 @@ public Abrechnungseinheit(List<Umlage> umlagen, Vertrag vertrag, Zeitraum zeitra
GesamtWohnflaeche = wohnungen.Sum(w => w.Wohnflaeche);
GesamtNutzflaeche = wohnungen.Sum(w => w.Nutzflaeche);
GesamtEinheiten = wohnungen.Sum(w => w.Nutzeinheit);
GesamtMiteigentumsanteile = wohnungen.Sum(w => w.Miteigentumsanteile);

var wohnung = vertrag.Wohnung;
WFZeitanteil = wohnung.Wohnflaeche / GesamtWohnflaeche * zeitraum.Zeitanteil;
NFZeitanteil = wohnung.Nutzflaeche / GesamtNutzflaeche * zeitraum.Zeitanteil;
NEZeitanteil = (double)wohnung.Nutzeinheit / GesamtEinheiten * zeitraum.Zeitanteil;
WFZeitanteil = GesamtWohnflaeche > 0 ?
wohnung.Wohnflaeche / GesamtWohnflaeche * zeitraum.Zeitanteil : 0;
NFZeitanteil = GesamtNutzflaeche > 0 ?
wohnung.Nutzflaeche / GesamtNutzflaeche * zeitraum.Zeitanteil : 0;
NEZeitanteil = GesamtEinheiten > 0 ?
(double)wohnung.Nutzeinheit / GesamtEinheiten * zeitraum.Zeitanteil : 0;
MEAZeitanteil = GesamtMiteigentumsanteile > 0 ?
wohnung.Miteigentumsanteile / GesamtMiteigentumsanteile * zeitraum.Zeitanteil : 0;

foreach (var umlage in umlagen)
{
Expand Down Expand Up @@ -114,6 +122,7 @@ public double GetAnteil(Umlage umlage)
Umlageschluessel.NachNutzeinheit => NEZeitanteil,
Umlageschluessel.NachWohnflaeche => WFZeitanteil,
Umlageschluessel.NachNutzflaeche => NFZeitanteil,
Umlageschluessel.NachMiteigentumsanteil => MEAZeitanteil,
Umlageschluessel.NachPersonenzahl => PersonenZeitanteile.Sum(anteil => anteil.Anteil),
Umlageschluessel.NachVerbrauch => VerbrauchAnteile
.SingleOrDefault(anteil => anteil.Umlage == umlage)?.Anteil?.Sum(a => a.Value) ?? 0,
Expand All @@ -130,6 +139,7 @@ private double GetSum(List<Betriebskostenrechnung> rechnungen, List<Note> notes)
Umlageschluessel.NachNutzeinheit => rechnung.Betrag * NEZeitanteil,
Umlageschluessel.NachWohnflaeche => rechnung.Betrag * WFZeitanteil,
Umlageschluessel.NachNutzflaeche => rechnung.Betrag * NFZeitanteil,
Umlageschluessel.NachMiteigentumsanteil => rechnung.Betrag * MEAZeitanteil,
Umlageschluessel.NachPersonenzahl => rechnung.Betrag * PersZeitanteil,
Umlageschluessel.NachVerbrauch => rechnung.Betrag * GetVerbrauchAnteil(rechnung, notes),
_ => 0
Expand Down Expand Up @@ -174,7 +184,7 @@ public static List<Abrechnungseinheit> GetAbrechnungseinheiten(
// Group up all Wohnungen sharing the same Umlage
var einheiten = vertrag.Wohnung.Umlagen
.GroupBy(umlage =>
new SortedSet<int>(umlage.Wohnungen.Select(gr => gr.WohnungId).ToList()),
[.. umlage.Wohnungen.Select(gr => gr.WohnungId).ToList()],
new SortedSetIntEqualityComparer())
.ToList();
// Then create Rechnungsgruppen for every single one of those groups with respective information to calculate the distribution
Expand All @@ -190,9 +200,7 @@ private static List<Heizkostenberechnung> CalculateHeizkosten(
Zeitraum zeitraum,
List<Note> notes)
{
return rechnungen
.Select(rechnung => new Heizkostenberechnung(rechnung, wohnung, verbrauchAnteile, zeitraum, notes))
.ToList();
return [.. rechnungen.Select(rechnung => new Heizkostenberechnung(rechnung, wohnung, verbrauchAnteile, zeitraum, notes))];
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ public Betriebskostenabrechnung(
if (!vertrag.Mieter.Any(mieter => mieter.Adresse != null))
{
Notes.Add(new Note(
$"Die Adresse mindestens eines Mieters ist notwendig für die Betriebskostenabrechnung.",
Severity.Error
$"Es ist für keinen der Mieter eine Adresse hinterlegt. Entsprechend kann dem Briefkopf der Druckversion keine Adresse zugefügt werden.",
Severity.Warning
));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,9 @@ public Heizkostenberechnung(
NFZeitanteil = wohnung.Nutzflaeche / GesamtNutzflaeche * zeitraum.Zeitanteil;

var q = dieseAnteile.Where(w => w.Zaehler.Typ == Zaehlertyp.Gas).Sum(verbrauch => verbrauch.Delta);
HeizkostenVerbrauchAnteil = q / checkQ;
HeizkostenVerbrauchAnteil = checkQ > 0 ? q / checkQ : 0;
var v = dieseAnteile.Where(w => w.Zaehler.Typ == Zaehlertyp.Warmwasser).Sum(verbrauch => verbrauch.Delta);
WarmwasserVerbrauchAnteil = v / V;
WarmwasserVerbrauchAnteil = V > 0 ? v / V : 0;

WaermeAnteilNF = PauschalBetrag * (1 - Para9_2) * (1 - Para7) * NFZeitanteil;
WaermeAnteilVerb = PauschalBetrag * (1 - Para9_2) * (1 - Para7) * HeizkostenVerbrauchAnteil;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public void ErhaltungsaufwendungWohnungWithOtherWohnung()
Wohnung = vertrag.Wohnung
};

var wohnung = new Wohnung("Test", 100, 100, 1);
var wohnung = new Wohnung("Test", 100, 100, 100, 1);
var entity4 = new Erhaltungsaufwendung(2000, "Test4", new DateOnly(2021, 1, 1))
{
Wohnung = wohnung
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ private static List<Wohnung> FillWohnungen(SaverwalterContext ctx, List<Adresse>
{
var bezeichnung = $"Wohnung Nr. {j}";
var flaeche = 35 + (j * 35);
wohnungen.Add(new Wohnung(bezeichnung, i * 2, i * 2, 1)
wohnungen.Add(new Wohnung(bezeichnung, i * 2, i * 2, i * 2, 1)
{
Adresse = adresse,
Besitzer = besitzer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -233,12 +233,13 @@ private static List<Wohnung> FillWohnungen(
{
var bezeichnung = $"Wohnung Nr. {j}";
var flaeche = 35 + (j * 35);
wohnungen.Add(new Wohnung(bezeichnung, i * 2, i * 2, 1)
wohnungen.Add(new Wohnung(bezeichnung, i * 2, i * 2, i * 2, 1)
{
Adresse = adresse,
Besitzer = besitzer,
Wohnflaeche = flaeche,
Nutzflaeche = flaeche,
Miteigentumsanteile = flaeche,
Nutzeinheit = 1,
Verwalter = {
new Verwalter(VerwalterRolle.Keine) { UserAccount = ctx.UserAccounts.First() }
Expand Down
2 changes: 1 addition & 1 deletion Deeplex.Saverwalter.Model.Tests/TestUtils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public static Vertrag FillVertragWithSomeData(SaverwalterContext ctx, double gru
ctx.Kontakte.Add(vermieter);
ctx.SaveChanges();

var wohnung = new Wohnung("TestWohnung", 100, 100, 1)
var wohnung = new Wohnung("TestWohnung", 100, 100, 100, 1)
{
Adresse = new Adresse("TestStraße", "TestHausnummer", "TestPLZ", "TestOrt"),
Besitzer = vermieter
Expand Down
Loading
Loading