Weighing: Add SchemberEventScale

This commit is contained in:
2024-02-21 18:33:36 +01:00
parent d289a5d4bf
commit 10b78dfb72
6 changed files with 130 additions and 36 deletions

View File

@ -76,17 +76,20 @@ namespace Elwig.Windows {
if (IsReceipt) {
Title = $"Übernahme - {App.BranchName} - Elwig";
TodayOnlyInput.IsChecked = true;
var n = App.Scales.Count;
var n = App.CommandScales.Count;
if (n < 1) WeighingAButton.Visibility = Visibility.Hidden;
if (n < 2) WeighingBButton.Visibility = Visibility.Hidden;
if (n < 3) WeighingCButton.Visibility = Visibility.Hidden;
if (n < 4) WeighingDButton.Visibility = Visibility.Hidden;
if (n == 1) WeighingAButton.Content = "Wiegen";
if (n > 1) WeighingAButton.Content = $"Wiegen {App.Scales[0].ScaleId}";
if (n >= 2) WeighingBButton.Content = $"Wiegen {App.Scales[1].ScaleId}";
if (n >= 3) WeighingCButton.Content = $"Wiegen {App.Scales[2].ScaleId}";
if (n >= 4) WeighingDButton.Content = $"Wiegen {App.Scales[3].ScaleId}";
if (n > 1) WeighingAButton.Content = $"Wiegen {App.CommandScales[0].ScaleId}";
if (n >= 2) WeighingBButton.Content = $"Wiegen {App.CommandScales[1].ScaleId}";
if (n >= 3) WeighingCButton.Content = $"Wiegen {App.CommandScales[2].ScaleId}";
if (n >= 4) WeighingDButton.Content = $"Wiegen {App.CommandScales[3].ScaleId}";
WeighingManualButton.Margin = new Thickness(10, 10 + n * 32, 10, 10);
foreach (var s in App.EventScales) {
s.WeighingEvent += Scale_Weighing;
}
} else {
WeighingManualButton.Visibility = Visibility.Hidden;
WeighingAButton.Visibility = Visibility.Hidden;
@ -967,35 +970,43 @@ namespace Elwig.Windows {
FinishButton.IsEnabled = false;
NewDeliveryPartButton.IsEnabled = false;
CancelCreatingButton.IsEnabled = false;
var s = App.CommandScales[index];
try {
var s = App.Scales[index];
if (s is not ICommandScale cs) return;
var res = await cs.Weigh();
if ((res.Weight ?? 0) > 0 && res.FullWeighingId != null) {
WeightInput.Text = $"{res.Weight:N0}";
ScaleId = s.ScaleId;
WeighingId = res.FullWeighingId;
} else {
WeightInput.Text = "";
ScaleId = null;
WeighingId = null;
}
LastScaleError = null;
} catch (Exception e) {
LastScaleError = e.Message.Split(": ")[^1];
WeightInput.Text = "";
ScaleId = null;
WeighingId = null;
MessageBox.Show($"Beim Wiegen ist ein Fehler aufgetreten:\n\n{e.Message}", "Waagenfehler",
var res = await s.Weigh();
OnWeighingResult(s, res);
} catch (Exception ex) {
LastScaleError = ex.Message.Split(": ")[^1];
OnWeighingResult(s, new() { Weight = 0 });
MessageBox.Show($"Beim Wiegen ist ein Fehler aufgetreten:\n\n{ex.Message}", "Waagenfehler",
MessageBoxButton.OK, MessageBoxImage.Error);
}
ManualWeighingReason = null;
ManualWeighingInput.IsChecked = false;
base.TextBox_TextChanged(WeightInput, null);
EnableWeighingButtons();
}
private void OnWeighingResult(IScale scale, WeighingResult res) {
if ((res.Weight ?? 0) > 0 && res.FullWeighingId != null) {
WeightInput.Text = $"{res.Weight:N0}";
ScaleId = scale.ScaleId;
WeighingId = res.FullWeighingId;
ManualWeighingReason = null;
ManualWeighingInput.IsChecked = false;
} else {
WeightInput.Text = "";
ScaleId = null;
WeighingId = null;
}
LastScaleError = null;
TextBox_TextChanged(WeightInput, null);
UpdateButtons();
}
private void Scale_Weighing(object sender, WeighingEventArgs evt) {
if (sender is not IScale scale) return;
OnWeighingResult(scale, evt.Result);
}
private async void SearchInput_TextChanged(object sender, RoutedEventArgs evt) {
TextFilter = SearchInput.Text.ToLower().Split(" ").ToList().FindAll(e => e.Length > 0);
await RefreshDeliveryListQuery(true);
@ -1511,11 +1522,11 @@ namespace Elwig.Windows {
private void EnableWeighingButtons() {
WeighingManualButton.IsEnabled = true;
var n = App.Scales.Count;
WeighingAButton.IsEnabled = n > 0 && App.Scales[0].IsReady;
WeighingBButton.IsEnabled = n > 1 && App.Scales[1].IsReady;
WeighingCButton.IsEnabled = n > 2 && App.Scales[2].IsReady;
WeighingDButton.IsEnabled = n > 3 && App.Scales[3].IsReady;
var n = App.CommandScales.Count;
WeighingAButton.IsEnabled = n > 0 && App.CommandScales[0].IsReady;
WeighingBButton.IsEnabled = n > 1 && App.CommandScales[1].IsReady;
WeighingCButton.IsEnabled = n > 2 && App.CommandScales[2].IsReady;
WeighingDButton.IsEnabled = n > 3 && App.CommandScales[3].IsReady;
}
private async Task UpdateLsNr() {