Implemented übernahme
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
using Elwig.Dialogs;
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
@ -74,11 +74,17 @@ namespace Elwig.Windows {
|
||||
Title = $"Lieferungen - {Member.AdministrativeName} - Elwig";
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs evt) {
|
||||
private async void Window_Loaded(object sender, RoutedEventArgs evt) {
|
||||
OnSecondPassed(null, null);
|
||||
Timer.Start();
|
||||
LockInputs();
|
||||
if (IsReceipt) NewDeliveryButton_Click(null, null);
|
||||
if (IsReceipt) {
|
||||
NewDeliveryButton_Click(null, null);
|
||||
if ((await Context.Seasons.FindAsync(Utils.CurrentYear)) == null) {
|
||||
MessageBox.Show("Die Saison für das aktuelle Jahr wurde noch nicht erstellt. Neue Lieferungen können nicht abgespeichert werden.",
|
||||
"Saison noch nicht erstellt", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnSecondPassed(object? sender, EventArgs? evt) {
|
||||
@ -89,15 +95,19 @@ namespace Elwig.Windows {
|
||||
}
|
||||
}
|
||||
|
||||
private void InitialInputs() {
|
||||
HandPickedInput.IsChecked = null;
|
||||
// FIXME if Matzen
|
||||
GerebeltGewogenInput.IsChecked = true;
|
||||
ClearOriginalValues();
|
||||
ValidateRequiredInputs();
|
||||
}
|
||||
|
||||
private void InitInputs() {
|
||||
ControlUtils.SelectComboBoxItem(BranchInput, i => (i as Branch)?.ZwstId, App.ZwstId);
|
||||
OnSecondPassed(null, null);
|
||||
UpdateLsNr().GetAwaiter().GetResult();
|
||||
HandPickedInput.IsChecked = null;
|
||||
// FIXME if Matzen
|
||||
GerebeltGewogenInput.IsChecked = true;
|
||||
FillOriginalValues();
|
||||
ValidateRequiredInputs();
|
||||
InitialInputs();
|
||||
}
|
||||
|
||||
protected override void UpdateButtons() {
|
||||
@ -105,8 +115,9 @@ namespace Elwig.Windows {
|
||||
bool ch = HasChanged, v = IsValid;
|
||||
ResetButton.IsEnabled = ch;
|
||||
SaveButton.IsEnabled = v && ch;
|
||||
FinishButton.IsEnabled = v && ch;
|
||||
NewDeliveryPartButton.IsEnabled = v && ch;
|
||||
FinishButton.IsEnabled = v || !ch;
|
||||
NewDeliveryPartButton.IsEnabled = v;
|
||||
CancelCreatingButton.IsEnabled = DeliveryList.SelectedItem == null || DeliveryPartList.SelectedItem == null;
|
||||
}
|
||||
|
||||
private async Task RefreshDeliveryList() {
|
||||
@ -193,6 +204,8 @@ namespace Elwig.Windows {
|
||||
ClearInputStates();
|
||||
if (DeliveryPartList.SelectedItem is DeliveryPart p) {
|
||||
FillInputs(p);
|
||||
} else if (DeliveryList.SelectedItem is Delivery d) {
|
||||
FillInputs(d);
|
||||
} else {
|
||||
ClearOriginalValues();
|
||||
ClearInputs(validate);
|
||||
@ -201,10 +214,9 @@ namespace Elwig.Windows {
|
||||
GC.Collect();
|
||||
}
|
||||
|
||||
private void FillInputs(DeliveryPart p) {
|
||||
private void FillInputs(Delivery d) {
|
||||
ClearOriginalValues();
|
||||
|
||||
var d = p.Delivery;
|
||||
MgNrInput.Text = d.MgNr.ToString();
|
||||
ControlUtils.SelectComboBoxItem(BranchInput, i => (i as Branch)?.ZwstId, d.ZwstId);
|
||||
LsNrInput.Text = d.LsNr;
|
||||
@ -212,6 +224,21 @@ namespace Elwig.Windows {
|
||||
TimeInput.Text = d.Time?.ToString("HH:mm") ?? "";
|
||||
CommentInput.Text = d.Comment ?? "";
|
||||
|
||||
SortIdInput.Text = "";
|
||||
GradationKmwInput.Text = "";
|
||||
WeightInput.Text = "";
|
||||
ManualWeighingInput.IsChecked = false;
|
||||
PartCommentInput.Text = "";
|
||||
TemperatureInput.Text = "";
|
||||
AcidInput.Text = "";
|
||||
|
||||
FillOriginalValues();
|
||||
}
|
||||
|
||||
private void FillInputs(DeliveryPart p) {
|
||||
ClearOriginalValues();
|
||||
FillInputs(p.Delivery);
|
||||
|
||||
SortIdInput.Text = p?.SortId ?? "";
|
||||
ControlUtils.SelectCheckComboBoxItems(AttributesInput, p?.Attributes, i => (i as WineAttr)?.AttrId);
|
||||
GradationKmwInput.Text = (p != null) ? $"{p.Kmw:N1}" : "";
|
||||
@ -234,7 +261,7 @@ namespace Elwig.Windows {
|
||||
|
||||
private async Task<DeliveryPart> UpdateDeliveryPart(Delivery? d, DeliveryPart? p) {
|
||||
int year, did, dpnr;
|
||||
bool deliveryNew = d == null;
|
||||
bool deliveryNew = (d == null), partNew = (p == null);
|
||||
if (d == null) {
|
||||
d = Context.CreateProxy<Delivery>();
|
||||
year = Utils.CurrentNextSeason;
|
||||
@ -260,7 +287,7 @@ namespace Elwig.Windows {
|
||||
d.LNr = await Context.NextLNr(d.Date);
|
||||
}
|
||||
if (IsCreating) {
|
||||
d.TimeString = DateTime.Now.ToString("HH:mm:SS");
|
||||
d.TimeString = DateTime.Now.ToString("HH:mm:ss");
|
||||
} else if (InputHasChanged(TimeInput)) {
|
||||
d.TimeString = TimeInput.Text + ":00";
|
||||
}
|
||||
@ -270,7 +297,7 @@ namespace Elwig.Windows {
|
||||
d.Comment = (CommentInput.Text == "") ? null : CommentInput.Text;
|
||||
|
||||
p.SortId = (WineVarietyInput.SelectedItem as WineVar)?.SortId;
|
||||
p.Weight = int.Parse(WeightInput.Text);
|
||||
p.Weight = int.Parse(WeightInput.Text.Replace(".", ""));
|
||||
p.Kmw = double.Parse(GradationKmwInput.Text);
|
||||
p.QualId = (WineQualityLevelInput.SelectedItem as WineQualLevel)?.QualId;
|
||||
p.HkId = (WineOriginInput.SelectedItem as WineOrigin)?.HkId;
|
||||
@ -289,6 +316,8 @@ namespace Elwig.Windows {
|
||||
// p.ScaleId
|
||||
// p.WeighingId
|
||||
|
||||
// TODO update KgNr when MgNr changes (if default is selected)
|
||||
|
||||
EntityEntry<Delivery>? dEntry = null;
|
||||
EntityEntry<DeliveryPart>? pEntry = null;
|
||||
try {
|
||||
@ -296,12 +325,8 @@ namespace Elwig.Windows {
|
||||
dEntry = Context.Update(d);
|
||||
pEntry = Context.Update(p);
|
||||
} else if (IsCreating) {
|
||||
if (deliveryNew) {
|
||||
dEntry = await Context.AddAsync(d);
|
||||
} else {
|
||||
dEntry = Context.Update(d);
|
||||
}
|
||||
pEntry = await Context.AddAsync(p);
|
||||
dEntry = deliveryNew ? await Context.AddAsync(d) : Context.Update(d);
|
||||
pEntry = partNew ? await Context.AddAsync(p) : Context.Update(p);
|
||||
}
|
||||
|
||||
foreach (var a in AttributesInput.ItemsSource.Cast<WineAttr>()) {
|
||||
@ -346,8 +371,14 @@ namespace Elwig.Windows {
|
||||
|
||||
await Context.SaveChangesAsync();
|
||||
} catch (Exception exc) {
|
||||
if (dEntry != null) await dEntry.ReloadAsync();
|
||||
if (pEntry != null) await pEntry.ReloadAsync();
|
||||
if (dEntry != null) {
|
||||
await dEntry.ReloadAsync();
|
||||
if (deliveryNew) dEntry.State = EntityState.Detached;
|
||||
}
|
||||
if (pEntry != null) {
|
||||
await pEntry.ReloadAsync();
|
||||
if (partNew) pEntry.State = EntityState.Detached;
|
||||
}
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Lieferung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
@ -386,8 +417,8 @@ namespace Elwig.Windows {
|
||||
if (DeliveryPartList.SelectedItem != null) {
|
||||
AbwertenButton.IsEnabled = true;
|
||||
EditDeliveryButton.IsEnabled = true;
|
||||
ExtractDeliveryPartButton.IsEnabled = true;
|
||||
DeleteDeliveryPartButton.IsEnabled = DeliveryList.SelectedItem is Delivery { Parts.Count: > 1 };
|
||||
ExtractDeliveryPartButton.IsEnabled = !IsCreating;
|
||||
DeleteDeliveryPartButton.IsEnabled = DeliveryList.SelectedItem is Delivery { Parts.Count: > 1 } && !IsCreating;
|
||||
} else {
|
||||
AbwertenButton.IsEnabled = false;
|
||||
EditDeliveryButton.IsEnabled = false;
|
||||
@ -419,31 +450,65 @@ namespace Elwig.Windows {
|
||||
}
|
||||
}
|
||||
|
||||
private void FinishButton_Click(object sender, RoutedEventArgs evt) {
|
||||
// TODO finish (save) and print
|
||||
private async void NewDeliveryPartButton_Click(object sender, RoutedEventArgs evt) {
|
||||
DeliveryPartList.IsEnabled = false;
|
||||
var p = await UpdateDeliveryPart(DeliveryList.SelectedItem as Delivery, DeliveryPartList.SelectedItem as DeliveryPart);
|
||||
await RefreshDeliveryList();
|
||||
RefreshDeliveryParts();
|
||||
DeliveryList.SelectedItem = p.Delivery;
|
||||
DeliveryPartList.SelectedItem = null;
|
||||
InitialInputs();
|
||||
}
|
||||
|
||||
private void NewDeliveryPartButton_Click(object sender, RoutedEventArgs evt) {
|
||||
// TODO new delivery part
|
||||
private async void FinishButton_Click(object sender, RoutedEventArgs evt) {
|
||||
DeliveryPartList.IsEnabled = false;
|
||||
var p = await UpdateDeliveryPart(DeliveryList.SelectedItem as Delivery, DeliveryPartList.SelectedItem as DeliveryPart);
|
||||
await RefreshDeliveryList();
|
||||
RefreshDeliveryParts();
|
||||
if (p != null) {
|
||||
var doc = new DeliveryNote(p.Delivery);
|
||||
await doc.Generate();
|
||||
doc.Show();
|
||||
//await doc.Print(2);
|
||||
}
|
||||
DeliveryList.SelectedItem = null;
|
||||
InitInputs();
|
||||
}
|
||||
|
||||
private void CancelCreatingButton_Click(object sender, RoutedEventArgs evt) {
|
||||
IsCreating = false;
|
||||
IsEditing = false;
|
||||
DeliveryList.IsEnabled = true;
|
||||
DeliveryPartList.IsEnabled = true;
|
||||
HideFinishNewPartDeliveryCancelButtons();
|
||||
ShowNewEditDeleteButtons();
|
||||
RefreshInputs();
|
||||
ClearInputStates();
|
||||
LockInputs();
|
||||
UnlockSearchInputs();
|
||||
if (DeliveryList.SelectedItem is not Delivery d) {
|
||||
// switch away from creating mode
|
||||
IsCreating = false;
|
||||
IsEditing = false;
|
||||
DeliveryList.IsEnabled = true;
|
||||
DeliveryPartList.IsEnabled = true;
|
||||
WeighingManualButton.IsEnabled = false;
|
||||
WeighingAButton.IsEnabled = false;
|
||||
WeighingBButton.IsEnabled = false;
|
||||
WeighingCButton.IsEnabled = false;
|
||||
WeighingDButton.IsEnabled = false;
|
||||
HideFinishNewPartDeliveryCancelButtons();
|
||||
ShowNewEditDeleteButtons();
|
||||
RefreshInputs();
|
||||
ClearInputStates();
|
||||
LockInputs();
|
||||
UnlockSearchInputs();
|
||||
} else {
|
||||
// switch to last delivery part
|
||||
DeliveryPartList.IsEnabled = true;
|
||||
DeliveryPartList.SelectedItem = d.Parts.Last();
|
||||
}
|
||||
}
|
||||
|
||||
private void NewDeliveryButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||
IsCreating = true;
|
||||
DeliveryList.IsEnabled = false;
|
||||
DeliveryPartList.IsEnabled = false;
|
||||
WeighingManualButton.IsEnabled = true;
|
||||
WeighingAButton.IsEnabled = true;
|
||||
WeighingBButton.IsEnabled = true;
|
||||
WeighingCButton.IsEnabled = true;
|
||||
WeighingDButton.IsEnabled = true;
|
||||
DeliveryList.SelectedItem = null;
|
||||
HideNewEditDeleteButtons();
|
||||
ShowFinishNewPartDeliveryCancelButtons();
|
||||
@ -515,8 +580,8 @@ namespace Elwig.Windows {
|
||||
RefreshInputs();
|
||||
|
||||
AbwertenButton.IsEnabled = true;
|
||||
ExtractDeliveryPartButton.IsEnabled = true;
|
||||
DeleteDeliveryPartButton.IsEnabled = true;
|
||||
ExtractDeliveryPartButton.IsEnabled = DeliveryPartList.SelectedItem != null && !IsCreating;
|
||||
DeleteDeliveryPartButton.IsEnabled = DeliveryList.SelectedItem is Delivery { Parts.Count: > 1 } && !IsCreating;
|
||||
}
|
||||
|
||||
private void ResetButton_Click(object sender, RoutedEventArgs evt) {
|
||||
@ -543,8 +608,8 @@ namespace Elwig.Windows {
|
||||
UnlockSearchInputs();
|
||||
|
||||
AbwertenButton.IsEnabled = DeliveryPartList.SelectedItem != null;
|
||||
ExtractDeliveryPartButton.IsEnabled = DeliveryPartList.SelectedItem != null;
|
||||
DeleteDeliveryPartButton.IsEnabled = DeliveryPartList.SelectedItem != null;
|
||||
ExtractDeliveryPartButton.IsEnabled = DeliveryPartList.SelectedItem != null && !IsCreating;
|
||||
DeleteDeliveryPartButton.IsEnabled = DeliveryList.SelectedItem is Delivery { Parts.Count: > 1 } && !IsCreating;
|
||||
}
|
||||
|
||||
private void ExtractDeliveryPartButton_Click(object sender, RoutedEventArgs evt) {
|
||||
@ -696,7 +761,7 @@ namespace Elwig.Windows {
|
||||
private void UpdateWineQualityLevels() {
|
||||
if (!GetInputValid(GradationKmwInput)) {
|
||||
UnsetOriginalValue(WineQualityLevelInput);
|
||||
WineQualityLevelInput.ItemsSource = null;
|
||||
WineQualityLevelInput.ItemsSource = Context.WineQualityLevels.Where(q => q.QualId == "WEI").ToList();
|
||||
return;
|
||||
}
|
||||
var kmw = double.Parse(GradationKmwInput.Text);
|
||||
@ -798,6 +863,8 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private void UpdateAbgewertet() {
|
||||
if (!GetInputValid(GradationKmwInput))
|
||||
return;
|
||||
var qual = WineQualityLevelInput.SelectedItem as WineQualLevel;
|
||||
if (qual == null) {
|
||||
AbgewertetInput.IsChecked = false;
|
||||
|
@ -327,6 +327,7 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async Task<Member> UpdateMember(Member? m) {
|
||||
bool memberNew = (m == null);
|
||||
m ??= Context.CreateProxy<Member>();
|
||||
|
||||
int newMgNr = int.Parse(MgNrInput.Text);
|
||||
@ -421,7 +422,10 @@ namespace Elwig.Windows {
|
||||
m = await Context.Members.FindAsync(newMgNr);
|
||||
}
|
||||
} catch (Exception exc) {
|
||||
if (tr != null) await tr.ReloadAsync();
|
||||
if (tr != null) {
|
||||
await tr.ReloadAsync();
|
||||
if (memberNew) tr.State = EntityState.Detached;
|
||||
}
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Mitglied aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
|
Reference in New Issue
Block a user