DeliveryAdminWindow: Add button to correct tare

This commit is contained in:
2026-09-14 14:43:24 +02:00
parent fea779bd95
commit 8ba051198f
11 changed files with 185 additions and 20 deletions
+36
View File
@@ -9,6 +9,7 @@ using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json.Nodes;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
@@ -103,6 +104,7 @@ namespace Elwig.Windows {
WeighingBButton.Visibility = Visibility.Hidden;
WeighingCButton.Visibility = Visibility.Hidden;
WeighingDButton.Visibility = Visibility.Hidden;
DisableWeighingButtons();
}
Menu_Statistics_WineQuality_ModeOe.IsChecked = false;
@@ -612,14 +614,34 @@ namespace Elwig.Windows {
ClearOriginalValues();
ClearDefaultValues();
ViewModel.FillInputs(p);
CorrectTareButton.Visibility = !ViewModel.IsReceipt && p.WeighingInfo.Tare != null && p.WeighingInfo.Tare != 0 ? Visibility.Visible : Visibility.Hidden;
FinishInputFilling();
}
new protected void ClearInputs(bool validate = false) {
ViewModel.ClearInputs();
CorrectTareButton.Visibility = Visibility.Hidden;
base.ClearInputs(validate);
}
private void CorrectTareButton_Click(object sender, RoutedEventArgs evt) {
var lastCorrection = (ViewModel.TargetTare ?? ViewModel.ActualTare) - ViewModel.ActualTare;
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) {
var obj = JsonNode.Parse(s)!.AsObject();
if (correction == 0) {
obj.Remove("tare_correction");
} else {
obj["tare_correction"] = correction;
}
ViewModel.WeighingData = obj.ToJsonString(Utils.JsonOpts);
}
}
private void WeighingButton_Click(object sender, RoutedEventArgs evt) {
int index = Array.IndexOf(WeighingButtons, sender as Button);
if (index >= 0) WeighingButton_Click(index);
@@ -651,12 +673,18 @@ 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.TargetTare = null;
ViewModel.Tare = ViewModel.ActualTare != 0 ? ViewModel.ActualTare : null;
ViewModel.ScaleTerminalId = scale.ScaleTerminalId;
ViewModel.WeighingData = res.ToJson().ToJsonString();
ViewModel.ManualWeighingReason = null;
ManualWeighingInput.IsChecked = false;
} else {
ViewModel.Weight = null;
ViewModel.ActualTare = 0;
ViewModel.TargetTare = null;
ViewModel.Tare = null;
ViewModel.ScaleTerminalId = null;
ViewModel.WeighingData = null;
}
@@ -971,6 +999,8 @@ namespace Elwig.Windows {
DeliveryList.IsEnabled = false;
DeliveryPartList.IsEnabled = false;
if (!ViewModel.IsReceipt)
EnableWeighingButtons();
HideNewEditDeleteButtons();
ShowSaveResetCancelButtons();
UnlockInputs();
@@ -1034,6 +1064,8 @@ namespace Elwig.Windows {
DeliveryList.IsEnabled = true;
DeliveryPartList.IsEnabled = true;
if (!ViewModel.IsReceipt)
DisableWeighingButtons();
HideSaveResetCancelButtons();
ShowNewEditDeleteButtons();
LockInputs();
@@ -1067,6 +1099,8 @@ namespace Elwig.Windows {
DeliveryList.IsEnabled = true;
DeliveryPartList.IsEnabled = true;
if (!ViewModel.IsReceipt)
DisableWeighingButtons();
HideSaveResetCancelButtons();
ShowNewEditDeleteButtons();
RefreshInputs();
@@ -1171,6 +1205,7 @@ namespace Elwig.Windows {
}
private void DisableWeighingButtons() {
CorrectTareButton.IsEnabled = false;
WeighingManualButton.IsEnabled = false;
WeighingAButton.IsEnabled = false;
WeighingBButton.IsEnabled = false;
@@ -1179,6 +1214,7 @@ namespace Elwig.Windows {
}
private void EnableWeighingButtons() {
CorrectTareButton.IsEnabled = true;
WeighingManualButton.IsEnabled = true;
var n = App.CommandScales.Count;
WeighingAButton.IsEnabled = n > 0 && App.CommandScales[0].IsReady;