diff --git a/Elwig/Dialogs/TareCorrectionDialog.xaml.cs b/Elwig/Dialogs/TareCorrectionDialog.xaml.cs index e56532d..736a397 100644 --- a/Elwig/Dialogs/TareCorrectionDialog.xaml.cs +++ b/Elwig/Dialogs/TareCorrectionDialog.xaml.cs @@ -8,10 +8,11 @@ namespace Elwig.Dialogs { public int ActualTare { get; private set; } public int TargetTare { get; private set; } - public TareCorrectionDialog(int actualTare, int? targetTare = null) { + public TareCorrectionDialog(int? actualTare, int? targetTare = null) { InitializeComponent(); - ActualTare = actualTare; - TargetTare = targetTare ?? actualTare; + ActualTare = actualTare ?? 0; + TargetTare = targetTare ?? actualTare ?? 0; + ActualTareInput.IsReadOnly = actualTare != null; ActualTareInput.Text = ActualTare.ToString(); TargetTareInput.Text = TargetTare.ToString(); TargetTareInput.SelectAll(); @@ -19,12 +20,13 @@ namespace Elwig.Dialogs { private void ConfirmButton_Click(object sender, RoutedEventArgs evt) { DialogResult = true; + ActualTare = int.Parse(ActualTareInput.Text); TargetTare = int.Parse(TargetTareInput.Text); Close(); } private void UpdateButtons() { - ConfirmButton.IsEnabled = TargetTareInput.Text.Length > 0; + ConfirmButton.IsEnabled = ActualTareInput.Text.Length > 0 && TargetTareInput.Text.Length > 0; } private void TareInput_TextChanged(object sender, TextChangedEventArgs evt) { diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index 4aaab1a..6c736c3 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -303,7 +303,7 @@ namespace Elwig.Helpers { return d.ShowDialog() == true ? (d.Weight, d.Reason) : null; } - public static int? ShowTareCorrectionDialog(int actualTare, int? targetTare = null) { + public static int? ShowTareCorrectionDialog(int? actualTare, int? targetTare = null) { var d = new TareCorrectionDialog(actualTare, targetTare); return d.ShowDialog() == true ? d.TargetTare - d.ActualTare : null; } diff --git a/Elwig/Services/DeliveryService.cs b/Elwig/Services/DeliveryService.cs index 32361da..abc0fa8 100644 --- a/Elwig/Services/DeliveryService.cs +++ b/Elwig/Services/DeliveryService.cs @@ -37,7 +37,7 @@ namespace Elwig.Services { vm.GradationKmwString = ""; vm.Weight = null; - vm.ActualTare = 0; + vm.ActualTare = null; vm.TargetTare = null; vm.Tare = null; vm.IsManualWeighing = false; @@ -58,9 +58,9 @@ namespace Elwig.Services { vm.WineOrigin = ControlUtils.GetItemFromSourceWithPk(vm.WineOriginSource, p.HkId) as WineOrigin; vm.Weight = p.Weight; - vm.ActualTare = p.WeighingInfo.Tare ?? 0; + vm.ActualTare = p.WeighingInfo.Tare; vm.TargetTare = vm.ActualTare + p.WeighingInfo.TareCorrection; - vm.Tare = vm.TargetTare ?? (vm.ActualTare != 0 ? vm.ActualTare : null); + vm.Tare = vm.TargetTare ?? (vm.ActualTare is int t && t != 0 ? t : null); vm.IsManualWeighing = p.IsManualWeighing; vm.IsNetWeight = p.IsNetWeight; diff --git a/Elwig/ViewModels/DeliveryAdminViewModel.cs b/Elwig/ViewModels/DeliveryAdminViewModel.cs index f68ae8c..16c0765 100644 --- a/Elwig/ViewModels/DeliveryAdminViewModel.cs +++ b/Elwig/ViewModels/DeliveryAdminViewModel.cs @@ -125,7 +125,7 @@ namespace Elwig.ViewModels { get => int.TryParse(TareString?.Replace(Utils.GroupSeparator, "").Replace(" kg", ""), out var w) ? w : null; set => TareString = value == null ? "-" : $"{value:N0} kg{(TargetTare != null ? "*" : "")}"; } - public int ActualTare; + public int? ActualTare; public int? TargetTare; [ObservableProperty] private bool _isManualWeighing; diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index 6282a87..ec03c8a 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -614,7 +614,7 @@ namespace Elwig.Windows { ClearOriginalValues(); ClearDefaultValues(); ViewModel.FillInputs(p); - CorrectTareButton.Visibility = !ViewModel.IsReceipt && (ViewModel.ActualTare != 0 || ViewModel.IsUnloadingBox) ? Visibility.Visible : Visibility.Hidden; + CorrectTareButton.Visibility = !ViewModel.IsReceipt && ((ViewModel.ActualTare is int t && t != 0) || ViewModel.IsUnloadingBox) ? Visibility.Visible : Visibility.Hidden; FinishInputFilling(); } @@ -625,13 +625,13 @@ namespace Elwig.Windows { } private void CorrectTareButton_Click(object sender, RoutedEventArgs evt) { - var lastCorrection = (ViewModel.TargetTare ?? ViewModel.ActualTare) - ViewModel.ActualTare; + var lastCorrection = (ViewModel.TargetTare ?? ViewModel.ActualTare ?? 0) - (ViewModel.ActualTare ?? 0); var correction = Utils.ShowTareCorrectionDialog(ViewModel.ActualTare, ViewModel.TargetTare); if (correction == null) return; ViewModel.Weight += lastCorrection - correction; - ViewModel.TargetTare = correction == 0 ? null : ViewModel.ActualTare + correction; - ViewModel.Tare = ViewModel.TargetTare ?? ViewModel.ActualTare; if (ViewModel.WeighingData is string s) { + ViewModel.TargetTare = correction == 0 ? null : (ViewModel.ActualTare ?? 0) + correction; + ViewModel.Tare = ViewModel.TargetTare ?? ViewModel.ActualTare; var obj = JsonNode.Parse(s)!.AsObject(); if (correction == 0) { obj.Remove("tare_correction"); @@ -673,16 +673,16 @@ namespace Elwig.Windows { private void OnWeighingResult(IScale scale, WeighingResult res) { if ((res.NetWeight ?? 0) > 0 && res.FullWeighingId != null) { ViewModel.Weight = res.NetWeight; - ViewModel.ActualTare = res.TareWeight ?? 0; + ViewModel.ActualTare = res.TareWeight; ViewModel.TargetTare = null; - ViewModel.Tare = ViewModel.ActualTare != 0 ? ViewModel.ActualTare : null; + ViewModel.Tare = ViewModel.ActualTare is int t && t != 0 ? t : null; ViewModel.ScaleTerminalId = scale.ScaleTerminalId; ViewModel.WeighingData = res.ToJson().ToJsonString(); ViewModel.ManualWeighingReason = null; ManualWeighingInput.IsChecked = false; } else { ViewModel.Weight = null; - ViewModel.ActualTare = 0; + ViewModel.ActualTare = null; ViewModel.TargetTare = null; ViewModel.Tare = null; ViewModel.ScaleTerminalId = null; @@ -1410,7 +1410,7 @@ namespace Elwig.Windows { private void UnloadingInput_Checked(object sender, RoutedEventArgs evt) { if (!IsEditing && !IsCreating) return; if (!ViewModel.IsReceipt) - CorrectTareButton.Visibility = ViewModel.ActualTare != 0 || ViewModel.IsUnloadingBox ? Visibility.Visible : Visibility.Hidden; + CorrectTareButton.Visibility = (ViewModel.ActualTare is int t && t != 0) || ViewModel.IsUnloadingBox ? Visibility.Visible : Visibility.Hidden; var mod = ViewModel.Modifiers.ToList(); var source = ViewModel.ModifiersSource.ToList(); if (App.Client.IsMatzen) {