DeliveryAncmtAdminWindow: Add option to search in all delivery schedules and init mgnr with selected
All checks were successful
Test / Run tests (push) Successful in 2m2s

This commit is contained in:
2024-09-04 18:02:50 +02:00
parent a04c7d538e
commit a5638135a3
4 changed files with 27 additions and 7 deletions

View File

@ -46,7 +46,7 @@ namespace Elwig.Services {
deliveryAncmtQuery = deliveryAncmtQuery.Where(a => a.Year == s.Year && a.DsNr == s.DsNr); deliveryAncmtQuery = deliveryAncmtQuery.Where(a => a.Year == s.Year && a.DsNr == s.DsNr);
filterNames.Add($"{s.Date:dd.MM.yyyy} {s.Branch.Name} {s.Description}"); filterNames.Add($"{s.Date:dd.MM.yyyy} {s.Branch.Name} {s.Description}");
} else { } else {
deliveryAncmtQuery = deliveryAncmtQuery.Where(a => a.Year == vm.FilterSeason); deliveryAncmtQuery = deliveryAncmtQuery.Where(a => a.Year == vm.FilterSeason && (!vm.FilterOnlyUpcoming || a.Schedule.DateString.CompareTo(Utils.Today.ToString("yyyy-MM-dd")) >= 0));
filterNames.Add($"{vm.FilterSeason}"); filterNames.Add($"{vm.FilterSeason}");
} }

View File

@ -14,6 +14,8 @@ namespace Elwig.ViewModels {
[ObservableProperty] [ObservableProperty]
private bool _filterOnlyUpcoming; private bool _filterOnlyUpcoming;
[ObservableProperty] [ObservableProperty]
private bool _filterFromAllSchedules;
[ObservableProperty]
private string? _filterSeasonString; private string? _filterSeasonString;
public int? FilterSeason { public int? FilterSeason {
get => int.TryParse(FilterSeasonString, out var year) ? year : null; get => int.TryParse(FilterSeasonString, out var year) ? year : null;

View File

@ -81,7 +81,7 @@
<Grid Grid.Row="1" Margin="5,0,0,0"> <Grid Grid.Row="1" Margin="5,0,0,0">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="35"/> <RowDefinition Height="42"/>
<RowDefinition Height="1*" MinHeight="100"/> <RowDefinition Height="1*" MinHeight="100"/>
<RowDefinition Height="5"/> <RowDefinition Height="5"/>
<RowDefinition Height="2*" MinHeight="100"/> <RowDefinition Height="2*" MinHeight="100"/>
@ -94,7 +94,7 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBox x:Name="SearchInput" Text="{Binding SearchQuery, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding EnableSearchInputs}" <TextBox x:Name="SearchInput" Text="{Binding SearchQuery, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding EnableSearchInputs}"
Grid.ColumnSpan="3" Margin="5,5,174,0" IsReadOnly="False" Grid.ColumnSpan="3" Margin="5,10,174,0" IsReadOnly="False"
TextChanged="SearchInput_TextChanged"> TextChanged="SearchInput_TextChanged">
<TextBox.ToolTip> <TextBox.ToolTip>
<TextBlock> <TextBlock>
@ -111,11 +111,14 @@
</TextBox> </TextBox>
<ctrl:IntegerUpDown x:Name="SeasonInput" Text="{Binding FilterSeasonString, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding EnableSearchInputs}" <ctrl:IntegerUpDown x:Name="SeasonInput" Text="{Binding FilterSeasonString, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding EnableSearchInputs}"
Grid.ColumnSpan="3" Height="25" Width="56" FontSize="14" Minimum="1900" Maximum="9999" Grid.ColumnSpan="3" Height="25" Width="56" FontSize="14" Minimum="1900" Maximum="9999"
Margin="5,5,113,0" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="5,10,113,0" VerticalAlignment="Top" HorizontalAlignment="Right"
TextChanged="SeasonInput_TextChanged"/> TextChanged="SeasonInput_TextChanged"/>
<CheckBox x:Name="OnlyUpcomingInput" Content="Nur zukünftige" IsChecked="{Binding FilterOnlyUpcoming, Mode=TwoWay}" IsEnabled="{Binding EnableSearchInputs}" <CheckBox x:Name="OnlyUpcomingInput" Content="Nur zukünftige" IsChecked="{Binding FilterOnlyUpcoming, Mode=TwoWay}" IsEnabled="{Binding EnableSearchInputs}"
HorizontalAlignment="Right" Margin="0,10,10,0" VerticalAlignment="Top" Grid.Column="0" Grid.ColumnSpan="3" HorizontalAlignment="Right" Margin="0,7,10,0" VerticalAlignment="Top" Grid.Column="0" Grid.ColumnSpan="3"
Checked="OnlyUpcomingInput_Changed" Unchecked="OnlyUpcomingInput_Changed"/> Checked="OnlyUpcomingInput_Changed" Unchecked="OnlyUpcomingInput_Changed"/>
<CheckBox x:Name="FromAllSchedulesInput" Content="Alle Lesepläne" IsChecked="{Binding FilterFromAllSchedules, Mode=TwoWay}" IsEnabled="{Binding EnableSearchInputs}"
HorizontalAlignment="Right" Margin="0,24,13.5,0" VerticalAlignment="Top" Grid.Column="0" Grid.ColumnSpan="3"
Checked="FromAllSchedulesInput_Changed" Unchecked="FromAllSchedulesInput_Changed"/>
<ListBox x:Name="DeliveryScheduleList" SelectedItem="{Binding SelectedDeliverySchedule, Mode=TwoWay}" ItemsSource="{Binding DeliverySchedules, Mode=TwoWay}" <ListBox x:Name="DeliveryScheduleList" SelectedItem="{Binding SelectedDeliverySchedule, Mode=TwoWay}" ItemsSource="{Binding DeliverySchedules, Mode=TwoWay}"
Grid.Row="1" Grid.ColumnSpan="3" Margin="5,0,5,5" VerticalAlignment="Stretch" IsEnabled="{Binding EnableSearchInputs}" Grid.Row="1" Grid.ColumnSpan="3" Margin="5,0,5,5" VerticalAlignment="Stretch" IsEnabled="{Binding EnableSearchInputs}"

View File

@ -25,7 +25,7 @@ namespace Elwig.Windows {
CommandBindings.Add(new CommandBinding(CtrlP, Menu_DeliveryAncmtList_ShowSelected_Click)); CommandBindings.Add(new CommandBinding(CtrlP, Menu_DeliveryAncmtList_ShowSelected_Click));
CommandBindings.Add(new CommandBinding(CtrlShiftP, Menu_DeliveryAncmtList_PrintSelected_Click)); CommandBindings.Add(new CommandBinding(CtrlShiftP, Menu_DeliveryAncmtList_PrintSelected_Click));
ExemptInputs = [ ExemptInputs = [
SearchInput, SeasonInput, OnlyUpcomingInput, DeliveryScheduleList, DeliveryAncmtList, SearchInput, SeasonInput, OnlyUpcomingInput, FromAllSchedulesInput, DeliveryScheduleList, DeliveryAncmtList,
]; ];
RequiredInputs = [ RequiredInputs = [
MgNrInput, MemberInput, DeliveryScheduleInput, SortIdInput, WineVarietyInput, WeightInput, MgNrInput, MemberInput, DeliveryScheduleInput, SortIdInput, WineVarietyInput, WeightInput,
@ -93,7 +93,7 @@ namespace Elwig.Windows {
.ToListAsync(); .ToListAsync();
ControlUtils.RenewItemsSource(DeliveryScheduleList, deliverySchedules ControlUtils.RenewItemsSource(DeliveryScheduleList, deliverySchedules
.Where(s => !ViewModel.FilterOnlyUpcoming || s.DateString.CompareTo(Utils.Today.ToString("yyyy-MM-dd")) >= 0) .Where(s => !ViewModel.FilterOnlyUpcoming || s.DateString.CompareTo(Utils.Today.ToString("yyyy-MM-dd")) >= 0)
.ToList(), DeliveryScheduleList_SelectionChanged, ControlUtils.RenewSourceDefault.First); .ToList(), DeliveryScheduleList_SelectionChanged, ViewModel.FilterFromAllSchedules ? ControlUtils.RenewSourceDefault.None : ControlUtils.RenewSourceDefault.First);
ControlUtils.RenewItemsSource(DeliveryScheduleInput, deliverySchedules, DeliveryScheduleInput_SelectionChanged); ControlUtils.RenewItemsSource(DeliveryScheduleInput, deliverySchedules, DeliveryScheduleInput_SelectionChanged);
} }
@ -187,11 +187,13 @@ namespace Elwig.Windows {
Menu_DeliveryAncmtList_ShowSelected.IsEnabled = !IsEditing && !IsCreating; Menu_DeliveryAncmtList_ShowSelected.IsEnabled = !IsEditing && !IsCreating;
Menu_DeliveryAncmtList_SavePdfSelected.IsEnabled = !IsEditing && !IsCreating; Menu_DeliveryAncmtList_SavePdfSelected.IsEnabled = !IsEditing && !IsCreating;
Menu_DeliveryAncmtList_PrintSelected.IsEnabled = !IsEditing && !IsCreating; Menu_DeliveryAncmtList_PrintSelected.IsEnabled = !IsEditing && !IsCreating;
ViewModel.FilterFromAllSchedules = false;
} else { } else {
Menu_DeliveryAncmtList_SaveSelected.IsEnabled = false; Menu_DeliveryAncmtList_SaveSelected.IsEnabled = false;
Menu_DeliveryAncmtList_ShowSelected.IsEnabled = false; Menu_DeliveryAncmtList_ShowSelected.IsEnabled = false;
Menu_DeliveryAncmtList_SavePdfSelected.IsEnabled = false; Menu_DeliveryAncmtList_SavePdfSelected.IsEnabled = false;
Menu_DeliveryAncmtList_PrintSelected.IsEnabled = false; Menu_DeliveryAncmtList_PrintSelected.IsEnabled = false;
ViewModel.FilterFromAllSchedules = true;
} }
} }
@ -201,6 +203,16 @@ namespace Elwig.Windows {
private async void OnlyUpcomingInput_Changed(object sender, RoutedEventArgs evt) { private async void OnlyUpcomingInput_Changed(object sender, RoutedEventArgs evt) {
await RefreshDeliveryScheduleList(); await RefreshDeliveryScheduleList();
await RefreshList(true);
}
private async void FromAllSchedulesInput_Changed(object sender, RoutedEventArgs evt) {
if (ViewModel.FilterFromAllSchedules) {
DeliveryScheduleList.SelectedItem = null;
} else if (DeliveryScheduleList.SelectedItem == null) {
ViewModel.FilterFromAllSchedules = true;
}
await RefreshList(true);
} }
private async void SearchInput_TextChanged(object sender, TextChangedEventArgs evt) { private async void SearchInput_TextChanged(object sender, TextChangedEventArgs evt) {
@ -243,6 +255,7 @@ namespace Elwig.Windows {
private async void NewDeliveryAncmtButton_Click(object? sender, RoutedEventArgs? evt) { private async void NewDeliveryAncmtButton_Click(object? sender, RoutedEventArgs? evt) {
IsCreating = true; IsCreating = true;
DeliveryAncmtList.IsEnabled = false; DeliveryAncmtList.IsEnabled = false;
var mgnr = ViewModel.MgNr;
ViewModel.SelectedDeliveryAncmt = null; ViewModel.SelectedDeliveryAncmt = null;
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
@ -259,6 +272,7 @@ namespace Elwig.Windows {
ShowSaveResetCancelButtons(); ShowSaveResetCancelButtons();
UnlockInputs(); UnlockInputs();
InitInputs(); InitInputs();
ViewModel.MgNr = mgnr;
ViewModel.EnableSearchInputs = false; ViewModel.EnableSearchInputs = false;
} }
@ -337,6 +351,7 @@ namespace Elwig.Windows {
await RefreshList(); await RefreshList();
await RefreshInputs(); await RefreshInputs();
ViewModel.SearchQuery = ""; ViewModel.SearchQuery = "";
ControlUtils.SelectItemWithPk(DeliveryScheduleList, year, dsnr);
if (sortid != null) if (sortid != null)
ControlUtils.SelectItemWithPk(DeliveryAncmtList, year, dsnr, mgnr, sortid); ControlUtils.SelectItemWithPk(DeliveryAncmtList, year, dsnr, mgnr, sortid);
} }