TareCorrectionDialog: Allow actual tare to be null

This commit is contained in:
2026-09-16 17:23:12 +02:00
parent 15e191d74e
commit 0e9121c462
5 changed files with 19 additions and 17 deletions
+6 -4
View File
@@ -8,10 +8,11 @@ namespace Elwig.Dialogs {
public int ActualTare { get; private set; } public int ActualTare { get; private set; }
public int TargetTare { get; private set; } public int TargetTare { get; private set; }
public TareCorrectionDialog(int actualTare, int? targetTare = null) { public TareCorrectionDialog(int? actualTare, int? targetTare = null) {
InitializeComponent(); InitializeComponent();
ActualTare = actualTare; ActualTare = actualTare ?? 0;
TargetTare = targetTare ?? actualTare; TargetTare = targetTare ?? actualTare ?? 0;
ActualTareInput.IsReadOnly = actualTare != null;
ActualTareInput.Text = ActualTare.ToString(); ActualTareInput.Text = ActualTare.ToString();
TargetTareInput.Text = TargetTare.ToString(); TargetTareInput.Text = TargetTare.ToString();
TargetTareInput.SelectAll(); TargetTareInput.SelectAll();
@@ -19,12 +20,13 @@ namespace Elwig.Dialogs {
private void ConfirmButton_Click(object sender, RoutedEventArgs evt) { private void ConfirmButton_Click(object sender, RoutedEventArgs evt) {
DialogResult = true; DialogResult = true;
ActualTare = int.Parse(ActualTareInput.Text);
TargetTare = int.Parse(TargetTareInput.Text); TargetTare = int.Parse(TargetTareInput.Text);
Close(); Close();
} }
private void UpdateButtons() { 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) { private void TareInput_TextChanged(object sender, TextChangedEventArgs evt) {
+1 -1
View File
@@ -303,7 +303,7 @@ namespace Elwig.Helpers {
return d.ShowDialog() == true ? (d.Weight, d.Reason) : null; 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); var d = new TareCorrectionDialog(actualTare, targetTare);
return d.ShowDialog() == true ? d.TargetTare - d.ActualTare : null; return d.ShowDialog() == true ? d.TargetTare - d.ActualTare : null;
} }
+3 -3
View File
@@ -37,7 +37,7 @@ namespace Elwig.Services {
vm.GradationKmwString = ""; vm.GradationKmwString = "";
vm.Weight = null; vm.Weight = null;
vm.ActualTare = 0; vm.ActualTare = null;
vm.TargetTare = null; vm.TargetTare = null;
vm.Tare = null; vm.Tare = null;
vm.IsManualWeighing = false; vm.IsManualWeighing = false;
@@ -58,9 +58,9 @@ namespace Elwig.Services {
vm.WineOrigin = ControlUtils.GetItemFromSourceWithPk(vm.WineOriginSource, p.HkId) as WineOrigin; vm.WineOrigin = ControlUtils.GetItemFromSourceWithPk(vm.WineOriginSource, p.HkId) as WineOrigin;
vm.Weight = p.Weight; vm.Weight = p.Weight;
vm.ActualTare = p.WeighingInfo.Tare ?? 0; vm.ActualTare = p.WeighingInfo.Tare;
vm.TargetTare = vm.ActualTare + p.WeighingInfo.TareCorrection; 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.IsManualWeighing = p.IsManualWeighing;
vm.IsNetWeight = p.IsNetWeight; vm.IsNetWeight = p.IsNetWeight;
+1 -1
View File
@@ -125,7 +125,7 @@ namespace Elwig.ViewModels {
get => int.TryParse(TareString?.Replace(Utils.GroupSeparator, "").Replace(" kg", ""), out var w) ? w : null; get => int.TryParse(TareString?.Replace(Utils.GroupSeparator, "").Replace(" kg", ""), out var w) ? w : null;
set => TareString = value == null ? "-" : $"{value:N0} kg{(TargetTare != null ? "*" : "")}"; set => TareString = value == null ? "-" : $"{value:N0} kg{(TargetTare != null ? "*" : "")}";
} }
public int ActualTare; public int? ActualTare;
public int? TargetTare; public int? TargetTare;
[ObservableProperty] [ObservableProperty]
private bool _isManualWeighing; private bool _isManualWeighing;
+8 -8
View File
@@ -614,7 +614,7 @@ namespace Elwig.Windows {
ClearOriginalValues(); ClearOriginalValues();
ClearDefaultValues(); ClearDefaultValues();
ViewModel.FillInputs(p); 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(); FinishInputFilling();
} }
@@ -625,13 +625,13 @@ namespace Elwig.Windows {
} }
private void CorrectTareButton_Click(object sender, RoutedEventArgs evt) { 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); var correction = Utils.ShowTareCorrectionDialog(ViewModel.ActualTare, ViewModel.TargetTare);
if (correction == null) return; if (correction == null) return;
ViewModel.Weight += lastCorrection - correction; ViewModel.Weight += lastCorrection - correction;
ViewModel.TargetTare = correction == 0 ? null : ViewModel.ActualTare + correction;
ViewModel.Tare = ViewModel.TargetTare ?? ViewModel.ActualTare;
if (ViewModel.WeighingData is string s) { 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(); var obj = JsonNode.Parse(s)!.AsObject();
if (correction == 0) { if (correction == 0) {
obj.Remove("tare_correction"); obj.Remove("tare_correction");
@@ -673,16 +673,16 @@ namespace Elwig.Windows {
private void OnWeighingResult(IScale scale, WeighingResult res) { private void OnWeighingResult(IScale scale, WeighingResult res) {
if ((res.NetWeight ?? 0) > 0 && res.FullWeighingId != null) { if ((res.NetWeight ?? 0) > 0 && res.FullWeighingId != null) {
ViewModel.Weight = res.NetWeight; ViewModel.Weight = res.NetWeight;
ViewModel.ActualTare = res.TareWeight ?? 0; ViewModel.ActualTare = res.TareWeight;
ViewModel.TargetTare = null; 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.ScaleTerminalId = scale.ScaleTerminalId;
ViewModel.WeighingData = res.ToJson().ToJsonString(); ViewModel.WeighingData = res.ToJson().ToJsonString();
ViewModel.ManualWeighingReason = null; ViewModel.ManualWeighingReason = null;
ManualWeighingInput.IsChecked = false; ManualWeighingInput.IsChecked = false;
} else { } else {
ViewModel.Weight = null; ViewModel.Weight = null;
ViewModel.ActualTare = 0; ViewModel.ActualTare = null;
ViewModel.TargetTare = null; ViewModel.TargetTare = null;
ViewModel.Tare = null; ViewModel.Tare = null;
ViewModel.ScaleTerminalId = null; ViewModel.ScaleTerminalId = null;
@@ -1410,7 +1410,7 @@ namespace Elwig.Windows {
private void UnloadingInput_Checked(object sender, RoutedEventArgs evt) { private void UnloadingInput_Checked(object sender, RoutedEventArgs evt) {
if (!IsEditing && !IsCreating) return; if (!IsEditing && !IsCreating) return;
if (!ViewModel.IsReceipt) 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 mod = ViewModel.Modifiers.ToList();
var source = ViewModel.ModifiersSource.ToList(); var source = ViewModel.ModifiersSource.ToList();
if (App.Client.IsMatzen) { if (App.Client.IsMatzen) {