From 51b9799b56fd7bf98ba1c3bf5cfb8d595b9690f2 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Mon, 17 Jun 2024 11:25:35 +0200 Subject: [PATCH] [#46] PaymentAdjustmentWindow: Persist parameters in ClientParameters --- Elwig/Helpers/ClientParameters.cs | 16 ++++++++++++++++ Elwig/Windows/PaymentAdjustmentWindow.xaml.cs | 13 +++++++++++++ 2 files changed, 29 insertions(+) diff --git a/Elwig/Helpers/ClientParameters.cs b/Elwig/Helpers/ClientParameters.cs index 2101ae4..873c130 100644 --- a/Elwig/Helpers/ClientParameters.cs +++ b/Elwig/Helpers/ClientParameters.cs @@ -1,6 +1,7 @@ using Elwig.Models.Entities; using Microsoft.Data.Sqlite; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Threading.Tasks; @@ -69,6 +70,8 @@ namespace Elwig.Helpers { public int ExportEbicsVersion; public int ExportEbicsAddress; + public (int? AllowanceKg, double? AllowanceBs, int? AllowanceKgPerBs, double? AllowancePercent, int? MinBs) AutoAdjustBs; + public ClientParameters(AppDbContext ctx) : this(ctx.ClientParameters.ToDictionary(e => e.Param, e => e.Value)) { } public ClientParameters(Dictionary parameters) { @@ -138,6 +141,15 @@ namespace Elwig.Helpers { case "LINES": ExportEbicsAddress = 1; break; case "FULL": ExportEbicsAddress = 2; break; } + + var autoAdjust = (parameters.GetValueOrDefault("AUTOADJUST_BUSINESSSHARES") ?? "").Split(';'); + AutoAdjustBs = autoAdjust.Length == 5 ? ( + int.TryParse(autoAdjust[0], out var v1) ? v1 : null, + double.TryParse(autoAdjust[1], out var v2) ? v2 : null, + int.TryParse(autoAdjust[2], out var v3) ? v3 : null, + double.TryParse(autoAdjust[3], out var v4) ? v4 : null, + int.TryParse(autoAdjust[4], out var v5) ? v5 : null + ) : (null, null, null, null, null); } catch { throw new KeyNotFoundException(); } @@ -171,6 +183,9 @@ namespace Elwig.Helpers { case 1: exportEbicsAddress = "LINES"; break; case 2: exportEbicsAddress = "FULL"; break; } + string autoAdjust = $"{AutoAdjustBs.AllowanceKg};{AutoAdjustBs.AllowanceBs?.ToString(CultureInfo.InvariantCulture)};" + + $"{AutoAdjustBs.AllowanceKgPerBs};{AutoAdjustBs.AllowancePercent?.ToString(CultureInfo.InvariantCulture)};" + + $"{AutoAdjustBs.MinBs}"; return [ ("CLIENT_NAME_TOKEN", NameToken), ("CLIENT_NAME_SHORT", NameShort), @@ -199,6 +214,7 @@ namespace Elwig.Helpers { ("TEXT_EMAIL_BODY", TextEmailBody), ("EXPORT_EBICS_VERSION", ExportEbicsVersion.ToString()), ("EXPORT_EBICS_ADDRESS", exportEbicsAddress), + ("AUTOADJUST_BUSINESSSHARES", autoAdjust), ]; } diff --git a/Elwig/Windows/PaymentAdjustmentWindow.xaml.cs b/Elwig/Windows/PaymentAdjustmentWindow.xaml.cs index cda5a44..93068ca 100644 --- a/Elwig/Windows/PaymentAdjustmentWindow.xaml.cs +++ b/Elwig/Windows/PaymentAdjustmentWindow.xaml.cs @@ -23,6 +23,12 @@ namespace Elwig.Windows { SeasonLocked = ctx.Seasons.Find(Year + 1) != null; } Title = $"Auszahlung anpassen - Lese {Year} - Elwig"; + + AllowanceKgInput.Text = $"{App.Client.AutoAdjustBs.AllowanceKg}"; + AllowanceBsInput.Text = $"{App.Client.AutoAdjustBs.AllowanceBs}"; + AllowanceKgPerBsInput.Text = $"{App.Client.AutoAdjustBs.AllowanceKgPerBs}"; + AllowancePercentInput.Text = $"{App.Client.AutoAdjustBs.AllowancePercent}"; + MinBsInput.Text = $"{App.Client.AutoAdjustBs.MinBs}"; } protected override async Task OnRenewContext(AppDbContext ctx) { @@ -86,6 +92,13 @@ namespace Elwig.Windows { double? percent = AllowancePercentInput.Text == "" ? null : double.Parse(AllowancePercentInput.Text); int? minBs = MinBsInput.Text == "" ? null : int.Parse(MinBsInput.Text); + App.Client.AutoAdjustBs.AllowanceKg = kg; + App.Client.AutoAdjustBs.AllowanceBs = bs; + App.Client.AutoAdjustBs.AllowanceKgPerBs = kgPerBs; + App.Client.AutoAdjustBs.AllowancePercent = percent; + App.Client.AutoAdjustBs.MinBs = minBs; + await App.Client.UpdateValues(); + var b = new Billing(Year); await b.AutoAdjustBusinessShares(new DateOnly(Year, 11, 30), kg ?? default, bs ?? default, kgPerBs ?? default, percent / 100.0 ?? default, minBs ?? default); await App.HintContextChange();