diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml b/Elwig/Windows/DeliveryAdminWindow.xaml
index ed4d850..8b30e31 100644
--- a/Elwig/Windows/DeliveryAdminWindow.xaml
+++ b/Elwig/Windows/DeliveryAdminWindow.xaml
@@ -100,7 +100,7 @@
Filtern nach:
Sorte: z.B. GV, ZW, rr, sa, !gv (ausgenommen GV), ...
- Qualitätsstufe: z.B. QUW, kab, ldw, ...
+ Qualitätsstufe: z.B. QUW, kab, !ldw (ausgenommen LDW), ...
Gradation: z.B. >73, <15, 17-18, 15-, >17,5, 62-75, ...
Mitglied: z.B. 1234, 987, ...
Saison: z.B. 2020, >2015, 2017-2019, <2005, 2019-, ...
diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs
index bfd0cd3..5c7c78f 100644
--- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs
+++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs
@@ -326,6 +326,7 @@ namespace Elwig.Windows {
var filterVar = new List();
var filterNotVar = new List();
var filterQual = new List();
+ var filterNotQual = new List();
var filterMgNr = new List();
var filterZwst = new List();
var filterAttr = new List();
@@ -358,6 +359,10 @@ namespace Elwig.Windows {
filterQual.Add(e.ToUpper());
filter.RemoveAt(i--);
filterNames.Add(qual[e.ToUpper()].Name);
+ } else if (e[0] == '!' && qual.ContainsKey(e[1..].ToUpper())) {
+ filterNotQual.Add(e[1..].ToUpper());
+ filter.RemoveAt(i--);
+ filterNames.Add("außer " + qual[e[1..].ToUpper()].Name);
} else if (e.All(char.IsAsciiDigit) && mgnr.TryGetValue(e, out var member)) {
filterMgNr.Add(int.Parse(e));
filter.RemoveAt(i--);
@@ -492,9 +497,10 @@ namespace Elwig.Windows {
if (filterVar.Count > 0) dpq = dpq.Where(p => filterVar.Contains(p.SortId));
if (filterNotVar.Count > 0) dpq = dpq.Where(p => !filterNotVar.Contains(p.SortId));
if (filterQual.Count > 0) dpq = dpq.Where(p => filterQual.Contains(p.QualId));
+ if (filterNotQual.Count > 0) dpq = dpq.Where(p => !filterNotQual.Contains(p.QualId));
if (filterZwst.Count > 0) dpq = dpq.Where(p => filterZwst.Contains(p.Delivery.ZwstId));
if (filterAttr.Count > 0) dpq = dpq.Where(p => p.AttrId != null && filterAttr.Contains(p.AttrId));
- if (filterNotAttr.Count > 0) dpq = dpq.Where(p => p.AttrId == null || !filterAttr.Contains(p.AttrId));
+ if (filterNotAttr.Count > 0) dpq = dpq.Where(p => p.AttrId == null || !filterNotAttr.Contains(p.AttrId));
if (filterKmwGt > 0) dpq = dpq.Where(p => p.Kmw >= filterKmwGt);
if (filterKmwLt > 0) dpq = dpq.Where(p => p.Kmw < filterKmwLt);
if (filterOeGt > 0) dpq = dpq.Where(p => p.Kmw * (4.54 + 0.022 * p.Kmw) >= filterOeGt);