Improve DeliveryAdminWindow

This commit is contained in:
2023-05-23 20:00:24 +02:00
parent 3315b758ad
commit 5b9aedd1a4
9 changed files with 161 additions and 15 deletions

View File

@ -88,6 +88,30 @@
</Grid>
</GroupBox>
<GroupBox Header="Lieferung" Grid.Column="1" Grid.Row="2" Margin="5,5,5,5">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="LieferscheinNr.:" Margin="10,10,0,0" Grid.Column="0"/>
<TextBox x:Name="LsNrInput" Width="125" Grid.Column="1" HorizontalAlignment="Left" Margin="0,10,0,0"
IsEnabled="False"/>
<Label Content="Datum/Uhrzeit:" Margin="10,40,0,0" Grid.Column="0"/>
<TextBox x:Name="DateInput" Width="76" Grid.Column="1" HorizontalAlignment="Left" Margin="0,40,0,0"
IsEnabled="False"
TextChanged="DateInput_TextChanged"/>
<TextBox x:Name="TimeInput" Width="44" Grid.Column="1" HorizontalAlignment="Left" Margin="81,40,0,0"
IsEnabled="False"/>
<Label Content="Zweigstelle:" Margin="10,70,0,0" Grid.Column="0"/>
<ComboBox x:Name="BranchInput" Width="125" Margin="0,70,10,0" Grid.Column="1" HorizontalAlignment="Left"
DisplayMemberPath="Name" TextSearch.TextPath="Name"/>
</Grid>
</GroupBox>
<GroupBox Header="Sorte" Grid.Column="2" Grid.Row="1" Margin="5,5,5,5">
<Grid>
<Grid.ColumnDefinitions>
@ -112,27 +136,39 @@
<GroupBox Header="Gradation" Grid.Column="2" Grid.Row="2" Margin="5,5,5,5">
<Grid>
<Grid Grid.Row="1" Grid.Column="1" Width="56" Height="25" Margin="10,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="GradationOeInput" TextAlignment="Right" Padding="2,1,25,2"
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Gradation:" Margin="10,10,10,10"/>
<Grid Grid.Column="1" Width="56" Height="25" Margin="0,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="GradationOeInput" TextAlignment="Right" Padding="2,2,25,2"
IsReadOnly="False" IsEnabled="True"
TextChanged="GradationOeInput_TextChanged" LostFocus="GradationOeInput_LostFocus"/>
<Label Content="°Oe" Margin="0,1,3,0" HorizontalAlignment="Right"/>
<Label Content="°Oe" Margin="0,2,3,0" HorizontalAlignment="Right"/>
</Grid>
<Label Content="=" Margin="72,10,10,10"/>
<Grid Grid.Row="1" Grid.Column="1" Width="72" Height="25" Margin="90,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="GradationKmwInput" TextAlignment="Right" Padding="2,1,38,2"
<Label Content="=" Margin="62,10,10,10" Grid.Column="1"/>
<Grid Grid.Column="1" Width="72" Height="25" Margin="80,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="GradationKmwInput" TextAlignment="Right" Padding="2,2,39,2" SnapsToDevicePixels="True"
IsReadOnly="False" IsEnabled="True"
TextChanged="GradationKmwInput_TextChanged" LostFocus="GradationKmwInput_LostFocus"/>
<Label Content="°KMW" Margin="0,1,3,0" HorizontalAlignment="Right"/>
<Label Content="°KMW" Margin="0,2,3,0" HorizontalAlignment="Right"/>
</Grid>
<Label Content="Qualitätsstufe:" Margin="10,40,10,10"/>
<ComboBox x:Name="WineQualityLevelInput" IsEnabled="True" Margin="100,40,10,10"
ItemTemplate="{StaticResource WineQualityLevelTemplate}"/>
<ComboBox x:Name="WineQualityLevelInput" IsEnabled="True" Width="152" Margin="0,40,10,10" Grid.Column="1" HorizontalAlignment="Left"
ItemTemplate="{StaticResource WineQualityLevelTemplate}"
SelectionChanged="WineQualityLevelInput_SelectionChanged"/>
</Grid>
</GroupBox>
<GroupBox Header="Zu-/Abschläge" Grid.Column="2" Grid.Row="3" Margin="5,5,5,5">
<GroupBox Header="Gewicht" Grid.Column="2" Grid.Row="3" Margin="5,5,5,5">
<Grid>
</Grid>
</GroupBox>
<GroupBox Header="Zu-/Abschläge" Grid.Column="2" Grid.Row="4" Margin="5,5,5,5">
<Grid>
<xctk:CheckComboBox x:Name="ModifiersInput" IsEnabled="True" Margin="10,10,10,10"
ItemTemplate="{StaticResource ModifierTemplate}" Delimiter=", " AllItemsSelectedContent="Alle"
@ -140,10 +176,25 @@
</Grid>
</GroupBox>
<GroupBox Header="Herkunft" Grid.Column="2" Grid.Row="4" Margin="5,5,5,5">
<GroupBox Header="Herkunft" Grid.Column="1" Grid.Row="4" Margin="5,5,5,5">
<Grid>
<ComboBox x:Name="WineOriginInput" IsEnabled="True" Margin="10,10,10,10"
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Weinbaugebiet:" Margin="10,10,0,10" Grid.Column="0"/>
<ComboBox x:Name="WineOriginInput" IsEnabled="True" Margin="0,10,10,10" Grid.Column="1"
ItemTemplate="{StaticResource WineOriginTemplate}"/>
<Label Content="Weinbau-KG:" Margin="10,40,0,10" Grid.Column="0"/>
<ComboBox x:Name="WineKgInput" IsEnabled="True" Margin="0,40,10,10" Grid.Column="1"
DisplayMemberPath="Name"
SelectionChanged="WineKgInput_SelectionChanged"/>
<Label Content="Ried:" Margin="10,70,0,10" Grid.Column="0"/>
<ComboBox x:Name="WineRdInput" IsEnabled="True" Margin="0,70,10,10" Grid.Column="1"
DisplayMemberPath="Name"/>
</Grid>
</GroupBox>
</Grid>

View File

@ -1,8 +1,11 @@
using Elwig.Helpers;
using Elwig.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
using Xceed.Wpf.Toolkit.Primitives;
namespace Elwig.Windows {
@ -10,6 +13,8 @@ namespace Elwig.Windows {
private bool IsUpdatingGradation = false;
private DispatcherTimer dispatcherTimer;
public DeliveryAdminWindow() {
InitializeComponent();
RequiredInputs = new Control[] {
@ -17,21 +22,35 @@ namespace Elwig.Windows {
SortIdInput, WineVarietyInput,
GradationOeInput, GradationKmwInput,
WineQualityLevelInput,
WineOriginInput,
WineOriginInput, WineKgInput
};
ExemptInputs = new Control[] {
MgNrInput, MemberInput,
MemberAddressField
};
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(OnSecondPassed);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
}
private void Window_Loaded(object sender, RoutedEventArgs evt) {
MemberInput.ItemsSource = Context.Members.OrderBy(m => m.FamilyName).ThenBy(m => m.GivenName).ToList();
BranchInput.ItemsSource = Context.Branches.OrderBy(b => b.Name).ToList();
BranchInput.SelectedItem = BranchInput.ItemsSource.Cast<Branch>().Where(b => b.ZwstId == App.ZwstId).First();
WineVarietyInput.ItemsSource = Context.WineVarieties.OrderBy(v => v.Name).ToList();
AttributesInput.ItemsSource = Context.WineAttributes.OrderBy(a => a.Name).ToList();
WineQualityLevelInput.ItemsSource = Context.WineQualityLevels.ToList();
ModifiersInput.ItemsSource = Context.Modifiers.Where(m => m.Season.Year == 2022).OrderBy(m => m.Name).ToList();
WineOriginInput.ItemsSource = Context.WineOrigins.ToList().OrderByDescending(o => o.SortKey).ThenBy(o => o.HkId);
WineKgInput.ItemsSource = Context.WbKgs.Select(k => k.AtKg).OrderBy(k => k.Name).ToList();
}
private void OnSecondPassed(object? sender, EventArgs evt) {
var now = DateTime.Now;
TimeInput.Text = now.ToString("HH:mm");
DateInput.Text = now.ToString("dd.MM.yyyy");
}
protected override void UpdateButtons() {
@ -52,6 +71,14 @@ namespace Elwig.Windows {
var m = MemberInput.SelectedItem as Member;
if (m != null) MgNrInput.Text = m.MgNr.ToString();
MemberAddressField.Text = m?.FullAddress;
WineKgInput.SelectedItem = m?.DefaultKg;
}
private void DateInput_TextChanged(object sender, TextChangedEventArgs evt) {
var branch = (Branch)BranchInput.SelectedItem;
var date = DateOnly.ParseExact(DateInput.Text, "dd.MM.yyyy");
var lnr = Context.NextLNr(date).GetAwaiter().GetResult();
LsNrInput.Text = $"{date.ToString("yyyyMMdd")}{branch.ZwstId}{lnr:000}";
}
private void UpdateWineVariety(bool valid) {
@ -135,5 +162,31 @@ namespace Elwig.Windows {
private void ModifiersInput_SelectionChanged(object sender, ItemSelectionChangedEventArgs evt) {
}
private void UpdateWineOrigin() {
var qual = (WineQualLevel)WineQualityLevelInput.SelectedItem;
var kg = ((AT_Kg)WineKgInput.SelectedItem)?.WbKg;
if (qual == null || kg == null) return;
var o = kg.Origin;
while (o != null && o.Level > qual.OriginLevel) o = o.Parent;
WineOriginInput.SelectedItem = o;
}
private void WineQualityLevelInput_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
UpdateWineOrigin();
}
private void WineKgInput_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
UpdateWineOrigin();
var kg = (AT_Kg)WineKgInput.SelectedItem;
if (kg != null) {
var list = Context.WbRde.Where(r => r.KgNr == kg.KgNr).OrderBy(r => r.Name).Cast<object>().ToList();
list.Insert(0, new NullItem());
WineRdInput.ItemsSource = list;
WineRdInput.SelectedIndex = 0;
} else {
WineRdInput.ItemsSource = null;
}
}
}
}