Compare commits

..

14 Commits

9 changed files with 428 additions and 266 deletions

View File

@@ -1,3 +1,4 @@
using Elwig.Helpers;
using Elwig.Models; using Elwig.Models;
namespace Elwig.Documents { namespace Elwig.Documents {
@@ -26,14 +27,9 @@ namespace Elwig.Documents {
public string Address { public string Address {
get { get {
var b = Member.BillingAddress; IAddress addr = (Member.BillingAddress != null && UseBillingAddress) ? Member.BillingAddress : Member;
if (b != null && UseBillingAddress) { var plz = addr.PostalDest.AtPlz;
var plz = b.PostalDest.AtPlz; return (addr is BillingAddr ? $"{addr.Name}\n" : "") + $"{Member.AdministrativeName}\n{addr.Address}\n{plz?.Plz} {plz?.Ort.Name.Split(",")[0]}\n{addr.PostalDest.Country.Name}";
return $"{b.Name}\n{Member.AdministrativeName}\n{b.Address}\n{plz.Plz} {plz.Ort.Name}\n{b.Country.Name}";
} else {
var plz = Member.PostalDest.AtPlz;
return $"{Member.AdministrativeName}\n{Member.Address}\n{plz.Plz} {plz.Ort.Name}\n{Member.PostalDest.Country.Name}";
}
} }
} }
} }

View File

@@ -1,5 +1,6 @@
using Elwig.Helpers; using Elwig.Helpers;
using Elwig.Models; using Elwig.Models;
using Microsoft.EntityFrameworkCore;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -15,11 +16,19 @@ namespace Elwig.Documents {
Deliveries = deliveries; Deliveries = deliveries;
} }
public DeliveryJournal(string filter, IQueryable<DeliveryPart> deliveries) :
this(filter, deliveries
.Include(p => p.Delivery)
.Include(p => p.Delivery.Member)
.Include(p => p.Variant)
.ToList()) { }
public DeliveryJournal(AppDbContext ctx, DateOnly date) : public DeliveryJournal(AppDbContext ctx, DateOnly date) :
this(date.ToString("dd.MM.yyyy"), ctx.DeliveryParts this(date.ToString("dd.MM.yyyy"), ctx.DeliveryParts
.Where(p => p.Delivery.DateString == date.ToString("yyy-MM-dd")) .Where(p => p.Delivery.DateString == date.ToString("yyy-MM-dd"))
.OrderBy(p => p.Delivery.LsNr) .OrderBy(p => p.Delivery.DateString)
.ThenBy(p => p.DPNr) .ThenBy(p => p.Delivery.TimeString)
.ToList()) { } .ThenBy(p => p.Delivery.LsNr)
.ThenBy(p => p.DPNr)) { }
} }
} }

View File

@@ -7,7 +7,7 @@
<UseWPF>true</UseWPF> <UseWPF>true</UseWPF>
<PreserveCompilationContext>true</PreserveCompilationContext> <PreserveCompilationContext>true</PreserveCompilationContext>
<ApplicationIcon>elwig.ico</ApplicationIcon> <ApplicationIcon>elwig.ico</ApplicationIcon>
<Version>0.3.3</Version> <Version>0.3.5</Version>
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages> <SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
</PropertyGroup> </PropertyGroup>

View File

@@ -521,6 +521,36 @@ namespace Elwig.Helpers {
return new(true, null); return new(true, null);
} }
public static ValidationResult CheckTime(TextBox input, bool required) {
string text = "";
int pos = input.CaretIndex;
int v = 0;
for (int i = 0; i < input.Text.Length; i++) {
char ch = input.Text[i];
if (v >= 0 && v < 5 && v != 2 && char.IsAsciiDigit(ch)) {
if ((v == 0 && ch <= '2') || (v == 1 && (text[0] < '2' || ch <= '3')) || (v == 3 && ch <= '5') || v == 4) {
text += ch;
v++;
}
} else if (v == 2 && ch == ':') {
text += ch;
v++;
}
if (i == input.CaretIndex - 1)
pos = text.Length;
}
input.Text = text;
input.CaretIndex = pos;
if (text.Length == 0) {
return required ? new(false, "Wert ist nicht optional") : new(true, null);
} else if (v != 5) {
return new(false, "Zeit ist ungültig");
} else {
return new(true, null);
}
}
public static ValidationResult CheckFbNr(TextBox input, bool required, AppDbContext ctx, AreaCom? c) { public static ValidationResult CheckFbNr(TextBox input, bool required, AppDbContext ctx, AreaCom? c) {
var res = CheckInteger(input, required); var res = CheckInteger(input, required);
if (!res.IsValid) { if (!res.IsValid) {

View File

@@ -482,6 +482,14 @@ namespace Elwig.Windows {
InputLostFocus((TextBox)sender, Validator.CheckDate); InputLostFocus((TextBox)sender, Validator.CheckDate);
} }
protected void TimeInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckTime);
}
protected void TimeInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckTime);
}
protected void PlzInput_TextChanged(object sender, RoutedEventArgs evt) { protected void PlzInput_TextChanged(object sender, RoutedEventArgs evt) {
var plz = (TextBox)sender; var plz = (TextBox)sender;
InputTextChanged(plz, Validator.CheckPlz); InputTextChanged(plz, Validator.CheckPlz);

View File

@@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Elwig.Windows" xmlns:local="clr-namespace:Elwig.Windows"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
Title="Lieferungen - Elwig" Height="720" Width="1100" MinHeight="700" MinWidth="1000" Title="Lieferungen - Elwig" Height="720" Width="1100" MinHeight="720" MinWidth="1000"
Loaded="Window_Loaded"> Loaded="Window_Loaded">
<Window.Resources> <Window.Resources>
<Style TargetType="Label"> <Style TargetType="Label">
@@ -43,16 +43,13 @@
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="19"/> <RowDefinition Height="19"/>
<RowDefinition Height="0.625*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/> <RowDefinition Height="*"/>
<RowDefinition Height="24"/> <RowDefinition Height="24"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" MinWidth="400"/> <ColumnDefinition Width="1*" MinWidth="400"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="5"/>
<ColumnDefinition Width="1*"/> <ColumnDefinition Width="2*" MinWidth="560"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Menu Grid.ColumnSpan="3" BorderThickness="0,0,0,1" BorderBrush="LightGray" Background="White"> <Menu Grid.ColumnSpan="3" BorderThickness="0,0,0,1" BorderBrush="LightGray" Background="White">
@@ -75,9 +72,13 @@
<MenuItem Header="Exportieren"> <MenuItem Header="Exportieren">
<MenuItem x:Name="Menu_Export_Bki" Header="Traubentransportscheinliste (BKI)"/> <MenuItem x:Name="Menu_Export_Bki" Header="Traubentransportscheinliste (BKI)"/>
</MenuItem> </MenuItem>
<MenuItem Header="Einstellungen">
<MenuItem x:Name="Menu_Settings_EnableFreeEditing" Header="Freie Bearbeitung aktivieren"
IsCheckable="True" Checked="Menu_Settings_EnableFreeEditing_Checked" Unchecked="Menu_Settings_EnableFreeEditing_Unchecked"/>
</MenuItem>
</Menu> </Menu>
<Grid Grid.RowSpan="4" Grid.Row="1" Margin="5,0,5,0"> <Grid Grid.Row="1" Margin="5,0,0,0">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="42"/> <RowDefinition Height="42"/>
<RowDefinition Height="*"/> <RowDefinition Height="*"/>
@@ -105,17 +106,49 @@
CanUserDeleteRows="False" CanUserResizeRows="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False" CanUserAddRows="False"
Margin="5,0,5,0" Grid.Row="1" FontSize="14" Grid.ColumnSpan="3"> Margin="5,0,5,0" Grid.Row="1" FontSize="14" Grid.ColumnSpan="3">
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="MgNr." Binding="{Binding MgNr}" Width="70"/> <DataGridTextColumn Header="MgNr." Binding="{Binding MgNr, StringFormat='{}{0} '}" Width="50">
<DataGridTextColumn Header="Datum" Binding="{Binding Date, StringFormat='dd.MM.yy'}" Width="70"/>
<DataGridTextColumn Header="Zeit" Binding="{Binding Time, StringFormat='HH:mm'}" Width="70"/>
<DataGridTextColumn Header="Sorte" Binding="{Binding SortIdString}" Width="60"/>
<DataGridTextColumn Header="Gewicht" Binding="{Binding Weight, StringFormat='{}{0:N0} kg'}" Width="70">
<DataGridTextColumn.CellStyle> <DataGridTextColumn.CellStyle>
<Style> <Style>
<Setter Property="TextBlock.TextAlignment" Value="Right"/> <Setter Property="TextBlock.TextAlignment" Value="Right"/>
</Style> </Style>
</DataGridTextColumn.CellStyle> </DataGridTextColumn.CellStyle>
</DataGridTextColumn> </DataGridTextColumn>
<DataGridTextColumn Header="Datum" Binding="{Binding Date, StringFormat='dd.MM.yy'}" Width="70">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Zeit" Binding="{Binding Time, StringFormat='HH:mm'}" Width="50">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Sorte" Binding="{Binding SortIdString}" Width="50">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Gewicht" Binding="{Binding Weight, StringFormat='{}{0:N0} kg '}" Width="75">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Right"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Gradation" Binding="{Binding Kmw, StringFormat='{}{0:N1}° '}" Width="50">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Right"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="LsNr." Binding="{Binding LsNr}" Width="120"/>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
@@ -156,237 +189,255 @@
Click="CancelButton_Click"/> Click="CancelButton_Click"/>
</Grid> </Grid>
<GroupBox Header="Mitglied" Grid.Column="1" Grid.Row="1" Margin="5,5,5,5"> <GridSplitter Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Mitglied:" Margin="10,10,0,0" Grid.Column="0"/> <Grid Grid.Row="1" Grid.Column="2">
<TextBox x:Name="MgNrInput" Width="48" Grid.Row="1" Grid.Column="1" Margin="0,10,0,0" HorizontalAlignment="Left" TextAlignment="Right" <Grid.RowDefinitions>
TextChanged="MgNrInput_TextChanged" LostFocus="MgNrInput_LostFocus" KeyUp="Input_KeyUp"/> <RowDefinition Height="0.625*"/>
<ComboBox x:Name="MemberInput" Grid.Column="1" Margin="53,10,10,10" IsEditable="True" <RowDefinition Height="*"/>
ItemTemplate="{StaticResource MemberAdminNameTemplate}" TextSearch.TextPath="AdministrativeName" <RowDefinition Height="*"/>
SelectionChanged="MemberInput_SelectionChanged" KeyUp="Input_KeyUp"/> <RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Content="Wohnort:" Margin="10,38,0,0" Grid.Column="0"/> <GroupBox Header="Mitglied" Grid.Column="0" Grid.Row="0" Margin="5,5,5,5">
<TextBox x:Name="MemberAddressField" Grid.Column="1" Margin="0,40,10,10" FontSize="12" Height="22" <Grid>
IsReadOnly="True" IsTabStop="False"/> <Grid.ColumnDefinitions>
</Grid> <ColumnDefinition Width="70"/>
</GroupBox> <ColumnDefinition/>
</Grid.ColumnDefinitions>
<GroupBox Header="Lieferung" Grid.Column="1" Grid.Row="2" Margin="5,5,5,5"> <Label Content="Mitglied:" Margin="10,10,0,0" Grid.Column="0"/>
<Grid> <TextBox x:Name="MgNrInput" Width="48" Grid.Row="1" Grid.Column="1" Margin="0,10,0,0" HorizontalAlignment="Left" TextAlignment="Right"
<Grid.ColumnDefinitions> TextChanged="MgNrInput_TextChanged" LostFocus="MgNrInput_LostFocus" KeyUp="Input_KeyUp"/>
<ColumnDefinition Width="100"/> <ComboBox x:Name="MemberInput" Grid.Column="1" Margin="53,10,10,10" IsEditable="True"
<ColumnDefinition/> ItemTemplate="{StaticResource MemberAdminNameTemplate}" TextSearch.TextPath="AdministrativeName"
</Grid.ColumnDefinitions> SelectionChanged="MemberInput_SelectionChanged" KeyUp="Input_KeyUp"/>
<Label Content="LieferscheinNr.:" Margin="10,10,0,0" Grid.Column="0"/> <Label Content="Wohnort:" Margin="10,38,0,0" Grid.Column="0"/>
<TextBox x:Name="LsNrInput" Width="126" Grid.Column="1" HorizontalAlignment="Left" Margin="0,10,0,0" <TextBox x:Name="MemberAddressField" Grid.Column="1" Margin="0,40,10,10" FontSize="12" Height="22"
IsReadOnly="True" IsTabStop="False"/> IsReadOnly="True" IsTabStop="False"/>
<Label Content="Datum/Uhrzeit:" Margin="10,40,0,0" Grid.Column="0"/>
<TextBox x:Name="DateInput" Width="77" Grid.Column="1" HorizontalAlignment="Left" Margin="0,40,0,0"
IsReadOnly="True" IsTabStop="False"
TextChanged="DateInput_TextChanged"/>
<TextBox x:Name="TimeInput" Width="44" Grid.Column="1" HorizontalAlignment="Left" Margin="82,40,0,0"
IsReadOnly="True" IsTabStop="False"/>
<Label Content="Zweigstelle:" Margin="10,70,0,0" Grid.Column="0"/>
<ComboBox x:Name="BranchInput" Width="126" Margin="0,70,10,0" Grid.Column="1" HorizontalAlignment="Left"
IsEnabled="False"
DisplayMemberPath="Name" TextSearch.TextPath="Name"/>
<Label Content="Anmerkung:" Margin="10,100,0,10"/>
<TextBox x:Name="CommentInput" Grid.Column="1" Margin="0,100,10,10"
TextChanged="TextBox_TextChanged"/>
</Grid>
</GroupBox>
<GroupBox Header="Sorte" Grid.Column="2" Grid.Row="1" Margin="5,5,5,5">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Sorte:" Margin="10,10,0,0" Grid.Column="0"/>
<TextBox x:Name="SortIdInput" Width="36" Grid.Row="1" Grid.Column="1" Margin="0,10,0,0" HorizontalAlignment="Left"
TextChanged="SortIdInput_TextChanged" LostFocus="SortIdInput_LostFocus" KeyUp="Input_KeyUp"/>
<ComboBox x:Name="WineVarietyInput" Grid.Row="1" Grid.Column="1" Margin="41,10,10,10"
ItemTemplate="{StaticResource WineVarietyTemplate}" TextSearch.TextPath="Name"
SelectionChanged="WineVarietyInput_SelectionChanged" KeyUp="Input_KeyUp"/>
<Label Content="Attribute:" Margin="10,40,0,0" Grid.Column="0"/>
<xctk:CheckComboBox x:Name="AttributesInput" Grid.Row="1" Grid.Column="1" Margin="0,40,10,10"
DisplayMemberPath="Name" Delimiter=", " AllItemsSelectedContent="Alle"
ItemSelectionChanged="AttributesInput_SelectionChanged" KeyUp="Input_KeyUp"/>
</Grid>
</GroupBox>
<GroupBox Header="Gradation" Grid.Column="2" Grid.Row="2" Margin="5,5,5,5">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Gradation:" Margin="10,10,10,10"/>
<Grid Grid.Column="1" Width="54" Height="25" Margin="0,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="GradationOeInput" TextAlignment="Right" Padding="2,2,23,2"
TextChanged="GradationOeInput_TextChanged" LostFocus="GradationOeInput_LostFocus" KeyUp="Input_KeyUp"/>
<Label Content="°Oe" Margin="0,4,3,0" HorizontalAlignment="Right" FontSize="10"/>
</Grid> </Grid>
<Label Content="=" Margin="60,10,10,10" Grid.Column="1"/> </GroupBox>
<Grid Grid.Column="1" Width="68" Height="25" Margin="78,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="GradationKmwInput" TextAlignment="Right" Padding="2,2,34,2" SnapsToDevicePixels="True" <GroupBox Header="Lieferung" Grid.Column="0" Grid.Row="1" Margin="5,5,5,5">
TextChanged="GradationKmwInput_TextChanged" LostFocus="GradationKmwInput_LostFocus" KeyUp="Input_KeyUp"/> <Grid>
<Label Content="°KMW" Margin="0,4,3,0" HorizontalAlignment="Right" FontSize="10"/> <Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="LieferscheinNr.:" Margin="10,10,0,0" Grid.Column="0"/>
<TextBox x:Name="LsNrInput" Width="126" Grid.Column="1" HorizontalAlignment="Left" Margin="0,10,0,0"
IsReadOnly="True" IsTabStop="False"
TextChanged="TextBox_TextChanged"/>
<Label Content="Datum/Uhrzeit:" Margin="10,40,0,0" Grid.Column="0"/>
<TextBox x:Name="DateInput" Width="77" Grid.Column="1" HorizontalAlignment="Left" Margin="0,40,0,0"
IsReadOnly="True"
TextChanged="DateInput_TextChanged" LostFocus="DateInput_LostFocus"/>
<TextBox x:Name="TimeInput" Width="44" Grid.Column="1" HorizontalAlignment="Left" Margin="82,40,0,0"
IsReadOnly="True"
TextChanged="TimeInput_TextChanged" LostFocus="TimeInput_LostFocus"/>
<Label Content="Zweigstelle:" Margin="10,70,0,0" Grid.Column="0"/>
<ComboBox x:Name="BranchInput" Width="126" Margin="0,70,10,0" Grid.Column="1" HorizontalAlignment="Left"
IsEnabled="False"
SelectionChanged="BranchInput_SelectionChanged"
DisplayMemberPath="Name" TextSearch.TextPath="Name"/>
<Label Content="Anmerkung:" Margin="10,100,0,10"/>
<TextBox x:Name="CommentInput" Grid.Column="1" Margin="0,100,10,10"
TextChanged="TextBox_TextChanged"/>
</Grid> </Grid>
</GroupBox>
<Label Content="Qualitätsstufe:" Margin="10,40,10,10"/> <GroupBox Header="Sorte" Grid.Column="1" Grid.Row="0" Margin="5,5,5,5">
<ComboBox x:Name="WineQualityLevelInput" Width="146" Margin="0,40,10,10" Grid.Column="1" HorizontalAlignment="Left" <Grid>
ItemTemplate="{StaticResource WineQualityLevelTemplate}" <Grid.ColumnDefinitions>
SelectionChanged="WineQualityLevelInput_SelectionChanged" KeyUp="Input_KeyUp"/> <ColumnDefinition Width="70"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<CheckBox x:Name="AbgewertetInput" Content="Abgewertet" IsEnabled="False" <Label Content="Sorte:" Margin="10,10,0,0" Grid.Column="0"/>
VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,75,10,10" Grid.Column="0" Grid.ColumnSpan="2"/> <TextBox x:Name="SortIdInput" Width="36" Grid.Row="1" Grid.Column="1" Margin="0,10,0,0" HorizontalAlignment="Left"
</Grid> TextChanged="SortIdInput_TextChanged" LostFocus="SortIdInput_LostFocus" KeyUp="Input_KeyUp"/>
</GroupBox> <ComboBox x:Name="WineVarietyInput" Grid.Row="1" Grid.Column="1" Margin="41,10,10,10"
ItemTemplate="{StaticResource WineVarietyTemplate}" TextSearch.TextPath="Name"
SelectionChanged="WineVarietyInput_SelectionChanged" KeyUp="Input_KeyUp"/>
<GroupBox Header="Gewicht" Grid.Column="2" Grid.Row="3" Margin="5,5,5,5"> <Label Content="Attribute:" Margin="10,40,0,0" Grid.Column="0"/>
<Grid> <xctk:CheckComboBox x:Name="AttributesInput" Grid.Row="1" Grid.Column="1" Margin="0,40,10,10"
<Grid.ColumnDefinitions> DisplayMemberPath="Name" Delimiter=", " AllItemsSelectedContent="Alle"
<ColumnDefinition Width="70"/> ItemSelectionChanged="AttributesInput_SelectionChanged" KeyUp="Input_KeyUp"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Gewicht:" Margin="10,10,10,10"/>
<Grid Grid.Column="1" Width="70" Height="25" Margin="0,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="WeightInput" TextAlignment="Right" Padding="2,2,17,2" IsReadOnly="True"
TextChanged="WeightInput_TextChanged"/>
<Label Content="kg" Margin="0,4,3,0" HorizontalAlignment="Right" FontSize="10"/>
</Grid> </Grid>
</GroupBox>
<CheckBox x:Name="ManualWeighingInput" Content="Handwiegung" IsEnabled="False" <GroupBox Header="Gradation" Grid.Column="1" Grid.Row="1" Margin="5,5,5,5">
VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,45,10,10" Grid.Column="0" Grid.ColumnSpan="2" <Grid>
Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/> <Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Gradation:" Margin="10,10,10,10"/>
<Grid Grid.Column="1" Width="54" Height="25" Margin="0,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="GradationOeInput" TextAlignment="Right" Padding="2,2,23,2"
TextChanged="GradationOeInput_TextChanged" LostFocus="GradationOeInput_LostFocus" KeyUp="Input_KeyUp"/>
<Label Content="°Oe" Margin="0,4,3,0" HorizontalAlignment="Right" FontSize="10"/>
</Grid>
<Label Content="=" Margin="60,10,10,10" Grid.Column="1"/>
<Grid Grid.Column="1" Width="68" Height="25" Margin="78,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="GradationKmwInput" TextAlignment="Right" Padding="2,2,34,2" SnapsToDevicePixels="True"
TextChanged="GradationKmwInput_TextChanged" LostFocus="GradationKmwInput_LostFocus" KeyUp="Input_KeyUp"/>
<Label Content="°KMW" Margin="0,4,3,0" HorizontalAlignment="Right" FontSize="10"/>
</Grid>
<CheckBox x:Name="GerebeltGewogenInput" Content="Gerebelt gewogen" <Label Content="Qualitätsstufe:" Margin="10,40,10,10"/>
VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,75,10,10" Grid.Column="0" Grid.ColumnSpan="2" <ComboBox x:Name="WineQualityLevelInput" Width="146" Margin="0,40,10,10" Grid.Column="1" HorizontalAlignment="Left"
Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/> ItemTemplate="{StaticResource WineQualityLevelTemplate}"
SelectionChanged="WineQualityLevelInput_SelectionChanged" KeyUp="Input_KeyUp"/>
<Button x:Name="WeighingAButton" Content="Wiegen A" Width="120" <CheckBox x:Name="AbgewertetInput" Content="Abgewertet" IsEnabled="False"
Click="WeighingButton_Click" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,75,10,10" Grid.Column="0" Grid.ColumnSpan="2"/>
VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,10,10,10" Grid.Column="2"/>
<Button x:Name="WeighingBButton" Content="Wiegen B" Width="120"
Click="WeighingButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,42,10,10" Grid.Column="2"/>
<Button x:Name="WeighingCButton" Content="Wiegen C" Width="120"
Click="WeighingButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,74,10,10" Grid.Column="2"/>
<Button x:Name="WeighingDButton" Content="Wiegen D" Width="120"
Click="WeighingButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,106,10,10" Grid.Column="2"/>
<Button x:Name="WeighingManualButton" Content="Handwiegung" Width="120"
Click="WeighingManualButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,138,10,10" Grid.Column="2"/>
</Grid>
</GroupBox>
<GroupBox Header="Sonstiges" Grid.Column="2" Grid.Row="4" Margin="5,5,5,10">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="65"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Zu-/Abschläge:" Margin="10,10,0,10"/>
<xctk:CheckComboBox x:Name="ModifiersInput" Margin="0,10,10,10" Grid.Column="1" Grid.ColumnSpan="2"
ItemTemplate="{StaticResource ModifierTemplate}" Delimiter=", " AllItemsSelectedContent="Alle"
ItemSelectionChanged="ModifiersInput_SelectionChanged"/>
<Label Content="Anmerkung:" Margin="10,40,0,10"/>
<TextBox x:Name="PartCommentInput" Grid.Column="1" Margin="0,40,10,10" Grid.ColumnSpan="2"
TextChanged="TextBox_TextChanged"/>
<Label Content="Temperatur:" Margin="10,70,0,10"/>
<Grid Grid.Column="1" Height="25" Margin="0,70,10,10" VerticalAlignment="Top">
<TextBox x:Name="TemperatureInput" TextAlignment="Right" Padding="2,2,16,2"
TextChanged="TemperatureAcidInput_TextChanged" LostFocus="TemperatureAcidInput_LostFocus"/>
<Label Content="°C" Margin="0,4,3,0" HorizontalAlignment="Right" FontSize="10"/>
</Grid> </Grid>
</GroupBox>
<Label Content="Säure:" Margin="10,100,0,10"/> <GroupBox Header="Gewicht" Grid.Column="1" Grid.Row="2" Margin="5,5,5,5">
<Grid Grid.Column="1" Height="25" Margin="0,100,10,10" VerticalAlignment="Top"> <Grid>
<TextBox x:Name="AcidInput" TextAlignment="Right" Padding="2,2,19,2" <Grid.ColumnDefinitions>
TextChanged="TemperatureAcidInput_TextChanged" LostFocus="TemperatureAcidInput_LostFocus"/> <ColumnDefinition Width="70"/>
<Label Content="g/l" Margin="0,4,3,0" HorizontalAlignment="Right" FontSize="10"/> <ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Gewicht:" Margin="10,10,10,10"/>
<Grid Grid.Column="1" Width="70" Height="25" Margin="0,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="WeightInput" TextAlignment="Right" Padding="2,2,17,2" IsReadOnly="True"
TextChanged="WeightInput_TextChanged"/>
<Label Content="kg" Margin="0,4,3,0" HorizontalAlignment="Right" FontSize="10"/>
</Grid>
<CheckBox x:Name="ManualWeighingInput" Content="Handwiegung" IsEnabled="False"
VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,45,10,10" Grid.Column="0" Grid.ColumnSpan="2"
Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/>
<CheckBox x:Name="GerebeltGewogenInput" Content="Gerebelt gewogen"
VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,75,10,10" Grid.Column="0" Grid.ColumnSpan="2"
Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/>
<Button x:Name="WeighingAButton" Content="Wiegen A" Width="120"
Click="WeighingButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,10,10,10" Grid.Column="2"/>
<Button x:Name="WeighingBButton" Content="Wiegen B" Width="120"
Click="WeighingButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,42,10,10" Grid.Column="2"/>
<Button x:Name="WeighingCButton" Content="Wiegen C" Width="120"
Click="WeighingButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,74,10,10" Grid.Column="2"/>
<Button x:Name="WeighingDButton" Content="Wiegen D" Width="120"
Click="WeighingButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,106,10,10" Grid.Column="2"/>
<Button x:Name="WeighingManualButton" Content="Handwiegung" Width="120"
Click="WeighingManualButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,138,10,10" Grid.Column="2"/>
</Grid> </Grid>
</GroupBox>
<CheckBox x:Name="LesewagenInput" Content="Lesewagen" Margin="10,75,0,0" Grid.Column="2" <GroupBox Header="Sonstiges" Grid.Column="1" Grid.Row="3" Margin="5,5,5,10">
VerticalAlignment="Top" HorizontalAlignment="Left" <Grid>
Checked="LesewagenInput_Changed" Unchecked="LesewagenInput_Changed"/> <Grid.ColumnDefinitions>
<CheckBox x:Name="HandPickedInput" Content="Handlese" Margin="10,105,0,0" Grid.Column="2" IsThreeState="True" <ColumnDefinition Width="100"/>
VerticalAlignment="Top" HorizontalAlignment="Left" <ColumnDefinition Width="65"/>
Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/> <ColumnDefinition/>
</Grid> </Grid.ColumnDefinitions>
</GroupBox>
<GroupBox Header="Teillieferungen" Grid.Column="1" Grid.Row="3" Margin="5,5,5,5"> <Label Content="Zu-/Abschläge:" Margin="10,10,0,10"/>
<Grid> <xctk:CheckComboBox x:Name="ModifiersInput" Margin="0,10,10,10" Grid.Column="1" Grid.ColumnSpan="2"
<Grid.ColumnDefinitions> ItemTemplate="{StaticResource ModifierTemplate}" Delimiter=", " AllItemsSelectedContent="Alle"
<ColumnDefinition/> ItemSelectionChanged="ModifiersInput_SelectionChanged"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListBox x:Name="DeliveryPartList" Margin="5,5,5,38" Grid.ColumnSpan="2"
SelectionChanged="DeliveryPartList_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding DPNr}" Width="20"/>
<TextBlock Text="{Binding SortId}" Width="30"/>
<TextBlock Text="{Binding Kmw, StringFormat='{}{0:0.0}°'}" Width="40" TextAlignment="Right" Padding="0,0,10,0"/>
<TextBlock Text="{Binding QualId}" Width="30"/>
<TextBlock Text="{Binding Weight, StringFormat='{}{0:N0} kg'}" Width="60" TextAlignment="Right"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button x:Name="ExtractDeliveryPartButton" Content="Extrahieren" IsEnabled="False" <Label Content="Anmerkung:" Margin="10,40,0,10"/>
ToolTip="Ausgewählte Teillieferung aus aktueller Lieferung entfernen und entweder anderer oder neuer Lieferung zuordnen" <TextBox x:Name="PartCommentInput" Grid.Column="1" Margin="0,40,10,10" Grid.ColumnSpan="2"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,10,2.5,5" Grid.Column="0" Grid.Row="2" TextChanged="TextBox_TextChanged"/>
Click="ExtractDeliveryPartButton_Click"/>
<Button x:Name="DeleteDeliveryPartButton" Content="Löschen" IsEnabled="False"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,10,5,5" Grid.Column="1" Grid.Row="2"
Click="DeleteDeliveryPartButton_Click"/>
</Grid>
</GroupBox>
<GroupBox Header="Herkunft" Grid.Column="1" Grid.Row="4" Margin="5,5,5,10"> <Label Content="Temperatur:" Margin="10,70,0,10"/>
<Grid> <Grid Grid.Column="1" Height="25" Margin="0,70,10,10" VerticalAlignment="Top">
<Grid.ColumnDefinitions> <TextBox x:Name="TemperatureInput" TextAlignment="Right" Padding="2,2,16,2"
<ColumnDefinition Width="100"/> TextChanged="TemperatureAcidInput_TextChanged" LostFocus="TemperatureAcidInput_LostFocus"/>
<ColumnDefinition/> <Label Content="°C" Margin="0,4,3,0" HorizontalAlignment="Right" FontSize="10"/>
</Grid.ColumnDefinitions> </Grid>
<Label Content="Weinbaugebiet:" Margin="10,10,0,10" Grid.Column="0"/> <Label Content="Säure:" Margin="10,100,0,10"/>
<ComboBox x:Name="WineOriginInput" Margin="0,10,10,10" Grid.Column="1" <Grid Grid.Column="1" Height="25" Margin="0,100,10,10" VerticalAlignment="Top">
ItemTemplate="{StaticResource WineOriginTemplate}"/> <TextBox x:Name="AcidInput" TextAlignment="Right" Padding="2,2,19,2"
TextChanged="TemperatureAcidInput_TextChanged" LostFocus="TemperatureAcidInput_LostFocus"/>
<Label Content="g/l" Margin="0,4,3,0" HorizontalAlignment="Right" FontSize="10"/>
</Grid>
<Label Content="Weinbau-KG:" Margin="10,40,0,10" Grid.Column="0"/> <CheckBox x:Name="LesewagenInput" Content="Lesewagen" Margin="10,75,0,0" Grid.Column="2"
<ComboBox x:Name="WineKgInput" Margin="0,40,10,10" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left"
DisplayMemberPath="Name" Checked="LesewagenInput_Changed" Unchecked="LesewagenInput_Changed"/>
SelectionChanged="WineKgInput_SelectionChanged"/> <CheckBox x:Name="HandPickedInput" Content="Handlese" Margin="10,105,0,0" Grid.Column="2" IsThreeState="True"
VerticalAlignment="Top" HorizontalAlignment="Left"
Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/>
</Grid>
</GroupBox>
<Label Content="Ried:" Margin="10,70,0,10" Grid.Column="0"/> <GroupBox Header="Teillieferungen" Grid.Column="0" Grid.Row="2" Margin="5,5,5,5">
<ComboBox x:Name="WineRdInput" Margin="0,70,10,10" Grid.Column="1" <Grid>
DisplayMemberPath="Name"/> <Grid.ColumnDefinitions>
</Grid> <ColumnDefinition/>
</GroupBox> <ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListBox x:Name="DeliveryPartList" Margin="5,5,5,38" Grid.ColumnSpan="2"
SelectionChanged="DeliveryPartList_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding DPNr}" Width="20"/>
<TextBlock Text="{Binding SortId}" Width="30"/>
<TextBlock Text="{Binding Kmw, StringFormat='{}{0:0.0}°'}" Width="40" TextAlignment="Right" Padding="0,0,10,0"/>
<TextBlock Text="{Binding QualId}" Width="30"/>
<TextBlock Text="{Binding Weight, StringFormat='{}{0:N0} kg'}" Width="60" TextAlignment="Right"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button x:Name="ExtractDeliveryPartButton" Content="Extrahieren" IsEnabled="False"
ToolTip="Ausgewählte Teillieferung aus aktueller Lieferung entfernen und entweder anderer oder neuer Lieferung zuordnen"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,10,2.5,5" Grid.Column="0" Grid.Row="2"
Click="ExtractDeliveryPartButton_Click"/>
<Button x:Name="DeleteDeliveryPartButton" Content="Löschen" IsEnabled="False"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,10,5,5" Grid.Column="1" Grid.Row="2"
Click="DeleteDeliveryPartButton_Click"/>
</Grid>
</GroupBox>
<GroupBox Header="Herkunft" Grid.Column="0" Grid.Row="3" Margin="5,5,5,10">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Weinbaugebiet:" Margin="10,10,0,10" Grid.Column="0"/>
<ComboBox x:Name="WineOriginInput" 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" 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" Margin="0,70,10,10" Grid.Column="1"
DisplayMemberPath="Name"/>
</Grid>
</GroupBox>
</Grid>
<StatusBar Grid.Row="5" Grid.ColumnSpan="3" BorderThickness="0,1,0,0" BorderBrush="Gray"> <StatusBar Grid.Row="5" Grid.ColumnSpan="3" BorderThickness="0,1,0,0" BorderBrush="Gray">
<StatusBar.ItemsPanel> <StatusBar.ItemsPanel>

View File

@@ -180,11 +180,30 @@ namespace Elwig.Windows {
doc.Show(); doc.Show();
} }
private void Menu_Settings_EnableFreeEditing_Checked(object sender, RoutedEventArgs evt) {
if (IsEditing || IsCreating) {
DateInput.IsReadOnly = false;
TimeInput.IsReadOnly = false;
BranchInput.IsEnabled = true;
if (IsCreating) TimeInput.Text = "";
OnSecondPassed(null, null);
}
}
private void Menu_Settings_EnableFreeEditing_Unchecked(object sender, RoutedEventArgs evt) {
DateInput.IsReadOnly = true;
TimeInput.IsReadOnly = true;
BranchInput.IsEnabled = false;
OnSecondPassed(null, null);
}
private void OnSecondPassed(object? sender, EventArgs? evt) { private void OnSecondPassed(object? sender, EventArgs? evt) {
if (IsReceipt && IsCreating) { if (IsReceipt && IsCreating && !Menu_Settings_EnableFreeEditing.IsChecked) {
var now = DateTime.Now; var now = DateTime.Now;
TimeInput.Text = now.ToString("HH:mm"); TimeInput.Text = now.ToString("HH:mm");
DateInput.Text = now.ToString("dd.MM.yyyy"); DateInput.Text = now.ToString("dd.MM.yyyy");
SetDefaultValue(TimeInput);
SetDefaultValue(DateInput);
} }
} }
@@ -259,15 +278,19 @@ namespace Elwig.Windows {
} }
if (TodayOnlyInput.IsChecked == true) { if (TodayOnlyInput.IsChecked == true) {
deliveryQuery = deliveryQuery deliveryQuery = deliveryQuery
.Where(d => (d.DateString == Utils.Today.ToString("yyyy-MM-dd") && d.TimeString.CompareTo("03:00:00") > 0) || .Where(d => (d.DateString == Utils.Today.ToString("yyyy-MM-dd") && (d.TimeString == null || d.TimeString.CompareTo("03:00:00") > 0)) ||
(d.DateString == Utils.Today.AddDays(1).ToString("yyyy-MM-dd") && d.TimeString.CompareTo("03:00:00") <= 0)); (d.DateString == Utils.Today.AddDays(1).ToString("yyyy-MM-dd") && (d.TimeString == null || d.TimeString.CompareTo("03:00:00") <= 0)));
filterNames.Add(Utils.Today.ToString("dd.MM.yyyy")); filterNames.Add(Utils.Today.ToString("dd.MM.yyyy"));
} else if (AllSeasonsInput.IsChecked == false) { } else if (AllSeasonsInput.IsChecked == false) {
deliveryQuery = deliveryQuery.Where(d => d.Year == SeasonInput.Value); deliveryQuery = deliveryQuery.Where(d => d.Year == SeasonInput.Value);
filterNames.Add(SeasonInput.Value.ToString() ?? ""); filterNames.Add(SeasonInput.Value.ToString() ?? "");
} }
deliveryQuery = deliveryQuery.OrderBy(d => d.DateString).ThenBy(d => d.TimeString); IQueryable<DeliveryPart> dpq = deliveryQuery
IQueryable<DeliveryPart> dpq = deliveryQuery.SelectMany(d => d.Parts); .SelectMany(d => d.Parts)
.OrderBy(p => p.Delivery.DateString)
.ThenBy(p => p.Delivery.TimeString)
.ThenBy(p => p.Delivery.LsNr)
.ThenBy(p => p.DPNr);
// TODO add filter for: // TODO add filter for:
// attributes // attributes
@@ -383,8 +406,8 @@ namespace Elwig.Windows {
if (filterPartDate.Count > 0) dpq = dpq.Where(p => filterPartDate.Contains(p.Delivery.DateString.Substring(4))); if (filterPartDate.Count > 0) dpq = dpq.Where(p => filterPartDate.Contains(p.Delivery.DateString.Substring(4)));
if (filterYearGt > 0) dpq = dpq.Where(p => p.Year >= filterYearGt); if (filterYearGt > 0) dpq = dpq.Where(p => p.Year >= filterYearGt);
if (filterYearLt > 0) dpq = dpq.Where(p => p.Year < filterYearLt); if (filterYearLt > 0) dpq = dpq.Where(p => p.Year < filterYearLt);
if (filterTimeGt != null) dpq = dpq.Where(p => filterTimeGt.CompareTo(p.Delivery.TimeString) <= 0); if (filterTimeGt != null) dpq = dpq.Where(p => p.Delivery.TimeString != null && filterTimeGt.CompareTo(p.Delivery.TimeString) <= 0);
if (filterTimeLt != null) dpq = dpq.Where(p => filterTimeLt.CompareTo(p.Delivery.TimeString) > 0); if (filterTimeLt != null) dpq = dpq.Where(p => p.Delivery.TimeString != null && filterTimeLt.CompareTo(p.Delivery.TimeString) > 0);
if (filterVar.Count > 0) dpq = dpq.Where(p => filterVar.Contains(p.SortId)); if (filterVar.Count > 0) dpq = dpq.Where(p => filterVar.Contains(p.SortId));
if (filterQual.Count > 0) dpq = dpq.Where(p => filterQual.Contains(p.QualId)); if (filterQual.Count > 0) dpq = dpq.Where(p => filterQual.Contains(p.QualId));
if (filterKmwGt > 0) dpq = dpq.Where(p => p.Kmw >= filterKmwGt); if (filterKmwGt > 0) dpq = dpq.Where(p => p.Kmw >= filterKmwGt);
@@ -404,14 +427,14 @@ namespace Elwig.Windows {
} else if (filterKmwGt > 0) { } else if (filterKmwGt > 0) {
filterNames.Add($"ab {filterKmwGt:N1} °KMW"); filterNames.Add($"ab {filterKmwGt:N1} °KMW");
} else if (filterKmwLt > 0) { } else if (filterKmwLt > 0) {
filterNames.Add($"bis {filterKmwLt:N1} °KMW"); filterNames.Add($"unter {filterKmwLt:N1} °KMW");
} }
if (filterOeGt > 0 && filterOeLt > 0) { if (filterOeGt > 0 && filterOeLt > 0) {
filterNames.Add($"{filterOeGt:N1}{filterOeLt:N1} °Oe"); filterNames.Add($"{filterOeGt:N1}{filterOeLt:N1} °Oe");
} else if (filterOeGt > 0) { } else if (filterOeGt > 0) {
filterNames.Add($"ab {filterOeGt:N1} °Oe"); filterNames.Add($"ab {filterOeGt:N1} °Oe");
} else if (filterOeLt > 0) { } else if (filterOeLt > 0) {
filterNames.Add($"bis {filterOeLt:N1} °Oe"); filterNames.Add($"unter {filterOeLt:N1} °Oe");
} }
if (filterTimeGt != null && filterTimeLt != null) { if (filterTimeGt != null && filterTimeLt != null) {
filterNames.Add($"{filterTimeGt}{filterTimeLt}"); filterNames.Add($"{filterTimeGt}{filterTimeLt}");
@@ -422,7 +445,7 @@ namespace Elwig.Windows {
} }
} }
return (filterNames, dpq.Select(p => p.Delivery).Distinct(), dpq, filter); return (filterNames, dpq.Select(p => p.Delivery).Distinct().OrderBy(d => d.DateString).ThenBy(d => d.TimeString), dpq, filter);
} }
private async Task RefreshDeliveryListQuery(bool updateSort = false) { private async Task RefreshDeliveryListQuery(bool updateSort = false) {
@@ -447,6 +470,7 @@ namespace Elwig.Windows {
var members = deliveries.Select(d => d.Member).DistinctBy(m => m.MgNr).ToList(); var members = deliveries.Select(d => d.Member).DistinctBy(m => m.MgNr).ToList();
StatusMembers.Text = $"Mitglieder: {members.Count}" + (members.Count > 0 && members.Count <= 4 ? $" ({string.Join(", ", members.Select(m => m.AdministrativeName))})" : ""); StatusMembers.Text = $"Mitglieder: {members.Count}" + (members.Count > 0 && members.Count <= 4 ? $" ({string.Join(", ", members.Select(m => m.AdministrativeName))})" : "");
StatusMembers.ToolTip = StatusMembers.Text;
StatusDeliveries.Text = $"Lieferungen: {deliveries.Count}"; StatusDeliveries.Text = $"Lieferungen: {deliveries.Count}";
if (filter.Count == 0) { if (filter.Count == 0) {
@@ -503,6 +527,10 @@ namespace Elwig.Windows {
StatusWeight.Text = "Gewicht: -"; StatusWeight.Text = "Gewicht: -";
StatusGradation.Text = "Gradation: -"; StatusGradation.Text = "Gradation: -";
} }
StatusVarieties.ToolTip = StatusVarieties.Text;
StatusWeight.ToolTip = StatusWeight.Text;
StatusGradation.ToolTip = StatusGradation.Text;
} }
protected override async Task OnRenewContext() { protected override async Task OnRenewContext() {
@@ -658,10 +686,10 @@ namespace Elwig.Windows {
if (deliveryNew || InputHasChanged(DateInput)) { if (deliveryNew || InputHasChanged(DateInput)) {
d.LNr = await Context.NextLNr(d.Date); d.LNr = await Context.NextLNr(d.Date);
} }
if (IsCreating) { if (IsCreating && !InputIsNotDefault(TimeInput)) {
d.TimeString = DateTime.Now.ToString("HH:mm:ss"); d.TimeString = DateTime.Now.ToString("HH:mm:ss");
} else if (InputHasChanged(TimeInput)) { } else if (IsCreating || InputHasChanged(TimeInput)) {
d.TimeString = TimeInput.Text + ":00"; d.TimeString = (TimeInput.Text != "") ? TimeInput.Text + ":00" : null;
} }
d.ZwstId = (BranchInput.SelectedItem as Branch)?.ZwstId; d.ZwstId = (BranchInput.SelectedItem as Branch)?.ZwstId;
d.LsNr = LsNrInput.Text; d.LsNr = LsNrInput.Text;
@@ -890,7 +918,7 @@ namespace Elwig.Windows {
if (App.Config.Debug) { if (App.Config.Debug) {
doc.Show(); doc.Show();
} else { } else {
doc.Print(2); await doc.Print(2);
} }
} }
FinishButton.Cursor = null; FinishButton.Cursor = null;
@@ -1111,8 +1139,8 @@ namespace Elwig.Windows {
day = day.AddDays(-1); day = day.AddDays(-1);
var lsnrs = await Context.Deliveries var lsnrs = await Context.Deliveries
.Where(d => d.ZwstId == delivery.ZwstId) .Where(d => d.ZwstId == delivery.ZwstId)
.Where(d => (d.DateString == day.ToString("yyyy-MM-dd") && d.TimeString.CompareTo("03:00:00") > 0) || .Where(d => (d.DateString == day.ToString("yyyy-MM-dd") && (d.TimeString == null || d.TimeString.CompareTo("03:00:00") > 0)) ||
(d.DateString == day.AddDays(1).ToString("yyyy-MM-dd") && d.TimeString.CompareTo("03:00:00") <= 0)) (d.DateString == day.AddDays(1).ToString("yyyy-MM-dd") && (d.TimeString == null || d.TimeString.CompareTo("03:00:00") <= 0)))
.Where(d => d.LsNr != delivery.LsNr) .Where(d => d.LsNr != delivery.LsNr)
.OrderBy(d => d.LsNr) .OrderBy(d => d.LsNr)
.Select(d => d.LsNr) .Select(d => d.LsNr)
@@ -1264,9 +1292,9 @@ namespace Elwig.Windows {
AbgewertetInput.IsEnabled = false; AbgewertetInput.IsEnabled = false;
ManualWeighingInput.IsEnabled = false; ManualWeighingInput.IsEnabled = false;
LsNrInput.IsReadOnly = true; LsNrInput.IsReadOnly = true;
DateInput.IsReadOnly = true; DateInput.IsReadOnly = !Menu_Settings_EnableFreeEditing.IsChecked;
TimeInput.IsReadOnly = true; TimeInput.IsReadOnly = !Menu_Settings_EnableFreeEditing.IsChecked;
BranchInput.IsEnabled = false; BranchInput.IsEnabled = Menu_Settings_EnableFreeEditing.IsChecked;
} }
private void DisableWeighingButtons() { private void DisableWeighingButtons() {
@@ -1290,15 +1318,25 @@ namespace Elwig.Windows {
if (DateInput.Text == "" || BranchInput.SelectedItem == null) { if (DateInput.Text == "" || BranchInput.SelectedItem == null) {
LsNrInput.Text = ""; LsNrInput.Text = "";
} else { } else {
var branch = (Branch)BranchInput.SelectedItem; try {
var date = DateOnly.ParseExact(DateInput.Text, "dd.MM.yyyy"); var branch = (Branch)BranchInput.SelectedItem;
var lnr = await Context.NextLNr(date); var date = DateOnly.ParseExact(DateInput.Text, "dd.MM.yyyy");
LsNrInput.Text = Utils.GenerateLsNr(date, branch.ZwstId, lnr); var lnr = await Context.NextLNr(date);
LsNrInput.Text = Utils.GenerateLsNr(date, branch.ZwstId, lnr);
} catch {
LsNrInput.Text = "";
}
} }
} }
private void DateInput_TextChanged(object sender, TextChangedEventArgs evt) { private void DateInput_TextChanged(object sender, TextChangedEventArgs evt) {
if (IsCreating) UpdateLsNr().GetAwaiter().GetResult(); base.DateInput_TextChanged(sender, evt);
if (IsEditing || IsCreating) UpdateLsNr().GetAwaiter().GetResult();
}
private void BranchInput_SelectionChanged(object sender, RoutedEventArgs evt) {
base.ComboBox_SelectionChanged(sender, evt);
if (IsEditing || IsCreating) UpdateLsNr().GetAwaiter().GetResult();
} }
private void UpdateWineVariety(bool valid) { private void UpdateWineVariety(bool valid) {

View File

@@ -93,9 +93,15 @@
SelectionChanged="MemberList_SelectionChanged" SelectionChanged="MemberList_SelectionChanged"
Margin="5,0,5,0" Grid.Row="1" FontSize="14" Grid.ColumnSpan="3"> Margin="5,0,5,0" Grid.Row="1" FontSize="14" Grid.ColumnSpan="3">
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="MgNr." Binding="{Binding MgNr}" Width="70"/> <DataGridTextColumn Header="MgNr." Binding="{Binding MgNr, StringFormat='{}{0} '}" Width="50">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Right"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Nachname" Binding="{Binding FamilyName}" Width="4*"/> <DataGridTextColumn Header="Nachname" Binding="{Binding FamilyName}" Width="4*"/>
<DataGridTextColumn Header="Vorname" Binding="{Binding GivenName}" Width="3*"/> <DataGridTextColumn Header="Vorname" Binding="{Binding GivenName}" Width="3*"/>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>

View File

@@ -274,22 +274,46 @@ namespace Elwig.Windows {
} }
private async void Menu_Print_Letterheads_MgNr_Click(object sender, RoutedEventArgs evt) { private async void Menu_Print_Letterheads_MgNr_Click(object sender, RoutedEventArgs evt) {
using var d = await Document.Merge(Context.Members var n = await Context.Members.CountAsync(m => m.IsActive);
.Where(m => m.IsActive) var res = MessageBox.Show(
$"Sollen wirklich {n} Seiten gedruckt werden?", "Ausdruck Bestätigen",
MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
if (res != MessageBoxResult.Yes)
return;
Mouse.OverrideCursor = Cursors.AppStarting;
using var doc = await Document.Merge(Context.Members
.Where(m => m.IsActive && m.ContactViaPost)
.OrderBy(m => m.MgNr) .OrderBy(m => m.MgNr)
.Select(m => new Letterhead(m))); .Select(m => new Letterhead(m)));
await d.Generate(); await doc.Generate();
d.Show(); Mouse.OverrideCursor = null;
if (App.Config.Debug) {
doc.Show();
} else {
await doc.Print();
}
} }
private async void Menu_Print_Letterheads_Name_Click(object sender, RoutedEventArgs evt) { private async void Menu_Print_Letterheads_Name_Click(object sender, RoutedEventArgs evt) {
using var d = await Document.Merge(Context.Members var n = await Context.Members.CountAsync(m => m.IsActive);
.Where(m => m.IsActive) var res = MessageBox.Show(
$"Sollen wirklich {n} Seiten gedruckt werden?", "Ausdruck Bestätigen",
MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
if (res != MessageBoxResult.Yes)
return;
Mouse.OverrideCursor = Cursors.AppStarting;
using var doc = await Document.Merge(Context.Members
.Where(m => m.IsActive && m.ContactViaPost)
.OrderBy(m => m.FamilyName) .OrderBy(m => m.FamilyName)
.ThenBy(m => m.GivenName) .ThenBy(m => m.GivenName)
.Select(m => new Letterhead(m))); .Select(m => new Letterhead(m)));
await d.Generate(); await doc.Generate();
d.Show(); Mouse.OverrideCursor = null;
if (App.Config.Debug) {
doc.Show();
} else {
await doc.Print();
}
} }
private void FocusSearchInput(object sender, RoutedEventArgs evt) { private void FocusSearchInput(object sender, RoutedEventArgs evt) {