diff --git a/Elwig/App.xaml.cs b/Elwig/App.xaml.cs index 8b446a3..98f916a 100644 --- a/Elwig/App.xaml.cs +++ b/Elwig/App.xaml.cs @@ -115,6 +115,16 @@ namespace Elwig { BranchNum = branches.Count; } + if (Config.WeighingMode == null) { + if (App.Client.IsMatzen || App.Client.IsWolkersdorf) { + Config.WeighingMode = WeighingMode.Net; + } else if (App.Client.IsHaugsdorf || App.Client.IsSitzendorf) { + Config.WeighingMode = WeighingMode.Box; + } else if (App.Client.IsBaden || App.Client.IsGrInzersdorf) { + Config.WeighingMode = WeighingMode.Gross; + } + } + Utils.RunBackground("Temp File Cleanup", () => { Utils.CleanupTempFiles(); return Task.CompletedTask; diff --git a/Elwig/Helpers/ClientParameters.cs b/Elwig/Helpers/ClientParameters.cs index 57371c8..071ddbe 100644 --- a/Elwig/Helpers/ClientParameters.cs +++ b/Elwig/Helpers/ClientParameters.cs @@ -19,14 +19,6 @@ namespace Elwig.Helpers { public bool IsSitzendorf => IsWinzerkeller && App.ZwstId == "S"; public bool IsGrInzersdorf => IsWeinland; - public bool HasNetWeighing(string? zwstId) => IsMatzen || (IsWinzerkeller && zwstId == "W"); - public bool HasNetWeighing(Branch? b) => HasNetWeighing(b?.ZwstId); - public bool HasNetWeighing() => HasNetWeighing(App.ZwstId); - - public bool HasBoxWeighing(string? zwstId) => IsWinzerkeller && (zwstId != "W"); - public bool HasBoxWeighing(Branch? b) => HasBoxWeighing(b?.ZwstId); - public bool HasBoxWeighing() => HasBoxWeighing(App.ZwstId); - public string NameToken; public string NameShort; public string Name; diff --git a/Elwig/Helpers/Config.cs b/Elwig/Helpers/Config.cs index 1c823c4..1f51671 100644 --- a/Elwig/Helpers/Config.cs +++ b/Elwig/Helpers/Config.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -5,6 +6,8 @@ using Microsoft.Extensions.Configuration; namespace Elwig.Helpers { + public enum WeighingMode { Gross, Net, Box } + public record struct ScaleConfig { public string Id; public string? Type; @@ -41,6 +44,7 @@ namespace Elwig.Helpers { public string DatabaseFile = App.DataPath + "database.sqlite3"; public string? DatabaseLog = null; public string? Branch = null; + public WeighingMode? WeighingMode; public string? UpdateUrl = null; public bool UpdateAuto = false; public string? SyncUrl = null; @@ -74,6 +78,8 @@ namespace Elwig.Helpers { DatabaseLog = log != null ? Path.Combine(Path.GetDirectoryName(FileName) ?? App.DataPath, log) : null; Branch = config["general:branch"]; Debug = TrueValues.Contains(config["general:debug"]?.ToLower()); + var weighing = config["general:weighing"]; + WeighingMode = weighing != null && Enum.TryParse(weighing, true, out var w) ? w : null; UpdateUrl = config["update:url"]; UpdateAuto = TrueValues.Contains(config["update:auto"]?.ToLower()); SyncUrl = config["sync:url"]; diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index 253eb86..6e551ee 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -291,7 +291,7 @@ namespace Elwig.Windows { DateInput.IsReadOnly = true; TimeInput.IsReadOnly = true; BranchInput.IsEnabled = false; - GerebeltGewogenInput.IsEnabled = !App.Client.HasNetWeighing(ViewModel.Branch); + GerebeltGewogenInput.IsEnabled = App.Config.WeighingMode != WeighingMode.Net; OnSecondPassed(null, null); } @@ -306,7 +306,7 @@ namespace Elwig.Windows { } private void InitialDefaultInputs() { - if (App.Client.HasNetWeighing(ViewModel.Branch)) { + if (App.Config.WeighingMode == WeighingMode.Net) { GerebeltGewogenInput.IsEnabled = false; SetDefaultValue(GerebeltGewogenInput, true); } else { @@ -315,7 +315,7 @@ namespace Elwig.Windows { UnsetDefaultValue(GerebeltGewogenInput); } - if (App.Client.HasBoxWeighing(ViewModel.Branch)) { + if (App.Config.WeighingMode == WeighingMode.Box) { LesewagenInput.IsEnabled = false; SetDefaultValue(LesewagenInput, false); } else { @@ -323,7 +323,7 @@ namespace Elwig.Windows { UnsetDefaultValue(LesewagenInput); } - if (!App.Client.HasNetWeighing(ViewModel.Branch)) { + if (App.Config.WeighingMode != WeighingMode.Net) { HandPickedInput.IsThreeState = false; UnsetDefaultValue(HandPickedInput); } else { @@ -349,9 +349,9 @@ namespace Elwig.Windows { ClearOriginalValues(); ClearDefaultValues(); - ViewModel.IsNetWeight = App.Client.HasNetWeighing(ViewModel.Branch); + ViewModel.IsNetWeight = App.Config.WeighingMode == WeighingMode.Net; ViewModel.IsLesewagen = false; - ViewModel.IsHandPicked = !App.Client.HasNetWeighing(ViewModel.Branch) ? true : null; + ViewModel.IsHandPicked = App.Config.WeighingMode != WeighingMode.Net ? true : null; ViewModel.IsGebunden = null; InitialDefaultInputs(); @@ -1144,7 +1144,7 @@ namespace Elwig.Windows { DateInput.IsReadOnly = !Menu_Settings_EnableFreeEditing.IsChecked; TimeInput.IsReadOnly = !Menu_Settings_EnableFreeEditing.IsChecked; BranchInput.IsEnabled = Menu_Settings_EnableFreeEditing.IsChecked; - GerebeltGewogenInput.IsEnabled = App.Client.HasNetWeighing(ViewModel.Branch) || Menu_Settings_EnableFreeEditing.IsChecked; + GerebeltGewogenInput.IsEnabled = App.Config.WeighingMode == WeighingMode.Net || Menu_Settings_EnableFreeEditing.IsChecked; } private void DisableWeighingButtons() { @@ -1395,17 +1395,17 @@ namespace Elwig.Windows { } private void GerebeltGewogenInput_Changed(object sender, RoutedEventArgs evt) { - if ((IsEditing || IsCreating) && !App.Client.HasNetWeighing(ViewModel.Branch)) { + if ((IsEditing || IsCreating) && App.Config.WeighingMode != WeighingMode.Net) { HandPickedInput.IsChecked = !GerebeltGewogenInput.IsChecked; } - if (!ViewModel.IsReceipt || App.Client.HasNetWeighing(ViewModel.Branch)) { + if (!ViewModel.IsReceipt || App.Config.WeighingMode == WeighingMode.Net) { GerebeltGewogenInput.IsChecked ??= false; } CheckBox_Changed(sender, evt); } private void HandPickedInput_Changed(object sender, RoutedEventArgs evt) { - if ((IsEditing || IsCreating) && !App.Client.HasNetWeighing(ViewModel.Branch)) { + if ((IsEditing || IsCreating) && App.Config.WeighingMode != WeighingMode.Net) { GerebeltGewogenInput.IsChecked = !HandPickedInput.IsChecked; } CheckBox_Changed(sender, evt);