From 336aef5c70e99369a0637c7e808ccd4805a2a51d Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Tue, 20 May 2025 13:02:05 +0200 Subject: [PATCH] CreditNoteDeliveryData: Include WeighingModifier only if delivery modifiers are considered --- Elwig/Models/Dtos/CreditNoteDeliveryData.cs | 12 ++++++------ Elwig/Services/MemberService.cs | 2 +- Elwig/Windows/MailWindow.xaml.cs | 2 +- Tests/DocumentTests/CreditNoteTest.cs | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Elwig/Models/Dtos/CreditNoteDeliveryData.cs b/Elwig/Models/Dtos/CreditNoteDeliveryData.cs index 1023c07..eabff29 100644 --- a/Elwig/Models/Dtos/CreditNoteDeliveryData.cs +++ b/Elwig/Models/Dtos/CreditNoteDeliveryData.cs @@ -27,14 +27,14 @@ namespace Elwig.Models.Dtos { MgNr = mgnr; } - public static async Task> ForPaymentVariant(DbSet table, DbSet seasons, int year, int avnr) { - var variant = (await seasons.FindAsync(year))?.PaymentVariants.Where(v => v.AvNr == avnr).SingleOrDefault(); + public static async Task> ForPaymentVariant(DbSet table, DbSet paymentVariants, int year, int avnr) { + var variant = await paymentVariants.FindAsync(year, avnr); BillingData? varData = null; try { varData = variant != null ? BillingData.FromJson(variant.Data) : null; } catch { } return (await FromDbSet(table, year, avnr)) .GroupBy( r => new { r.Year, r.AvNr, r.MgNr, r.TgNr, r.DId, r.DPNr }, - (k, g) => new CreditNoteDeliveryRow(g, seasons, varData?.NetWeightModifier ?? 0.0, varData?.GrossWeightModifier ?? 0.0)) + (k, g) => new CreditNoteDeliveryRow(g, variant, varData)) .GroupBy( r => new { r.Year, r.AvNr, r.MgNr, r.TgNr }, (k, g) => new CreditNoteDeliveryData(g, k.Year, k.TgNr, mgnr: k.MgNr)) @@ -86,13 +86,13 @@ namespace Elwig.Models.Dtos { public decimal? Amount; public double WeighingModifier; - public CreditNoteDeliveryRow(IEnumerable rows, DbSet seasons, double netWeightModifier, double grossWeightModifier) { + public CreditNoteDeliveryRow(IEnumerable rows, PaymentVar paymentVariant, BillingData? varData) { var f = rows.First(); Year = f.Year; TgNr = f.TgNr; AvNr = f.AvNr; MgNr = f.MgNr; - var season = seasons.Find(Year); + var season = paymentVariant.Season; LsNr = f.LsNr; DPNr = f.DPNr; @@ -115,7 +115,7 @@ namespace Elwig.Models.Dtos { b.Price != null ? season?.DecFromDb((long)b.Price) : null, b.Amount != null ? season?.DecFromDb((long)b.Amount) : null)) .ToArray(); - WeighingModifier = f.NetWeight ? netWeightModifier : grossWeightModifier; + WeighingModifier = (varData == null || !varData.ConsiderDelieryModifiers) ? 0 : f.NetWeight ? varData.NetWeightModifier : varData.GrossWeightModifier; Amount = f.TotalAmount != null ? season?.DecFromDb((long)f.TotalAmount) : null; var netAmount = f.NetAmount != null ? season?.DecFromDb((long)f.NetAmount) : null; var amt = netAmount * (decimal)(1.0 + WeighingModifier); diff --git a/Elwig/Services/MemberService.cs b/Elwig/Services/MemberService.cs index d3a9b32..ad0a643 100644 --- a/Elwig/Services/MemberService.cs +++ b/Elwig/Services/MemberService.cs @@ -401,7 +401,7 @@ namespace Elwig.Services { try { using var ctx = new AppDbContext(); var v = (await ctx.PaymentVariants.FindAsync(year, avnr))!; - var data = await CreditNoteDeliveryData.ForPaymentVariant(ctx.CreditNoteDeliveryRows, ctx.Seasons, year, avnr); + var data = await CreditNoteDeliveryData.ForPaymentVariant(ctx.CreditNoteDeliveryRows, ctx.PaymentVariants, year, avnr); var p = (await ctx.MemberPayments.FindAsync(year, avnr, m.MgNr))!; var b = BillingData.FromJson((await ctx.PaymentVariants.FindAsync(year, avnr))!.Data); diff --git a/Elwig/Windows/MailWindow.xaml.cs b/Elwig/Windows/MailWindow.xaml.cs index 05ed30c..14787d0 100644 --- a/Elwig/Windows/MailWindow.xaml.cs +++ b/Elwig/Windows/MailWindow.xaml.cs @@ -671,7 +671,7 @@ namespace Elwig.Windows { var avnr = details.Item2; try { cnData[(year, avnr)] = ( - await CreditNoteDeliveryData.ForPaymentVariant(ctx.CreditNoteDeliveryRows, ctx.Seasons, year, avnr), + await CreditNoteDeliveryData.ForPaymentVariant(ctx.CreditNoteDeliveryRows, ctx.PaymentVariants, year, avnr), await ctx.MemberPayments.Where(p => p.Year == year && p.AvNr == avnr).ToDictionaryAsync(c => c.MgNr), BillingData.FromJson((await ctx.PaymentVariants.FindAsync(year, avnr))!.Data) ); diff --git a/Tests/DocumentTests/CreditNoteTest.cs b/Tests/DocumentTests/CreditNoteTest.cs index 265d312..7577508 100644 --- a/Tests/DocumentTests/CreditNoteTest.cs +++ b/Tests/DocumentTests/CreditNoteTest.cs @@ -12,7 +12,7 @@ namespace Tests.DocumentTests { using var ctx = new AppDbContext(); var m = await ctx.Members.FindAsync(101); var p = await ctx.MemberPayments.Where(p => p.Year == 2020 && p.AvNr == 1).SingleAsync(); - var data = await CreditNoteDeliveryData.ForPaymentVariant(ctx.CreditNoteDeliveryRows, ctx.Seasons, 2020, 1); + var data = await CreditNoteDeliveryData.ForPaymentVariant(ctx.CreditNoteDeliveryRows, ctx.PaymentVariants, 2020, 1); using var doc = new CreditNote(ctx, p, data[m!.MgNr], false, false, false, false, ctx.GetMemberUnderDelivery(2020, m!.MgNr).GetAwaiter().GetResult()); var text = await Utils.GeneratePdfText(doc);