Compare commits
14 Commits
0e17aa5408
...
v0.3.5
| Author | SHA1 | Date | |
|---|---|---|---|
| b79ba14f9e | |||
| de298ffef1 | |||
| eaf7b6bd41 | |||
| 2bb8205da0 | |||
| f623aa1fee | |||
| 00e7eeb774 | |||
| 47d51ded51 | |||
| 532bb826e1 | |||
| 8193bf483c | |||
| 34dcaf26d9 | |||
| 7411f570ee | |||
| 52702f3fa2 | |||
| 7f3573cede | |||
| 72359dc8be |
@@ -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}";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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,7 +189,21 @@
|
|||||||
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.Row="1" Grid.Column="2">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="0.625*"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<GroupBox Header="Mitglied" Grid.Column="0" Grid.Row="0" Margin="5,5,5,5">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="70"/>
|
<ColumnDefinition Width="70"/>
|
||||||
@@ -176,7 +223,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
<GroupBox Header="Lieferung" Grid.Column="1" Grid.Row="2" Margin="5,5,5,5">
|
<GroupBox Header="Lieferung" Grid.Column="0" Grid.Row="1" Margin="5,5,5,5">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="100"/>
|
<ColumnDefinition Width="100"/>
|
||||||
@@ -185,18 +232,21 @@
|
|||||||
|
|
||||||
<Label Content="LieferscheinNr.:" Margin="10,10,0,0" Grid.Column="0"/>
|
<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"
|
<TextBox x:Name="LsNrInput" Width="126" Grid.Column="1" HorizontalAlignment="Left" Margin="0,10,0,0"
|
||||||
IsReadOnly="True" IsTabStop="False"/>
|
IsReadOnly="True" IsTabStop="False"
|
||||||
|
TextChanged="TextBox_TextChanged"/>
|
||||||
|
|
||||||
<Label Content="Datum/Uhrzeit:" Margin="10,40,0,0" Grid.Column="0"/>
|
<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"
|
<TextBox x:Name="DateInput" Width="77" Grid.Column="1" HorizontalAlignment="Left" Margin="0,40,0,0"
|
||||||
IsReadOnly="True" IsTabStop="False"
|
IsReadOnly="True"
|
||||||
TextChanged="DateInput_TextChanged"/>
|
TextChanged="DateInput_TextChanged" LostFocus="DateInput_LostFocus"/>
|
||||||
<TextBox x:Name="TimeInput" Width="44" Grid.Column="1" HorizontalAlignment="Left" Margin="82,40,0,0"
|
<TextBox x:Name="TimeInput" Width="44" Grid.Column="1" HorizontalAlignment="Left" Margin="82,40,0,0"
|
||||||
IsReadOnly="True" IsTabStop="False"/>
|
IsReadOnly="True"
|
||||||
|
TextChanged="TimeInput_TextChanged" LostFocus="TimeInput_LostFocus"/>
|
||||||
|
|
||||||
<Label Content="Zweigstelle:" Margin="10,70,0,0" Grid.Column="0"/>
|
<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"
|
<ComboBox x:Name="BranchInput" Width="126" Margin="0,70,10,0" Grid.Column="1" HorizontalAlignment="Left"
|
||||||
IsEnabled="False"
|
IsEnabled="False"
|
||||||
|
SelectionChanged="BranchInput_SelectionChanged"
|
||||||
DisplayMemberPath="Name" TextSearch.TextPath="Name"/>
|
DisplayMemberPath="Name" TextSearch.TextPath="Name"/>
|
||||||
|
|
||||||
<Label Content="Anmerkung:" Margin="10,100,0,10"/>
|
<Label Content="Anmerkung:" Margin="10,100,0,10"/>
|
||||||
@@ -205,7 +255,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
<GroupBox Header="Sorte" Grid.Column="2" Grid.Row="1" Margin="5,5,5,5">
|
<GroupBox Header="Sorte" Grid.Column="1" Grid.Row="0" Margin="5,5,5,5">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="70"/>
|
<ColumnDefinition Width="70"/>
|
||||||
@@ -226,7 +276,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
<GroupBox Header="Gradation" Grid.Column="2" Grid.Row="2" Margin="5,5,5,5">
|
<GroupBox Header="Gradation" Grid.Column="1" Grid.Row="1" Margin="5,5,5,5">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="100"/>
|
<ColumnDefinition Width="100"/>
|
||||||
@@ -255,7 +305,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
<GroupBox Header="Gewicht" Grid.Column="2" Grid.Row="3" Margin="5,5,5,5">
|
<GroupBox Header="Gewicht" Grid.Column="1" Grid.Row="2" Margin="5,5,5,5">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="70"/>
|
<ColumnDefinition Width="70"/>
|
||||||
@@ -295,7 +345,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
<GroupBox Header="Sonstiges" Grid.Column="2" Grid.Row="4" Margin="5,5,5,10">
|
<GroupBox Header="Sonstiges" Grid.Column="1" Grid.Row="3" Margin="5,5,5,10">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="100"/>
|
<ColumnDefinition Width="100"/>
|
||||||
@@ -335,7 +385,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
<GroupBox Header="Teillieferungen" Grid.Column="1" Grid.Row="3" Margin="5,5,5,5">
|
<GroupBox Header="Teillieferungen" Grid.Column="0" Grid.Row="2" Margin="5,5,5,5">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition/>
|
<ColumnDefinition/>
|
||||||
@@ -366,7 +416,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
<GroupBox Header="Herkunft" Grid.Column="1" Grid.Row="4" Margin="5,5,5,10">
|
<GroupBox Header="Herkunft" Grid.Column="0" Grid.Row="3" Margin="5,5,5,10">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="100"/>
|
<ColumnDefinition Width="100"/>
|
||||||
@@ -387,6 +437,7 @@
|
|||||||
DisplayMemberPath="Name"/>
|
DisplayMemberPath="Name"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</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>
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
try {
|
||||||
var branch = (Branch)BranchInput.SelectedItem;
|
var branch = (Branch)BranchInput.SelectedItem;
|
||||||
var date = DateOnly.ParseExact(DateInput.Text, "dd.MM.yyyy");
|
var date = DateOnly.ParseExact(DateInput.Text, "dd.MM.yyyy");
|
||||||
var lnr = await Context.NextLNr(date);
|
var lnr = await Context.NextLNr(date);
|
||||||
LsNrInput.Text = Utils.GenerateLsNr(date, branch.ZwstId, lnr);
|
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) {
|
||||||
|
|||||||
@@ -93,7 +93,13 @@
|
|||||||
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>
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user