Browse Source

Added OrdersOnly filter to manufacturingpackets

Kenric Nugteren 1 year ago
parent
commit
fcf1100379

+ 7 - 1
prs.classes/Settings/ManufacturingSettings.cs

@@ -23,7 +23,13 @@ namespace Comal.Classes
 
         public bool IncludeHeld { get; set; }
 
-        public bool IncludeOrders { get; set; }
+        public enum FilterOrdersOptions
+        {
+            IncludeOrders,
+            OrdersOnly,
+            ExcludeOrders
+        }
+        public FilterOrdersOptions FilterOrders { get; set; } = FilterOrdersOptions.ExcludeOrders;
 
         public bool IncludeCompleted { get; set; }
 

+ 6 - 3
prs.desktop/Panels/Manufacturing/ManufacturingPanel.xaml

@@ -56,9 +56,12 @@
                 <Label DockPanel.Dock="Right" Content="Include Completed?" VerticalAlignment="Center" />
 
 
-                <CheckBox x:Name="IncludeOrders" DockPanel.Dock="Right" IsThreeState="False" VerticalAlignment="Center"
-                          Margin="5,0,0,0" Click="IncludeOrders_Click" VerticalContentAlignment="Center" />
-                <Label DockPanel.Dock="Right" Content="Include Orders?" VerticalAlignment="Center" />
+                <ComboBox x:Name="FilterOrders" DockPanel.Dock="Right" SelectedIndex="2" Width="120" Margin="5,0,0,0"
+                          SelectionChanged="FilterOrders_SelectionChanged" VerticalContentAlignment="Center">
+                    <ComboBoxItem Content="Include Orders" />
+                    <ComboBoxItem Content="Orders Only" />
+                    <ComboBoxItem Content="Exclude Orders" />
+                </ComboBox>
 
                 <CheckBox x:Name="IncludeHeld" DockPanel.Dock="Right" IsThreeState="False" VerticalAlignment="Center"
                           Margin="5,0,0,0" Click="IncludeHeld_Click" VerticalContentAlignment="Center" />

+ 23 - 10
prs.desktop/Panels/Manufacturing/ManufacturingPanel.xaml.cs

@@ -27,7 +27,7 @@ namespace PRSDesktop
 
         private bool bIncludeCompleted;
         private bool bIncludeHeld;
-        private bool bIncludeOrders;
+        private ManufacturingSettings.FilterOrdersOptions filterOrders;
 
         private ManufacturingViewType ViewType;
         private Guid CurrentFactory = Guid.Empty;
@@ -190,8 +190,8 @@ namespace PRSDesktop
             bIncludeHeld = settings.IncludeHeld;
             IncludeHeld.IsChecked = bIncludeHeld;
 
-            bIncludeOrders = settings.IncludeOrders;
-            IncludeOrders.IsChecked = bIncludeOrders;
+            filterOrders = settings.FilterOrders;
+            FilterOrders.SelectedIndex = (int)filterOrders;
 
             bIncludeCompleted = settings.IncludeCompleted;
             IncludeCompleted.IsChecked = bIncludeCompleted;
@@ -656,11 +656,20 @@ namespace PRSDesktop
                 //    filter = filter.And(x => x.OnHold).IsEqualTo(false);
                 filter = filter.And(x => x.OnHold).IsEqualTo(false);
 
-            if (!bIncludeOrders)
+            switch (filterOrders)
             {
-                var orderfilter = new Filter<ManufacturingPacket>(x => x.OrderItem).NotLinkValid().Or(x => x.OrderItem.ReceivedDate)
-                    .IsNotEqualTo(DateTime.MinValue);
-                filter = filter.And(orderfilter);
+                case ManufacturingSettings.FilterOrdersOptions.IncludeOrders:
+                    break;
+                case ManufacturingSettings.FilterOrdersOptions.OrdersOnly:
+                    var orderfilter = new Filter<ManufacturingPacket>(x => x.OrderItem).LinkValid()
+                        .And(x => x.OrderItem.ReceivedDate).IsEqualTo(DateTime.MinValue);
+                    filter = filter.And(orderfilter);
+                    break;
+                case ManufacturingSettings.FilterOrdersOptions.ExcludeOrders:
+                    orderfilter = new Filter<ManufacturingPacket>(x => x.OrderItem).NotLinkValid()
+                        .Or(x => x.OrderItem.ReceivedDate).IsNotEqualTo(DateTime.MinValue);
+                    filter = filter.And(orderfilter);
+                    break;
             }
 
             var bSkipJobCheck = false;
@@ -844,9 +853,13 @@ namespace PRSDesktop
             }
         }
 
-        private void IncludeOrders_Click(object sender, RoutedEventArgs e)
+        private void FilterOrders_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
-            bIncludeOrders = IncludeOrders.IsChecked == true;
+            if (e.AddedItems.Count == 0 || e.AddedItems[0] is not ComboBoxItem selected)
+                return;
+
+            filterOrders = (ManufacturingSettings.FilterOrdersOptions)FilterOrders.SelectedIndex;
+
             if (IsReady)
             {
                 SaveSettings();
@@ -862,7 +875,7 @@ namespace PRSDesktop
                 SortByDueDate = SortByDueDate,
                 ViewType = ViewType,
                 IncludeHeld = bIncludeHeld,
-                IncludeOrders = bIncludeOrders,
+                FilterOrders = filterOrders,
                 IncludeCompleted = bIncludeCompleted
             };
             new UserConfiguration<ManufacturingSettings>().Save(user);