DeliveryAdminWindow: Add DeliveryJournal filter options
This commit is contained in:
@ -56,24 +56,25 @@
|
|||||||
</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">
|
||||||
<MenuItem Header="Lieferung">
|
|
||||||
</MenuItem>
|
|
||||||
<MenuItem Header="Drucken">
|
<MenuItem Header="Drucken">
|
||||||
<MenuItem x:Name="Menu_Print_ShowDeliveryNote" Header="Lieferschein anzeigen" IsEnabled="False"
|
<MenuItem x:Name="Menu_Print_ShowDeliveryNote" Header="Lieferschein anzeigen" IsEnabled="False"
|
||||||
Click="Menu_Print_ShowDeliveryNote_Click"/>
|
Click="Menu_Print_ShowDeliveryNote_Click"/>
|
||||||
<MenuItem x:Name="Menu_Print_PrintDeliveryNote" Header="Lieferschein drucken" IsEnabled="False"
|
<MenuItem x:Name="Menu_Print_PrintDeliveryNote" Header="Lieferschein drucken" IsEnabled="False"
|
||||||
Click="Menu_Print_PrintDeliveryNote_Click"/>
|
Click="Menu_Print_PrintDeliveryNote_Click"/>
|
||||||
<MenuItem x:Name="Menu_Print_ShowDeliveryJournalToday" Header="Lieferjournal anzeigen (heute)"
|
<MenuItem x:Name="Menu_Print_DeliveryJournal" Header="Lieferjournal">
|
||||||
Click="Menu_Print_ShowDeliveryJournalToday_Click"/>
|
<MenuItem x:Name="Menu_Print_DeliveryJournal_ShowToday" Header="von heute anzeigen"
|
||||||
<MenuItem x:Name="Menu_Print_ShowDeliveryJournalYesterday" Header="Lieferjournal anzeigen (gestern)"
|
Click="Menu_Print_DeliveryJournal_ShowToday_Click"/>
|
||||||
Click="Menu_Print_ShowDeliveryJournalYesterday_Click"/>
|
<MenuItem x:Name="Menu_Print_DeliveryJournal_PrintToday" Header="von heute drucken"
|
||||||
|
Click="Menu_Print_DeliveryJournal_PrintToday_Click"/>
|
||||||
|
<MenuItem x:Name="Menu_Print_DeliveryJournal_ShowFilter" Header="aus Filtern anzeigen"
|
||||||
|
Click="Menu_Print_DeliveryJournal_ShowFilter_Click"/>
|
||||||
|
<MenuItem x:Name="Menu_Print_DeliveryJournal_PrintFilter" Header="aus Filtern drucken"
|
||||||
|
Click="Menu_Print_DeliveryJournal_PrintFilter_Click"/>
|
||||||
|
</MenuItem>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<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="Werkzeuge">
|
|
||||||
<MenuItem Header="Alle Lieferscheine überprüfen"/>
|
|
||||||
</MenuItem>
|
|
||||||
</Menu>
|
</Menu>
|
||||||
|
|
||||||
<Grid Grid.RowSpan="4" Grid.Row="1" Margin="5,0,5,0">
|
<Grid Grid.RowSpan="4" Grid.Row="1" Margin="5,0,5,0">
|
||||||
|
@ -111,8 +111,8 @@ namespace Elwig.Windows {
|
|||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
using var doc = new DeliveryNote(d, Context);
|
using var doc = new DeliveryNote(d, Context);
|
||||||
await doc.Generate();
|
await doc.Generate();
|
||||||
doc.Show();
|
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
|
doc.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Print_PrintDeliveryNote_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Print_PrintDeliveryNote_Click(object sender, RoutedEventArgs evt) {
|
||||||
@ -141,7 +141,7 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Print_ShowDeliveryJournalToday_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Print_DeliveryJournal_ShowToday_Click(object sender, RoutedEventArgs evt) {
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today));
|
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today));
|
||||||
await doc.Generate();
|
await doc.Generate();
|
||||||
@ -149,9 +149,27 @@ namespace Elwig.Windows {
|
|||||||
doc.Show();
|
doc.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Print_ShowDeliveryJournalYesterday_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Print_DeliveryJournal_PrintToday_Click(object sender, RoutedEventArgs evt) {
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today.AddDays(-1)));
|
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today));
|
||||||
|
await doc.Generate();
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
|
await doc.Print();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void Menu_Print_DeliveryJournal_ShowFilter_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
|
var (f, _, d, _) = await GetFilters();
|
||||||
|
var doc = new DeliveryJournal(string.Join(" / ", f), d);
|
||||||
|
await doc.Generate();
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
|
doc.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void Menu_Print_DeliveryJournal_PrintFilter_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
|
var (f, _, d, _) = await GetFilters();
|
||||||
|
var doc = new DeliveryJournal(string.Join(" / ", f), d);
|
||||||
await doc.Generate();
|
await doc.Generate();
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
doc.Show();
|
doc.Show();
|
||||||
@ -227,19 +245,28 @@ namespace Elwig.Windows {
|
|||||||
await RefreshDeliveryListQuery();
|
await RefreshDeliveryListQuery();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task RefreshDeliveryListQuery(bool updateSort = false) {
|
private async Task<(List<string>, IQueryable<Delivery>, IQueryable<DeliveryPart>, List<string>)> GetFilters() {
|
||||||
|
List<string> filterNames = new();
|
||||||
IQueryable<Delivery> deliveryQuery = Context.Deliveries;
|
IQueryable<Delivery> deliveryQuery = Context.Deliveries;
|
||||||
if (Member != null) {
|
if (Member != null) {
|
||||||
deliveryQuery = deliveryQuery.Where(d => d.MgNr == Member.MgNr);
|
deliveryQuery = deliveryQuery.Where(d => d.MgNr == Member.MgNr);
|
||||||
|
filterNames.Add(Member.AdministrativeName);
|
||||||
}
|
}
|
||||||
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.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.CompareTo("03:00:00") <= 0));
|
||||||
|
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() ?? "");
|
||||||
}
|
}
|
||||||
|
deliveryQuery = deliveryQuery.OrderBy(d => d.DateString).ThenBy(d => d.TimeString);
|
||||||
|
IQueryable<DeliveryPart> dpq = deliveryQuery.SelectMany(d => d.Parts);
|
||||||
|
|
||||||
|
// TODO add filter for:
|
||||||
|
// attributes
|
||||||
|
// branches
|
||||||
var filterVar = new List<string>();
|
var filterVar = new List<string>();
|
||||||
var filterQual = new List<string>();
|
var filterQual = new List<string>();
|
||||||
var filterMgNr = new List<int>();
|
var filterMgNr = new List<int>();
|
||||||
@ -256,21 +283,24 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
var filter = TextFilter.ToList();
|
var filter = TextFilter.ToList();
|
||||||
if (filter.Count > 0) {
|
if (filter.Count > 0) {
|
||||||
var var = await Context.WineVarieties.Select(v => v.SortId).ToListAsync();
|
var var = await Context.WineVarieties.ToDictionaryAsync(v => v.SortId, v => v);
|
||||||
var qual = await Context.WineQualityLevels.Select(q => q.QualId).ToListAsync();
|
var qual = await Context.WineQualityLevels.ToDictionaryAsync(q => q.QualId, q => q);
|
||||||
var mgnr = await Context.Members.Select(m => m.MgNr.ToString()).ToListAsync();
|
var mgnr = await Context.Members.ToDictionaryAsync(m => m.MgNr.ToString(), m => m);
|
||||||
|
|
||||||
for (int i = 0; i < filter.Count; i++) {
|
for (int i = 0; i < filter.Count; i++) {
|
||||||
var e = filter[i];
|
var e = filter[i];
|
||||||
if (e.Length == 2 && var.Contains(e.ToUpper())) {
|
if (e.Length == 2 && var.ContainsKey(e.ToUpper())) {
|
||||||
filterVar.Add(e.ToUpper());
|
filterVar.Add(e.ToUpper());
|
||||||
filter.RemoveAt(i--);
|
filter.RemoveAt(i--);
|
||||||
} else if (e.Length == 3 && qual.Contains(e.ToUpper())) {
|
filterNames.Add(var[e.ToUpper()].Name);
|
||||||
|
} else if (e.Length == 3 && qual.ContainsKey(e.ToUpper())) {
|
||||||
filterQual.Add(e.ToUpper());
|
filterQual.Add(e.ToUpper());
|
||||||
filter.RemoveAt(i--);
|
filter.RemoveAt(i--);
|
||||||
} else if (e.All(char.IsAsciiDigit) && mgnr.Contains(e)) {
|
filterNames.Add(qual[e.ToUpper()].Name);
|
||||||
|
} else if (e.All(char.IsAsciiDigit) && mgnr.ContainsKey(e)) {
|
||||||
filterMgNr.Add(int.Parse(e));
|
filterMgNr.Add(int.Parse(e));
|
||||||
filter.RemoveAt(i--);
|
filter.RemoveAt(i--);
|
||||||
|
filterNames.Add(mgnr[e].AdministrativeName);
|
||||||
} else if (e.StartsWith(">") || e.StartsWith("<")) {
|
} else if (e.StartsWith(">") || e.StartsWith("<")) {
|
||||||
if (double.TryParse(e[1..], out var num)) {
|
if (double.TryParse(e[1..], out var num)) {
|
||||||
switch ((e[0], num)) {
|
switch ((e[0], num)) {
|
||||||
@ -319,12 +349,23 @@ namespace Elwig.Windows {
|
|||||||
filterTimeLt = TimeOnly.TryParse(parts[1], out var to) ? $"{to:HH:mm}" : null;
|
filterTimeLt = TimeOnly.TryParse(parts[1], out var to) ? $"{to:HH:mm}" : null;
|
||||||
filter.RemoveAt(i--);
|
filter.RemoveAt(i--);
|
||||||
} else if (DateOnly.TryParse(e, out var date)) {
|
} else if (DateOnly.TryParse(e, out var date)) {
|
||||||
filterDate.Add($"{date:yyyy-MM-dd}");
|
// TODO allow date ranges
|
||||||
|
filterDate.Add(date.ToString("yyyy-MM-dd"));
|
||||||
filter.RemoveAt(i--);
|
filter.RemoveAt(i--);
|
||||||
|
filterNames.Add(date.ToString("dd.MM.yyyy"));
|
||||||
} else if (Utils.PartialDateRegex.IsMatch(e)) {
|
} else if (Utils.PartialDateRegex.IsMatch(e)) {
|
||||||
|
// TODO allow date ranges
|
||||||
var parts = e.Split(".");
|
var parts = e.Split(".");
|
||||||
filterPartDate.Add($"-{int.Parse(parts[1]):00}-{int.Parse(parts[0]):00}");
|
var p0 = int.Parse(parts[0]);
|
||||||
|
var p1 = int.Parse(parts[1]);
|
||||||
|
filterPartDate.Add($"-{p1:00}-{p0:00}");
|
||||||
filter.RemoveAt(i--);
|
filter.RemoveAt(i--);
|
||||||
|
if (filterNames.Contains(SeasonInput.Value.ToString())) {
|
||||||
|
filterNames.Remove(SeasonInput.Value.ToString());
|
||||||
|
filterNames.Add($"{p0:00}.{p1:00}.{SeasonInput.Value:0000}");
|
||||||
|
} else {
|
||||||
|
filterNames.Add($"{p0:00}.{p1:00}.");
|
||||||
|
}
|
||||||
} else if (e.Length > 2 && e.StartsWith("\"") && e.EndsWith("\"")) {
|
} else if (e.Length > 2 && e.StartsWith("\"") && e.EndsWith("\"")) {
|
||||||
filter[i] = e[1..^1];
|
filter[i] = e[1..^1];
|
||||||
} else if (e.Length <= 2) {
|
} else if (e.Length <= 2) {
|
||||||
@ -332,22 +373,58 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filterMgNr.Count > 0) deliveryQuery = deliveryQuery.Where(d => filterMgNr.Contains(d.MgNr));
|
if (filterMgNr.Count > 0) dpq = dpq.Where(p => filterMgNr.Contains(p.Delivery.MgNr));
|
||||||
if (filterDate.Count > 0) deliveryQuery = deliveryQuery.Where(d => filterDate.Contains(d.DateString));
|
if (filterDate.Count > 0) dpq = dpq.Where(p => filterDate.Contains(p.Delivery.DateString));
|
||||||
if (filterPartDate.Count > 0) deliveryQuery = deliveryQuery.Where(d => filterPartDate.Contains(d.DateString.Substring(4)));
|
if (filterPartDate.Count > 0) dpq = dpq.Where(p => filterPartDate.Contains(p.Delivery.DateString.Substring(4)));
|
||||||
if (filterYearGt > 0) deliveryQuery = deliveryQuery.Where(d => d.Year >= filterYearGt);
|
if (filterYearGt > 0) dpq = dpq.Where(p => p.Year >= filterYearGt);
|
||||||
if (filterYearLt > 0) deliveryQuery = deliveryQuery.Where(d => d.Year < filterYearLt);
|
if (filterYearLt > 0) dpq = dpq.Where(p => p.Year < filterYearLt);
|
||||||
if (filterTimeGt != null) deliveryQuery = deliveryQuery.Where(d => filterTimeGt.CompareTo(d.TimeString) <= 0);
|
if (filterTimeGt != null) dpq = dpq.Where(p => filterTimeGt.CompareTo(p.Delivery.TimeString) <= 0);
|
||||||
if (filterTimeLt != null) deliveryQuery = deliveryQuery.Where(d => filterTimeLt.CompareTo(d.TimeString) > 0);
|
if (filterTimeLt != null) dpq = dpq.Where(p => filterTimeLt.CompareTo(p.Delivery.TimeString) > 0);
|
||||||
if (filterVar.Count > 0) deliveryQuery = deliveryQuery.Where(d => d.Parts.Any(p => filterVar.Contains(p.SortId)));
|
if (filterVar.Count > 0) dpq = dpq.Where(p => filterVar.Contains(p.SortId));
|
||||||
if (filterQual.Count > 0) deliveryQuery = deliveryQuery.Where(d => d.Parts.Any(p => filterQual.Contains(p.QualId)));
|
if (filterQual.Count > 0) dpq = dpq.Where(p => filterQual.Contains(p.QualId));
|
||||||
if (filterKmwGt > 0) deliveryQuery = deliveryQuery.Where(d => d.Parts.Any(p => p.Kmw >= filterKmwGt));
|
if (filterKmwGt > 0) dpq = dpq.Where(p => p.Kmw >= filterKmwGt);
|
||||||
if (filterKmwLt > 0) deliveryQuery = deliveryQuery.Where(d => d.Parts.Any(p => p.Kmw < filterKmwLt));
|
if (filterKmwLt > 0) dpq = dpq.Where(p => p.Kmw < filterKmwLt);
|
||||||
if (filterOeGt > 0) deliveryQuery = deliveryQuery.Where(d => d.Parts.Any(p => p.Kmw * (4.54 + 0.022 * p.Kmw) >= filterOeGt));
|
if (filterOeGt > 0) dpq = dpq.Where(p => p.Kmw * (4.54 + 0.022 * p.Kmw) >= filterOeGt);
|
||||||
if (filterOeLt > 0) deliveryQuery = deliveryQuery.Where(d => d.Parts.Any(p => p.Kmw * (4.54 + 0.022 * p.Kmw) < filterOeLt));
|
if (filterOeLt > 0) dpq = dpq.Where(p => p.Kmw * (4.54 + 0.022 * p.Kmw) < filterOeLt);
|
||||||
|
|
||||||
|
if (filterYearGt > 0 && filterYearLt > 0) {
|
||||||
|
filterNames.Insert(0, $"{filterYearGt}–{filterYearLt - 1}");
|
||||||
|
} else if (filterYearGt > 0) {
|
||||||
|
filterNames.Insert(0, $"ab {filterYearGt}");
|
||||||
|
} else if (filterYearLt > 0) {
|
||||||
|
filterNames.Insert(0, $"bis {filterYearLt - 1}");
|
||||||
|
}
|
||||||
|
if (filterKmwGt > 0 && filterKmwLt > 0) {
|
||||||
|
filterNames.Add($"{filterKmwGt:N1}–{filterKmwLt:N1} °KMW");
|
||||||
|
} else if (filterKmwGt > 0) {
|
||||||
|
filterNames.Add($"ab {filterKmwGt:N1} °KMW");
|
||||||
|
} else if (filterKmwLt > 0) {
|
||||||
|
filterNames.Add($"bis {filterKmwLt:N1} °KMW");
|
||||||
|
}
|
||||||
|
if (filterOeGt > 0 && filterOeLt > 0) {
|
||||||
|
filterNames.Add($"{filterOeGt:N1}–{filterOeLt:N1} °Oe");
|
||||||
|
} else if (filterOeGt > 0) {
|
||||||
|
filterNames.Add($"ab {filterOeGt:N1} °Oe");
|
||||||
|
} else if (filterOeLt > 0) {
|
||||||
|
filterNames.Add($"bis {filterOeLt:N1} °Oe");
|
||||||
|
}
|
||||||
|
if (filterTimeGt != null && filterTimeLt != null) {
|
||||||
|
filterNames.Add($"{filterTimeGt}–{filterTimeLt}");
|
||||||
|
} else if (filterTimeGt != null) {
|
||||||
|
filterNames.Add($"ab {filterTimeGt}");
|
||||||
|
} else if (filterTimeLt != null) {
|
||||||
|
filterNames.Add($"bis {filterTimeLt}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Delivery> deliveries = await deliveryQuery.OrderByDescending(d => d.DateString).ThenByDescending(d => d.TimeString).ToListAsync();
|
return (filterNames, dpq.Select(p => p.Delivery).Distinct(), dpq, filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task RefreshDeliveryListQuery(bool updateSort = false) {
|
||||||
|
var (_, deliveryQuery, deliveryPartsQuery, filter) = await GetFilters();
|
||||||
|
var deliveries = await deliveryQuery.ToListAsync();
|
||||||
|
deliveries.Reverse();
|
||||||
|
|
||||||
if (filter.Count > 0 && deliveries.Count > 0) {
|
if (filter.Count > 0 && deliveries.Count > 0) {
|
||||||
var dict = deliveries.AsParallel()
|
var dict = deliveries.AsParallel()
|
||||||
.ToDictionary(d => d, d => d.SearchScore(TextFilter))
|
.ToDictionary(d => d, d => d.SearchScore(TextFilter))
|
||||||
@ -368,15 +445,7 @@ namespace Elwig.Windows {
|
|||||||
StatusDeliveries.Text = $"Lieferungen: {deliveries.Count}";
|
StatusDeliveries.Text = $"Lieferungen: {deliveries.Count}";
|
||||||
|
|
||||||
if (filter.Count == 0) {
|
if (filter.Count == 0) {
|
||||||
var partsQuery = deliveryQuery.SelectMany(d => d.Parts);
|
var deliveryParts = deliveryPartsQuery;
|
||||||
if (filterVar.Count > 0) partsQuery = partsQuery.Where(p => filterVar.Contains(p.SortId));
|
|
||||||
if (filterQual.Count > 0) partsQuery = partsQuery.Where(p => filterQual.Contains(p.QualId));
|
|
||||||
if (filterKmwGt > 0) partsQuery = partsQuery.Where(p => p.Kmw >= filterKmwGt);
|
|
||||||
if (filterKmwLt > 0) partsQuery = partsQuery.Where(p => p.Kmw < filterKmwLt);
|
|
||||||
if (filterOeGt > 0) partsQuery = partsQuery.Where(p => p.Kmw * (4.54 + 0.022 * p.Kmw) >= filterOeGt);
|
|
||||||
if (filterOeLt > 0) partsQuery = partsQuery.Where(p => p.Kmw * (4.54 + 0.022 * p.Kmw) < filterOeLt);
|
|
||||||
var deliveryParts = partsQuery;
|
|
||||||
|
|
||||||
var n = await deliveryParts.CountAsync();
|
var n = await deliveryParts.CountAsync();
|
||||||
StatusDeliveries.Text = $"Lieferungen: {deliveries.Count} ({n})";
|
StatusDeliveries.Text = $"Lieferungen: {deliveries.Count} ({n})";
|
||||||
var varieties = await deliveryParts.Select(d => d.SortId).Distinct().ToListAsync();
|
var varieties = await deliveryParts.Select(d => d.SortId).Distinct().ToListAsync();
|
||||||
@ -394,9 +463,8 @@ namespace Elwig.Windows {
|
|||||||
StatusGradation.Text = "Gradation: -";
|
StatusGradation.Text = "Gradation: -";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (n > 0 && (n <= 200 || TodayOnlyInput.IsChecked == true)) {
|
if (n > 0 && (n <= 200 || TodayOnlyInput.IsChecked == true)) {
|
||||||
var parts = (await deliveryParts.ToListAsync());
|
var parts = await deliveryParts.ToListAsync();
|
||||||
var groups = parts
|
var groups = parts
|
||||||
.GroupBy(p => string.Join("/", p.Attributes.Select(a => a.Name)))
|
.GroupBy(p => string.Join("/", p.Attributes.Select(a => a.Name)))
|
||||||
.Select(g => (g.Key, g.Sum(p => p.Weight), g.Min(p => p.Kmw), Utils.AggregateDeliveryPartsKmw(g), g.Max(p => p.Kmw)))
|
.Select(g => (g.Key, g.Sum(p => p.Weight), g.Min(p => p.Kmw), Utils.AggregateDeliveryPartsKmw(g), g.Max(p => p.Kmw)))
|
||||||
@ -790,7 +858,7 @@ namespace Elwig.Windows {
|
|||||||
NewDeliveryPartButton.Cursor = Cursors.Wait;
|
NewDeliveryPartButton.Cursor = Cursors.Wait;
|
||||||
DeliveryPartList.IsEnabled = false;
|
DeliveryPartList.IsEnabled = false;
|
||||||
var p = await UpdateDeliveryPart(DeliveryList.SelectedItem as Delivery, DeliveryPartList.SelectedItem as DeliveryPart);
|
var p = await UpdateDeliveryPart(DeliveryList.SelectedItem as Delivery, DeliveryPartList.SelectedItem as DeliveryPart);
|
||||||
EmptyScale();
|
EmptyScale();
|
||||||
await RefreshDeliveryList();
|
await RefreshDeliveryList();
|
||||||
await RefreshDeliveryParts();
|
await RefreshDeliveryParts();
|
||||||
NewDeliveryPartButton.Cursor = null;
|
NewDeliveryPartButton.Cursor = null;
|
||||||
@ -806,8 +874,8 @@ namespace Elwig.Windows {
|
|||||||
FinishButton.Cursor = Cursors.Wait;
|
FinishButton.Cursor = Cursors.Wait;
|
||||||
DeliveryPartList.IsEnabled = false;
|
DeliveryPartList.IsEnabled = false;
|
||||||
var p = await UpdateDeliveryPart(DeliveryList.SelectedItem as Delivery, DeliveryPartList.SelectedItem as DeliveryPart);
|
var p = await UpdateDeliveryPart(DeliveryList.SelectedItem as Delivery, DeliveryPartList.SelectedItem as DeliveryPart);
|
||||||
EmptyScale();
|
EmptyScale();
|
||||||
await RefreshDeliveryList();
|
await RefreshDeliveryList();
|
||||||
await RefreshDeliveryParts();
|
await RefreshDeliveryParts();
|
||||||
if (p?.Delivery != null) {
|
if (p?.Delivery != null) {
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
|
Reference in New Issue
Block a user