Compare commits
	
		
			10 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e9722c790c | |||
| af98c32026 | |||
| 7300b30cf5 | |||
| 428cd6ddc2 | |||
| 2de8af878b | |||
| 34d95eab9d | |||
| 548aeb2ce9 | |||
| 7edd888aa2 | |||
| a0d4f19f30 | |||
| 67ba342c28 | 
							
								
								
									
										47
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -2,6 +2,53 @@
 | 
			
		||||
Changelog
 | 
			
		||||
=========
 | 
			
		||||
 | 
			
		||||
[v1.0.1.5][v1.0.1.5] (2025-10-29) {#v1.0.1.5}
 | 
			
		||||
---------------------------------------------
 | 
			
		||||
 | 
			
		||||
### Behobene Fehler {#v1.0.1.5-bugfixes}
 | 
			
		||||
 | 
			
		||||
* Im Rundschreiben-Fenster (`MailWindow`) kam es zu einem Absturz, wenn man das Fenster über den "Anlieferungsbestätigung"-Knopf im Leseabschluss-Abschnitt geöffnet hat. (af98c32026)
 | 
			
		||||
 | 
			
		||||
[v1.0.1.5]: https://git.necronda.net/winzer/elwig/releases/tag/v1.0.1.5
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[v1.0.1.4][v1.0.1.4] (2025-10-28) {#v1.0.1.4}
 | 
			
		||||
---------------------------------------------
 | 
			
		||||
 | 
			
		||||
### Behobene Fehler {#v1.0.1.4-bugfixes}
 | 
			
		||||
 | 
			
		||||
* Im Rundschreiben-Fenster (`MailWindow`) kam es zu einem Absturz, wenn man die Zustelloptionen "Post zusenden an Mitglieder, die keine E-Mail erhalten würden" und "E-Mail zusenden an niemanden" kombiniert hat. (2de8af878b)
 | 
			
		||||
 | 
			
		||||
### Sonstiges {#v1.0.1.4-misc}
 | 
			
		||||
 | 
			
		||||
* Im Auszahlungsvariante-Fenster (`ChartWindow`) gibt es keine Fehlermeldung mehr wenn nicht für alle Sorten ein Preis definiert ist, nur noch eine Warnung. (428cd6ddc2)
 | 
			
		||||
 | 
			
		||||
[v1.0.1.4]: https://git.necronda.net/winzer/elwig/releases/tag/v1.0.1.4
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[v1.0.1.3][v1.0.1.3] (2025-10-13) {#v1.0.1.3}
 | 
			
		||||
---------------------------------------------
 | 
			
		||||
 | 
			
		||||
### Neue Funktionen {#v1.0.1.3-features}
 | 
			
		||||
 | 
			
		||||
* In der Liste des Lieferungen-Fenster (`DeliveryAdminWindow`) werden
 | 
			
		||||
	* statt ausschließlich der Sorte auch Attribut und Bewirtschaftungsart angezeigt. (a0d4f19f30)
 | 
			
		||||
	* Kommentare der Lieferungen (und Teillieferungen) angezeigt. (548aeb2ce9)
 | 
			
		||||
 | 
			
		||||
### Sonstiges {#v1.0.1.3-misc}
 | 
			
		||||
 | 
			
		||||
* Verzögerung der Überprüfung auf automatische Updates auf einige Sekunden verlängert. (67ba342c28)
 | 
			
		||||
* Verbesserung der Ladezeiten im Anmeldungen-Fenster (`DeliveryAncmtAdminWindow`). (7edd888aa2)
 | 
			
		||||
 | 
			
		||||
[v1.0.1.3]: https://git.necronda.net/winzer/elwig/releases/tag/v1.0.1.3
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[v1.0.1.2][v1.0.1.2] (2025-09-25) {#v1.0.1.2}
 | 
			
		||||
---------------------------------------------
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -128,7 +128,7 @@ namespace Elwig {
 | 
			
		||||
            if (Config.UpdateAuto && Config.UpdateUrl != null) {
 | 
			
		||||
                if (Utils.HasInternetConnectivity()) {
 | 
			
		||||
                    Utils.RunBackground("Auto Updater", async () => {
 | 
			
		||||
                        await Task.Delay(500);
 | 
			
		||||
                        await Task.Delay(1000);
 | 
			
		||||
                        await CheckForUpdates();
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
@@ -234,7 +234,7 @@ namespace Elwig {
 | 
			
		||||
            if (!evt.IsAvailable) return;
 | 
			
		||||
            if (Utils.HasInternetConnectivity()) {
 | 
			
		||||
                Utils.RunBackground("Auto Updater", async () => {
 | 
			
		||||
                    await Task.Delay(500);
 | 
			
		||||
                    await Task.Delay(2000);
 | 
			
		||||
                    await CheckForUpdates();
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
    <UseWPF>true</UseWPF>
 | 
			
		||||
    <PreserveCompilationContext>true</PreserveCompilationContext>
 | 
			
		||||
    <ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
 | 
			
		||||
    <Version>1.0.1.2</Version>
 | 
			
		||||
    <Version>1.0.1.5</Version>
 | 
			
		||||
    <SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
 | 
			
		||||
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
 | 
			
		||||
    <ApplicationManifest>app.manifest</ApplicationManifest>
 | 
			
		||||
 
 | 
			
		||||
@@ -20,13 +20,19 @@ namespace Elwig.Helpers.Billing {
 | 
			
		||||
            Data = PaymentBillingData.FromJson(PaymentVariant.Data, Utils.GetVaributes(ctx, Year, onlyDelivered: false));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async Task Calculate(bool? honorGebunden = null, bool? allowAttrsIntoLower = null, bool? avoidUnderDeliveries = null) {
 | 
			
		||||
        public async Task Calculate(bool strictPrices = true, bool? honorGebunden = null, bool? allowAttrsIntoLower = null, bool? avoidUnderDeliveries = null) {
 | 
			
		||||
            using var cnx = await AppDbContext.ConnectAsync();
 | 
			
		||||
            using var tx = await cnx.BeginTransactionAsync();
 | 
			
		||||
            await CalculateBuckets(honorGebunden, allowAttrsIntoLower, avoidUnderDeliveries, cnx);
 | 
			
		||||
            await DeleteInDb(cnx);
 | 
			
		||||
            await SetCalcTime(cnx);
 | 
			
		||||
            await CalculatePrices(cnx);
 | 
			
		||||
            KeyNotFoundException? exception = null;
 | 
			
		||||
            try {
 | 
			
		||||
                await CalculatePrices(cnx, strictPrices);
 | 
			
		||||
            } catch (KeyNotFoundException e) {
 | 
			
		||||
                if (strictPrices) throw;
 | 
			
		||||
                exception = e;
 | 
			
		||||
            }
 | 
			
		||||
            if (Data.ConsiderDelieryModifiers) {
 | 
			
		||||
                await CalculateDeliveryModifiers(cnx);
 | 
			
		||||
            }
 | 
			
		||||
@@ -34,6 +40,8 @@ namespace Elwig.Helpers.Billing {
 | 
			
		||||
                await CalculateMemberModifiers(cnx);
 | 
			
		||||
            }
 | 
			
		||||
            await tx.CommitAsync();
 | 
			
		||||
            if (exception != null)
 | 
			
		||||
                throw exception;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async Task Commit() {
 | 
			
		||||
@@ -142,7 +150,8 @@ namespace Elwig.Helpers.Billing {
 | 
			
		||||
                """);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected async Task CalculatePrices(SqliteConnection cnx) {
 | 
			
		||||
        protected async Task CalculatePrices(SqliteConnection cnx, bool strict = true) {
 | 
			
		||||
            var invalid = new HashSet<string>();
 | 
			
		||||
            var parts = new List<(int Year, int DId, int DPNr, int BktNr, string SortId, string? AttrId, string? CultId, string Discr, int Value, double Oe, double Kmw, string QualId, bool AttrAreaCom)>();
 | 
			
		||||
            using (var cmd = cnx.CreateCommand()) {
 | 
			
		||||
                cmd.CommandText = $"""
 | 
			
		||||
@@ -172,15 +181,25 @@ namespace Elwig.Helpers.Billing {
 | 
			
		||||
                var payAttrId = (part.Discr is "" or "_") ? null : part.Discr;
 | 
			
		||||
                var attrId = part.AttrAreaCom ? payAttrId : part.AttrId;
 | 
			
		||||
                var geb = !ungeb && (payAttrId == attrId || !part.AttrAreaCom);
 | 
			
		||||
                var price = Data.CalculatePrice(part.SortId, attrId, part.CultId, part.QualId, geb, part.Oe, part.Kmw);
 | 
			
		||||
                decimal price = 0;
 | 
			
		||||
                try {
 | 
			
		||||
                    price = Data.CalculatePrice(part.SortId, attrId, part.CultId, part.QualId, geb, part.Oe, part.Kmw);
 | 
			
		||||
                } catch (KeyNotFoundException e) {
 | 
			
		||||
                    invalid.Add(e.Message.Split('\'')[1]);
 | 
			
		||||
                }
 | 
			
		||||
                var priceL = PaymentVariant.Season.DecToDb(price);
 | 
			
		||||
                inserts.Add((part.Year, part.DId, part.DPNr, part.BktNr, priceL, priceL * part.Value));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var msg = invalid.Count == 0 ? null : "Für folgende Sorten wurde noch keine Preiskurve festgelegt: " + string.Join(", ", invalid);
 | 
			
		||||
            if (msg != null && strict)
 | 
			
		||||
                throw new KeyNotFoundException(msg);
 | 
			
		||||
            await AppDbContext.ExecuteBatch(cnx, $"""
 | 
			
		||||
                INSERT INTO payment_delivery_part_bucket (year, did, dpnr, bktnr, avnr, price, amount)
 | 
			
		||||
                VALUES {string.Join(",\n       ", inserts.Select(i => $"({i.Year}, {i.DId}, {i.DPNr}, {i.BktNr}, {AvNr}, {i.Price}, {i.Amount})"))};
 | 
			
		||||
                """);
 | 
			
		||||
            if (msg != null)
 | 
			
		||||
                throw new KeyNotFoundException(msg);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected async Task CalculateDeliveryModifiers(SqliteConnection cnx) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
using Elwig.Helpers;
 | 
			
		||||
using Elwig.Helpers.Billing;
 | 
			
		||||
using Microsoft.EntityFrameworkCore;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
@@ -62,6 +63,11 @@ namespace Elwig.Models.Entities {
 | 
			
		||||
        [Column("comment")]
 | 
			
		||||
        public string? Comment { get; set; }
 | 
			
		||||
 | 
			
		||||
        [NotMapped]
 | 
			
		||||
        public string[] Comments => [.. Parts.Select(p => p.Comment).Prepend(Comment).Where(c => c != null).Cast<string>()];
 | 
			
		||||
        [NotMapped]
 | 
			
		||||
        public string CommentsString => string.Join(" / ", Comments);
 | 
			
		||||
 | 
			
		||||
        [Column("ctime"), DatabaseGenerated(DatabaseGeneratedOption.Computed)]
 | 
			
		||||
        public long CTime { get; set; }
 | 
			
		||||
        [NotMapped]
 | 
			
		||||
@@ -108,16 +114,16 @@ namespace Elwig.Models.Entities {
 | 
			
		||||
        public int Weight => Parts.Select(p => p.Weight).Sum();
 | 
			
		||||
        public int FilteredWeight => FilteredParts.Select(p => p.Weight).Sum();
 | 
			
		||||
 | 
			
		||||
        public IEnumerable<string> SortIds => Parts
 | 
			
		||||
            .GroupBy(p => p.SortId)
 | 
			
		||||
        public IEnumerable<RawVaribute> Vaributes => Parts
 | 
			
		||||
            .GroupBy(p => (p.SortId, p.AttrId, p.CultId))
 | 
			
		||||
            .OrderByDescending(g => g.Select(p => p.Weight).Sum())
 | 
			
		||||
            .Select(g => g.Key);
 | 
			
		||||
        public IEnumerable<string> FilteredSortIds => FilteredParts
 | 
			
		||||
            .GroupBy(p => p.SortId)
 | 
			
		||||
            .Select(g => new RawVaribute(g.Key.SortId, g.Key.AttrId, g.Key.CultId));
 | 
			
		||||
        public IEnumerable<RawVaribute> FilteredVaributes => FilteredParts
 | 
			
		||||
            .GroupBy(p => (p.SortId, p.AttrId, p.CultId))
 | 
			
		||||
            .OrderByDescending(g => g.Select(p => p.Weight).Sum())
 | 
			
		||||
            .Select(g => g.Key);
 | 
			
		||||
        public string SortIdString => string.Join(", ", SortIds);
 | 
			
		||||
        public string FilteredSortIdString => string.Join(", ", FilteredSortIds);
 | 
			
		||||
            .Select(g => new RawVaribute(g.Key.SortId, g.Key.AttrId, g.Key.CultId));
 | 
			
		||||
        public string VaributeString => string.Join(", ", Vaributes);
 | 
			
		||||
        public string FilteredVaributeString => string.Join(", ", FilteredVaributes);
 | 
			
		||||
 | 
			
		||||
        public Brush? Color => Parts.Select(p => p.Variety.Color).Distinct().SingleOrDefault();
 | 
			
		||||
        public Brush? FilteredColor => FilteredParts.Select(p => p.Variety.Color).Distinct().SingleOrDefault();
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,9 @@ namespace Elwig.Models.Entities {
 | 
			
		||||
        [Column("max_weight")]
 | 
			
		||||
        public int? MaxWeight { get; set; }
 | 
			
		||||
        [NotMapped]
 | 
			
		||||
        public int AnnouncedWeight => Announcements.Sum(a => a.Weight);
 | 
			
		||||
        public int AnnouncedWeight => AnnouncedWeightOverride ?? Announcements.Sum(a => a.Weight);
 | 
			
		||||
        [NotMapped]
 | 
			
		||||
        public int? AnnouncedWeightOverride { get; set; }
 | 
			
		||||
        [NotMapped]
 | 
			
		||||
        public double? Percent => (double)AnnouncedWeight / MaxWeight * 100;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -664,8 +664,10 @@ namespace Elwig.Windows {
 | 
			
		||||
            try {
 | 
			
		||||
                await Task.Run(async () => {
 | 
			
		||||
                    var b = new BillingVariant(PaymentVar.Year, PaymentVar.AvNr);
 | 
			
		||||
                    await b.Calculate();
 | 
			
		||||
                    await b.Calculate(false);
 | 
			
		||||
                });
 | 
			
		||||
            } catch (KeyNotFoundException exc) {
 | 
			
		||||
                MessageBox.Show(exc.Message, "Noch nicht alle Preise festgelegt", MessageBoxButton.OK, MessageBoxImage.Information);
 | 
			
		||||
            } catch (Exception exc) {
 | 
			
		||||
                MessageBox.Show(exc.Message, "Berechnungsfehler", MessageBoxButton.OK, MessageBoxImage.Error);
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -265,13 +265,18 @@
 | 
			
		||||
                            </Style>
 | 
			
		||||
                        </DataGridTextColumn.CellStyle>
 | 
			
		||||
                    </DataGridTextColumn>
 | 
			
		||||
                    <DataGridTextColumn Header="Sorte" Binding="{Binding FilteredSortIdString}" Width="50">
 | 
			
		||||
                    <DataGridTextColumn Header="Sorte" Binding="{Binding FilteredVaributeString}" Width="60">
 | 
			
		||||
                        <DataGridTextColumn.CellStyle>
 | 
			
		||||
                            <Style>
 | 
			
		||||
                                <Setter Property="TextBlock.Foreground" Value="{Binding FilteredColor}"/>
 | 
			
		||||
                                <Setter Property="TextBlock.TextAlignment" Value="Center"/>
 | 
			
		||||
                            </Style>
 | 
			
		||||
                        </DataGridTextColumn.CellStyle>
 | 
			
		||||
                        <DataGridTextColumn.ElementStyle>
 | 
			
		||||
                            <Style TargetType="TextBlock">
 | 
			
		||||
                                <Setter Property="TextTrimming" Value="CharacterEllipsis"/>
 | 
			
		||||
                            </Style>
 | 
			
		||||
                        </DataGridTextColumn.ElementStyle>
 | 
			
		||||
                    </DataGridTextColumn>
 | 
			
		||||
                    <DataGridTextColumn Header="Menge" Binding="{Binding FilteredWeight, StringFormat='{}{0:N0} kg '}" Width="75">
 | 
			
		||||
                        <DataGridTextColumn.CellStyle>
 | 
			
		||||
@@ -290,6 +295,7 @@
 | 
			
		||||
                    <DataGridTextColumn Header="LsNr." Binding="{Binding LsNr}" Width="120"/>
 | 
			
		||||
                    <DataGridTextColumn Header="Mitglied" Binding="{Binding Member.AdministrativeName}" Width="180"/>
 | 
			
		||||
                    <DataGridTextColumn Header="Zu-/Abschläge" Binding="{Binding FilteredModifiersString}" Width="150"/>
 | 
			
		||||
                    <DataGridTextColumn Header="Kommentar" Binding="{Binding CommentsString}" Width="150"/>
 | 
			
		||||
                </DataGrid.Columns>
 | 
			
		||||
            </DataGrid>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -83,14 +83,19 @@ namespace Elwig.Windows {
 | 
			
		||||
 | 
			
		||||
        private async Task RefreshDeliveryScheduleList() {
 | 
			
		||||
            using var ctx = new AppDbContext();
 | 
			
		||||
            var deliverySchedules = await ctx.DeliverySchedules
 | 
			
		||||
            var list = await ctx.DeliverySchedules
 | 
			
		||||
                .Where(s => s.Year == ViewModel.FilterSeason)
 | 
			
		||||
                .Include(s => s.Branch)
 | 
			
		||||
                .Include(s => s.Announcements)
 | 
			
		||||
                .OrderBy(s => s.DateString)
 | 
			
		||||
                .ThenBy(s => s.Branch.Name)
 | 
			
		||||
                .ThenBy(s => s.Description)
 | 
			
		||||
                .Select(s => new {
 | 
			
		||||
                    Schedule = s,
 | 
			
		||||
                    AnnouncedWeight = s.Announcements.Sum(a => a.Weight)
 | 
			
		||||
                })
 | 
			
		||||
                .ToListAsync();
 | 
			
		||||
            list.ForEach(v => v.Schedule.AnnouncedWeightOverride = v.AnnouncedWeight);
 | 
			
		||||
            var deliverySchedules = list.Select(v => v.Schedule).ToList();
 | 
			
		||||
            ControlUtils.RenewItemsSource(DeliveryScheduleList, deliverySchedules
 | 
			
		||||
                .Where(s => !ViewModel.FilterOnlyUpcoming || s.DateString.CompareTo(Utils.Today.ToString("yyyy-MM-dd")) >= 0)
 | 
			
		||||
                .ToList(), DeliveryScheduleList_SelectionChanged, ViewModel.FilterFromAllSchedules ? ControlUtils.RenewSourceDefault.None : ControlUtils.RenewSourceDefault.First);
 | 
			
		||||
 
 | 
			
		||||
@@ -738,7 +738,7 @@ namespace Elwig.Windows {
 | 
			
		||||
                PostalNoEmailInput.IsChecked == true ? 1 : 0;
 | 
			
		||||
            var emailMode = EmailAllInput.IsChecked == true ? 2 : EmailWishInput.IsChecked == true ? 1 : 0;
 | 
			
		||||
 | 
			
		||||
            double printNum = printMode == 3 ? PostalAllCount : printMode == 2 ? PostalWishCount : printMode == 2 ? PostalNoEmailCount : 0;
 | 
			
		||||
            double printNum = printMode == 3 ? PostalAllCount : printMode == 2 ? PostalWishCount : printMode == 1 ? PostalNoEmailCount : 0;
 | 
			
		||||
            double emailNum = emailMode == 2 ? EmailAllCount : emailMode == 1 ? EmailWishCount : 0;
 | 
			
		||||
            double totalNum = printNum + emailNum;
 | 
			
		||||
 | 
			
		||||
@@ -954,7 +954,7 @@ namespace Elwig.Windows {
 | 
			
		||||
            AvaiableDocumentsList.SelectedIndex = 1;
 | 
			
		||||
            if (AvaiableDocumentsList.SelectedItem is not string s || SelectedDocs.Any(d => d.Type == DocType.DeliveryConfirmation))
 | 
			
		||||
                return;
 | 
			
		||||
            SelectedDocs.Add(new(DocType.DeliveryConfirmation, s, (Year, DocumentNonDeliverersInput.IsChecked == true)));
 | 
			
		||||
            SelectedDocs.Add(new(DocType.DeliveryConfirmation, s, Year));
 | 
			
		||||
            SelectedDocumentsList.SelectedIndex = SelectedDocs.Count - 1;
 | 
			
		||||
            RecipientsDeliveryMembersInput.IsChecked = true;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ About
 | 
			
		||||
**Product:** Elwig  
 | 
			
		||||
**Description:** Electronic Management for Vintners' Cooperatives  
 | 
			
		||||
**Type:** ERP system  
 | 
			
		||||
**Version:** 1.0.1.2 ([Changelog](./CHANGELOG.md))  
 | 
			
		||||
**Version:** 1.0.1.5 ([Changelog](./CHANGELOG.md))  
 | 
			
		||||
**License:** [GNU General Public License 3.0 (GPLv3)](./LICENSE)  
 | 
			
		||||
**Website:** https://elwig.at/  
 | 
			
		||||
**Source code:** https://git.necronda.net/winzer/elwig  
 | 
			
		||||
@@ -33,7 +33,7 @@ Packaging: [WiX Toolset](https://www.firegiant.com/wixtoolset/)
 | 
			
		||||
**Produkt:** Elwig  
 | 
			
		||||
**Beschreibung:** Elektronische Winzergenossenschaftsverwaltung  
 | 
			
		||||
**Typ:** Warenwirtschaftssystem (ERP-System)  
 | 
			
		||||
**Version:** 1.0.1.2 ([Änderungsprotokoll](./CHANGELOG.md))  
 | 
			
		||||
**Version:** 1.0.1.5 ([Änderungsprotokoll](./CHANGELOG.md))  
 | 
			
		||||
**Lizenz:** [GNU General Public License 3.0 (GPLv3)](./LICENSE)  
 | 
			
		||||
**Website:** https://elwig.at/  
 | 
			
		||||
**Quellcode:** https://git.necronda.net/winzer/elwig  
 | 
			
		||||
 
 | 
			
		||||
@@ -188,7 +188,7 @@ namespace Tests.UnitTests.HelperTests {
 | 
			
		||||
                Assert.That(payment["GV"],  Is.EqualTo(10_000));
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            await b.Calculate(false, false, false);
 | 
			
		||||
            await b.Calculate(true, false, false, false);
 | 
			
		||||
            var prices = await GetMemberDeliveryPrices(year, mgnr);
 | 
			
		||||
            Assert.Multiple(() => {
 | 
			
		||||
                Assert.That(prices, Has.Count.EqualTo(7));
 | 
			
		||||
@@ -234,7 +234,7 @@ namespace Tests.UnitTests.HelperTests {
 | 
			
		||||
                Assert.That(payment["GV"],  Is.EqualTo(8_000));
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            await b.Calculate(true, false, false);
 | 
			
		||||
            await b.Calculate(true, true, false, false);
 | 
			
		||||
            var prices = await GetMemberDeliveryPrices(year, mgnr);
 | 
			
		||||
            Assert.Multiple(() => {
 | 
			
		||||
                Assert.That(prices, Has.Count.EqualTo(6));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user