| 
					
				 | 
			
			
				@@ -16,14 +16,12 @@ using InABox.Clients; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using InABox.Configuration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using InABox.Core; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using InABox.DynamicGrid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using InABox.Reports; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using InABox.Core.Reports; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using InABox.Wpf.Reports; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using InABox.WPF; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Motorola.Snapi; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Motorola.Snapi.Constants.Enums; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Motorola.Snapi.EventArguments; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using org.apache.commons.io.comparator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using BarcodeType = Comal.Classes.BarcodeType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Color = System.Drawing.Color; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Image = System.Windows.Controls.Image; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -35,37 +33,47 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ///     Interaction logic for FactoryPanel.xaml 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public partial class FactoryPanel : UserControl, IPanel<ManufacturingPacket> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public partial class FactoryPanel : IPanel<ManufacturingPacket> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private Button _currentButton; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly BitmapImage barcode = PRSDesktop.Resources.barcode.AsBitmapImage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly BitmapImage disabled = PRSDesktop.Resources.disabled.AsBitmapImage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //private Document document = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private SetoutDocument[] documents = { }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private readonly BitmapImage speechbubble = PRSDesktop.Resources.speechbubble.AsBitmapImage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private readonly BitmapImage starred = PRSDesktop.Resources.report.AsBitmapImage(48, 48); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly BitmapImage grouped = PRSDesktop.Resources.grouped.AsBitmapImage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private readonly string NEARLYDUE_COLOR = "Orange"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private SetoutDocument[] documents = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private readonly List<IMotorolaBarcodeScanner> _scanners = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private readonly string NEARLYDUE_COLOR = "Orange"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly string NOTYETDUE_COLOR = "PaleGreen"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly string OVERDUE_COLOR = "Salmon"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private PDFEditorControl PDFEditor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly string PRIORITY_COLOR = "Red"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly string QA_COLOR = "Silver"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private QAGrid QAGrid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public List<IMotorolaBarcodeScanner> Scanners = new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly string SELECTED_COLOR = "Yellow"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private FactoryFloorLocalSettings settings; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly string SHARED_COLOR = "Lime"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private readonly BitmapImage speechbubble = PRSDesktop.Resources.speechbubble.AsBitmapImage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private readonly BitmapImage starred = PRSDesktop.Resources.report.AsBitmapImage(48, 48); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private readonly string TREATED_COLOR = "DarkOrchid"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private Button? _currentButton; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private PDFEditorControl? PDFEditor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private QAGrid? QAGrid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private readonly FactoryFloorLocalSettings _settings; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private readonly PanelAction _togglePackPanel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public FactoryPanel() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _settings = new LocalConfiguration<FactoryFloorLocalSettings>().Load(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (_settings.Section.Equals(CoreUtils.FullGuid) && _settings.Station.Equals(-1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var user = new UserConfiguration<FactoryFloorSettings>().Load(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _settings.Section = user.Section; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _settings.Station = user.Station; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new LocalConfiguration<FactoryFloorLocalSettings>().Save(_settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             InitializeComponent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var CanConfigure = Security.IsAllowed<CanConfigureFactoryFloor>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -76,51 +84,66 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Kanbans = new ObservableCollection<ManufacturingKanban>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             RackContents.ItemsSource = rackcontents; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RackPanel.Visibility = _settings.SidePanel == FactorySidePanel.Racks 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ? Visibility.Visible 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                : Visibility.Collapsed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            PackPanel.Visibility = _settings.SidePanel == FactorySidePanel.Packs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ? Visibility.Visible 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                : Visibility.Collapsed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public bool IsReady { get; set; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void Setup() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            settings = new LocalConfiguration<FactoryFloorLocalSettings>().Load(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (settings.Section.Equals(CoreUtils.FullGuid) && settings.Station.Equals(-1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var user = new UserConfiguration<FactoryFloorSettings>().Load(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                settings.Section = user.Section; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                settings.Station = user.Station; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                settings.LineColor = ColorTranslator.ToHtml(Color.Red); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                settings.FontSize = 16; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new LocalConfiguration<FactoryFloorLocalSettings>().Save(settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var setups = Client.QueryMultiple( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new KeyedQueryDef<ManufacturingFactory>(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new KeyedQueryDef<ManufacturingSection>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new Filter<ManufacturingSection>(x => x.Hidden).IsEqualTo(false), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new SortOrder<ManufacturingSection>(x => x.Factory.Sequence).ThenBy(x => x.Sequence)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new KeyedQueryDef<ManufacturingTrolley>(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new KeyedQueryDef<Employee>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    LookupFactory.DefineFilter<Employee>(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new Columns<Employee>(x => x.ID, x => x.Name, x => x.UserLink.ID), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new SortOrder<Employee>(x => x.Name)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new KeyedQueryDef<Shipment>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    LookupFactory.DefineFilter<Shipment>(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    new Columns<Shipment>(x => x.ID, x => x.Code, x => x.Description, x => x.BarCode), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    null)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Factories = setups[nameof(ManufacturingFactory)].Rows.Select(x => x.ToObject<ManufacturingFactory>()).ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Sections = setups[nameof(ManufacturingSection)].Rows.Select(x => x.ToObject<ManufacturingSection>()).ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Trolleys = setups[nameof(ManufacturingTrolley)].Rows.Select(x => x.ToObject<ManufacturingTrolley>()).ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Employees = setups[nameof(Employee)].ToDictionary<Employee, Guid, string>(x => x.ID, x => x.Name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var myRow = setups[nameof(Employee)].Rows.FirstOrDefault(r => r.Get<Employee, Guid>(c => c.UserLink.ID).Equals(ClientFactory.UserGuid)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            myID = myRow != null ? myRow.Get<Employee, Guid>(c => c.ID) : Guid.Empty; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            myName = myRow != null ? myRow.Get<Employee, string>(c => c.Name) : "(Unknown Employee)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Shipments = setups[nameof(Shipment)]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CurrentSection = Sections.FirstOrDefault(x => x.ID.Equals(settings.Section)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var setups = new MultiQuery(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setups.Add<ManufacturingFactory>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setups.Add( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new Filter<ManufacturingSection>(x => x.Hidden).IsEqualTo(false), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new SortOrder<ManufacturingSection>(x => x.Factory.Sequence).ThenBy(x => x.Sequence) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setups.Add<ManufacturingTrolley>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setups.Add( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                LookupFactory.DefineFilter<Employee>(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new Columns<Employee>(x => x.ID, x => x.Name, x => x.UserLink.ID), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new SortOrder<Employee>(x => x.Name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setups.Add( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                LookupFactory.DefineFilter<Shipment>(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new Columns<Shipment>(x => x.ID, x => x.Code, x => x.Description, x => x.BarCode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (_settings.AreaID != Guid.Empty) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                setups.Add( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    new Filter<StockArea>(x=>x.ID).IsEqualTo(_settings.AreaID), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    new Columns<StockArea>(x=>x.ID).Add(x=>x.Code).Add(x=>x.Description) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setups.Query(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Factories = setups.Get<ManufacturingFactory>().Rows.Select(x => x.ToObject<ManufacturingFactory>()).ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Sections = setups.Get<ManufacturingSection>().Rows.Select(x => x.ToObject<ManufacturingSection>()).ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Trolleys = setups.Get<ManufacturingTrolley>().Rows.Select(x => x.ToObject<ManufacturingTrolley>()).ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Employees = setups.Get<Employee>().ToDictionary<Employee, Guid, string>(x => x.ID, x => x.Name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var myRow = setups.Get<Employee>().Rows.FirstOrDefault(r => r.Get<Employee, Guid>(c => c.UserLink.ID).Equals(ClientFactory.UserGuid)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            myID = myRow?.Get<Employee, Guid>(c => c.ID) ?? Guid.Empty; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            myName = myRow?.Get<Employee, string>(c => c.Name) ?? "(Unknown Employee)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Shipments = setups.Get<Shipment>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CurrentSection = Sections.FirstOrDefault(x => x.ID.Equals(_settings.Section)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ?? Sections.FirstOrDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var iSection = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var iCount = 0; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -132,16 +155,16 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     iCount = section.Stations; //Sections[id].Item2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Section.Items.Add(string.Format("{0}: {1}", section.Factory.Name, section.Name)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Section.Items.Add($"{section.Factory.Name}: {section.Name}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Section.SelectedIndex = iSection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Station.Items.Clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (var i = 1; i <= (CurrentSection != null ? CurrentSection.Stations : 0); i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Station.Items.Add(string.Format("Station #{0}", i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (var i = 1; i <= (CurrentSection?.Stations ?? 0); i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Station.Items.Add($"Station #{i}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CurrentStation = settings.Station + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CurrentStation = _settings.Station + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (CurrentStation < 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 CurrentStation = 1; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -151,6 +174,32 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Station.SelectedIndex = CurrentStation - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (_settings.AreaID != Guid.Empty) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var area = setups.Get<StockArea>().ToObjects<StockArea>().FirstOrDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (area != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _packGrid.AreaID = _settings.AreaID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _packGrid.AreaDescription = $"{area.Code}: {area.Description}"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _addPack.IsEnabled = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _packGrid.AreaID = CoreUtils.FullGuid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _packGrid.AreaDescription = "(No Area Selected)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _settings.AreaID = Guid.Empty; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    new LocalConfiguration<FactoryFloorLocalSettings>().Save(_settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _addPack.IsEnabled = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _packGrid.AreaID = CoreUtils.FullGuid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _packGrid.AreaDescription = "(No Area Selected)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _packGrid.Refresh(true,true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             SetupScanner(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -180,6 +229,24 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             host.CreatePanelAction(new PanelAction { Caption = "Select Rack", Image = PRSDesktop.Resources.forklift, OnExecute = DoSelectRack }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             host.CreatePanelAction(new PanelAction { Caption = "Close Rack", Image = PRSDesktop.Resources.forklift, OnExecute = DoCloseRack }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             host.CreatePanelAction(new PanelAction { Caption = "Scan Barcode", Image = PRSDesktop.Resources.product, OnExecute = DoScanBarcode }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            host.CreatePanelAction(new PanelAction { Caption = _settings.SidePanel == FactorySidePanel.Packs ? "Hide Stock" : "Show Stock", Image = PRSDesktop.Resources.trolley, OnExecute = TogglePackPanel}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private void TogglePackPanel(PanelAction pa) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RackPanel.Visibility = Visibility.Collapsed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            PackPanel.Visibility = _settings.SidePanel == FactorySidePanel.Packs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ? Visibility.Collapsed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                : Visibility.Visible; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _settings.SidePanel = PackPanel.Visibility == Visibility.Visible 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ? FactorySidePanel.Packs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                : FactorySidePanel.None; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            new LocalConfiguration<FactoryFloorLocalSettings>().Save(_settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pa.Caption = _settings.SidePanel == FactorySidePanel.Packs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ? "Hide Stock" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                : "Show Stock"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _addPack.IsEnabled = _settings.AreaID != Guid.Empty; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public Dictionary<string, object[]> Selected() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -241,7 +308,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var stagerow = Stages.Rows.FirstOrDefault(r => r.Get<ManufacturingPacketStage, Guid>(c => c.Parent.ID).Equals(packet.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                                        && r.Get<ManufacturingPacketStage, Guid>(c => c.ManufacturingSectionLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                                           .Equals(settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                           .Equals(_settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (stagerow != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             var stage = stagerow.ToObject<ManufacturingPacketStage>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -291,7 +358,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                foreach (var scanner in Scanners) scanner.Actions.ToggleLed(LedMode.GreenOff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var scanner in _scanners) scanner.Actions.ToggleLed(LedMode.GreenOff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 BarcodeScannerManager.Instance.DataReceived -= Instance_DataReceived; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 BarcodeScannerManager.Instance.Close(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -304,7 +371,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private void SetupScanner() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Scanners.Clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _scanners.Clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BarcodeScannerManager.Instance.Open(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BarcodeScannerManager.Instance.RegisterForEvents(EventType.Barcode, EventType.Pnp, EventType.Image, EventType.Other, EventType.Rmd); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -312,7 +379,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BarcodeScannerManager.Instance.GetDevices(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             foreach (var scanner in BarcodeScannerManager.Instance.GetDevices()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Scanners.Add(scanner); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _scanners.Add(scanner); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 scanner.Actions.ToggleLed(LedMode.RedOn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 scanner.Actions.SoundBeeper(BeepPattern.FastWarble); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -322,7 +389,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private void Instance_DataReceived(object? sender, BarcodeScanEventArgs e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Dispatcher.Invoke(() => { ProcessCode(Scanners[(int)e.ScannerId], e.Data); }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Dispatcher.Invoke(() => { ProcessCode(_scanners[(int)e.ScannerId], e.Data); }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private void ProcessCode(IMotorolaBarcodeScanner scanner, string code) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -358,7 +425,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             var stagerow = Stages.Rows.FirstOrDefault(r => r.Get<ManufacturingPacketStage, Guid>(c => c.Parent.ID).Equals(packet.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                                            && r.Get<ManufacturingPacketStage, Guid>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                                                    c => c.ManufacturingSectionLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                                               .Equals(settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                               .Equals(_settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             pktrow.Set<ManufacturingPacket, string>(x => x.Trolleys, packet.Trolleys); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             LoadModel(kanban, pktrow, stagerow, true); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -383,6 +450,9 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (string.Equals(code, rackbarcode)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             RackPanel.Visibility = Visibility.Collapsed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            _settings.SidePanel = FactorySidePanel.None; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            new LocalConfiguration<FactoryFloorLocalSettings>().Save(_settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             RackContents.ItemsSource = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             rackid = Guid.Empty; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             rackbarcode = ""; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -399,10 +469,13 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             rackcontents.AddRange(rows.Select(x => x.ToObject<DeliveryItem>())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             RackContents.ItemsSource = rackcontents; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            RackName.Content = string.Format("Rack {0}", shiprow.Get<Shipment, string>(c => c.Code)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            RackName.Content = $"Rack {shiprow.Get<Shipment, string>(c => c.Code)}"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             RackCount.Content = rows.Length.ToString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            PackPanel.Visibility = Visibility.Collapsed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             RackPanel.Visibility = Visibility.Visible; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            _settings.SidePanel = FactorySidePanel.Racks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            new LocalConfiguration<FactoryFloorLocalSettings>().Save(_settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             scanner?.Actions.SoundBeeper(BeepPattern.ThreeHighShort); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -462,7 +535,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             var stage = Stages.Rows.FirstOrDefault(r => r.Get<ManufacturingPacketStage, Guid>(c => c.Parent.ID).Equals(id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                                         && r.Get<ManufacturingPacketStage, Guid>(c => c.ManufacturingSectionLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                                            .Equals(settings.Section))?.ToObject<ManufacturingPacketStage>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                            .Equals(_settings.Section))?.ToObject<ManufacturingPacketStage>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if (stage == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 scanner?.Actions.SoundBeeper(BeepPattern.FourHighShort); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -509,7 +582,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var row = Packets.Rows.FirstOrDefault(r => r.Get<ManufacturingPacket, Guid>(c => c.ID).Equals(pktid)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var stagerow = Stages.Rows.FirstOrDefault(r => r.Get<ManufacturingPacketStage, Guid>(c => c.Parent.ID).Equals(pktid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                                && r.Get<ManufacturingPacketStage, Guid>(c => c.ManufacturingSectionLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                                   .Equals(settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                   .Equals(_settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var packet = row.ToObject<ManufacturingPacket>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (id.Value == Guid.Empty) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -539,8 +612,8 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     PDFEditor = new PDFEditorControl(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    PDFEditor.LineColor = settings.LineColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    PDFEditor.TextSize = settings.FontSize; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    PDFEditor.LineColor = _settings.LineColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    PDFEditor.TextSize = _settings.FontSize; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //PDFEditor.PrintAllowed = Security.IsAllowed<CanPrintFactoryFloorDrawings>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     PDFEditor.SaveAllowed = Security.IsAllowed<CanSaveFactoryFloorDrawings>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var document = documents.FirstOrDefault(x => x.DocumentLink.ID.Equals(id)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -564,14 +637,14 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var id = dlg.IDs().FirstOrDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var barcode = dlg.Data().Rows.FirstOrDefault(r => r.Get<Shipment, Guid>(c => c.ID).Equals(id))?.Get<Shipment, string>(x => x.BarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ProcessCode(Scanners.FirstOrDefault(), barcode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ProcessCode(_scanners.FirstOrDefault(), barcode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private void DoCloseRack(PanelAction obj) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!string.IsNullOrWhiteSpace(rackbarcode)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ProcessCode(Scanners.FirstOrDefault(), rackbarcode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ProcessCode(_scanners.FirstOrDefault(), rackbarcode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -588,7 +661,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var id = dlg.IDs().FirstOrDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var barcode = dlg.Data().Rows.FirstOrDefault(r => r.Get<DeliveryItem, Guid>(c => c.ID).Equals(id)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     ?.Get<DeliveryItem, string>(x => x.Barcode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ProcessCode(Scanners.FirstOrDefault(), barcode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ProcessCode(_scanners.FirstOrDefault(), barcode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -880,9 +953,9 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CurrentKanban = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CurrentStation = station; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            settings.Section = section; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            settings.Station = CurrentStation - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            new LocalConfiguration<FactoryFloorLocalSettings>().Save(settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _settings.Section = section; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _settings.Station = CurrentStation - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            new LocalConfiguration<FactoryFloorLocalSettings>().Save(_settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             DoRefresh(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -894,15 +967,17 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     ButtonStack.Children.Clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     LoadDrawing(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _packGrid.CurrentPacket = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 else if (true) // Kanban has changed - how do we figure this out  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var packet = KanbanToPacket(CurrentKanban); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _packGrid.CurrentPacket = packet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //SetoutStage stage = packet.GetCurrentStage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var row = Stages.Rows.FirstOrDefault(r => r.Get<ManufacturingPacketStage, Guid>(c => c.Parent.ID).Equals(packet.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                               && r.Get<ManufacturingPacketStage, Guid>(c => c.ManufacturingSectionLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                                  .Equals(settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                  .Equals(_settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var station = row != null ? row.Get<ManufacturingPacketStage, int>(c => c.Station) : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var quality = row != null ? row.Get<ManufacturingPacketStage, QualityStatus>(c => c.QualityStatus) : QualityStatus.NotChecked; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var percentage = row != null ? row.Get<ManufacturingPacketStage, double>(c => c.PercentageComplete) : 0.00F; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -989,6 +1064,8 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         LoadDrawing(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } // Kanban has not changed - do nothing 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (_packLinked.IsChecked == true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _packGrid.Refresh(false,false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1107,7 +1184,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var qacomplete = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var stage = Stages.Rows.FirstOrDefault(r => r.Get<ManufacturingPacketStage, Guid>(c => c.Parent.ID).Equals(packet.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                             && r.Get<ManufacturingPacketStage, Guid>(c => c.ManufacturingSectionLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                                .Equals(settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                .Equals(_settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (stage != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var qadata = stage.Get<ManufacturingPacketStage, string>(c => c.FormData); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1464,7 +1541,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var checkedpackets = Packets.Rows.Where(r => checkedkanbans.Contains(r.Get<ManufacturingPacket, Guid>(c => c.ID))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var checkedstages = Stages.Rows.Where(r => checkedkanbans.Contains(r.Get<ManufacturingPacketStage, Guid>(c => c.Parent.ID)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        && r.Get<ManufacturingPacketStage, Guid>(c => c.ManufacturingSectionLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                           .Equals(settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                           .Equals(_settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // Only if we right-click on a checked packet?? 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1592,7 +1669,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var pktrow = Packets.Rows.FirstOrDefault(r => r.Get<ManufacturingPacket, Guid>(c => c.ID).Equals(update.ID)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var stagerow = Stages.Rows.FirstOrDefault(r => r.Get<ManufacturingPacketStage, Guid>(c => c.Parent.ID).Equals(update.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                                        && r.Get<ManufacturingPacketStage, Guid>(c => c.ManufacturingSectionLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                                           .Equals(settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                           .Equals(_settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         //ManufacturingPacketStage stage = Stages.Rows.FirstOrDefault(r => r.Get<ManufacturingPacketStage, Guid>(x => x.Parent.ID).Equals(update.ID))?.ToObject<ManufacturingPacketStage>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var kanban = Kanbans.FirstOrDefault(x => x.ID.Equals(update.ID.ToString())); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1642,7 +1719,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var pktrow = Packets.Rows.FirstOrDefault(r => r.Get<ManufacturingPacket, Guid>(c => c.ID).Equals(Guid.Parse(kanban.ID))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var stagerow = Stages.Rows.FirstOrDefault(r => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             r.Get<ManufacturingPacketStage, Guid>(c => c.Parent.ID).Equals(Guid.Parse(kanban.ID)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            && r.Get<ManufacturingPacketStage, Guid>(c => c.ManufacturingSectionLink.ID).Equals(settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            && r.Get<ManufacturingPacketStage, Guid>(c => c.ManufacturingSectionLink.ID).Equals(_settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var packet = pktrow.ToObject<ManufacturingPacket>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1677,7 +1754,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var stagerow = Stages.Rows.FirstOrDefault(r => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         r.Get<ManufacturingPacketStage, Guid>(c => c.Parent.ID).Equals(Guid.Parse(kanban.ID)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         && r.Get<ManufacturingPacketStage, Guid>(c => c.ManufacturingSectionLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            .Equals(settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .Equals(_settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var packet = pktrow.ToObject<ManufacturingPacket>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1936,9 +2013,9 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void PDFEditorSettingsChanged(object sender, string linecolor, int fontsize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            settings.LineColor = linecolor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            settings.FontSize = fontsize; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            new LocalConfiguration<FactoryFloorLocalSettings>().Save(settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _settings.LineColor = linecolor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _settings.FontSize = fontsize; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            new LocalConfiguration<FactoryFloorLocalSettings>().Save(_settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         #region Employee Stuff 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2314,6 +2391,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         .Add(x => x.BarcodeQty) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         .Add(x => x.SetoutLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         .Add(x => x.SetoutLink.Number) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .Add(x => x.SetoutLink.JobLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         .Add(x => x.SetoutLink.JobLink.JobNumber) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         .Add(x => x.SetoutLink.JobLink.Name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         .Add(x => x.SetoutLink.Group.ID) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2397,7 +2475,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var id = pktrow.Get<ManufacturingPacket, Guid>(c => c.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var distributed = pktrow.Get<ManufacturingPacket, bool>(c => c.Distributed); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    var stageIndex = stages.FindIndex(x => x.Item1 == id && x.Item2 == settings.Section); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var stageIndex = stages.FindIndex(x => x.Item1 == id && x.Item2 == _settings.Section); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var stageRow = stageIndex >= 0 ? Stages.Rows[stageIndex] : null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //this was commented out previously - leading to the distributed packet issue. Uncommented and tested to work by Nick. Was there a reason for commenting this out? 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2492,7 +2570,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //var row = Packets.Rows.FirstOrDefault(r => r.Get<ManufacturingPacket, Guid>(c => c.ID).Equals(ck.ID)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var stagerow = Stages.Rows.FirstOrDefault(r => r.Get<ManufacturingPacketStage, Guid>(c => c.Parent.ID).Equals(Guid.Parse(ck.ID)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                                && r.Get<ManufacturingPacketStage, Guid>(c => c.ManufacturingSectionLink.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                                   .Equals(settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                   .Equals(_settings.Section)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (stagerow != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var stage = stagerow.ToObject<ManufacturingPacketStage>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2577,5 +2655,82 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ManufacturingPanelColumn.CreatePickingList(rows!.Select(x => x.ToObject<ManufacturingPacket>()).ToList(), true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 () => new GlobalConfiguration<ManufacturingPanelProperties>().Load()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private void _selectPackArea_OnClick(object sender, RoutedEventArgs e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var dlg = new MultiSelectDialog<StockArea>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new Filter<StockArea>(x => x.Active).IsEqualTo(true), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new Columns<StockArea>(x => x.ID).Add(x => x.Warehouse.Code).Add(x => x.Code).Add(x => x.Description), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (dlg.ShowDialog("Select Area")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _settings.AreaID = dlg.IDs().FirstOrDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new LocalConfiguration<FactoryFloorLocalSettings>().Save(_settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _packGrid.AreaDescription = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    dlg.Items(new Columns<StockArea>(x => x.Code).Add(x => x.Description)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .Select(x => $"{x.Code}: {x.Description}").FirstOrDefault() ?? "(No Area Selected)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _packGrid.AreaID = _settings.AreaID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _packGrid.Refresh(false,true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private void _addPack_OnClick(object sender, RoutedEventArgs e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var dlg = new MultiSelectDialog<StockLocation>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new Filter<StockLocation>(x => x.Area.ID).IsNotEqualTo(_settings.AreaID), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new Columns<StockLocation>(x => x.ID).Add(x => x.Warehouse.Code).Add(x => x.Area.Code).Add(x => x.Code).Add(x => x.Description), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (dlg.ShowDialog("Select Location")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var location = dlg.Items().FirstOrDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (location != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    location.Area.ID = _settings.AreaID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    new Client<StockLocation>().Save(location,"Moved To Manufacturing"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _packGrid.Refresh(false,true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private string _packFilter = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private void _packSearch_OnTextChanged(object sender, TextChangedEventArgs e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _packGrid.Refresh(false, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private bool _packGrid_OnOnFilterRecord(CoreRow row) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var result = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (_packLinked.IsChecked == true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Guid jobid = row.Get<StockHolding, Guid>(x => x.Job.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (_packGrid.CurrentPacket != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    result = jobid == Guid.Empty || jobid == _packGrid.CurrentPacket.SetoutLink.JobLink.ID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            result = result && (String.IsNullOrWhiteSpace(_packSearch.Text) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 || row.Get<StockHolding, String>(x => x.Product.Code).ToUpper().Contains(_packSearch.Text.ToUpper()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 || row.Get<StockHolding, String>(x => x.Product.Name).ToUpper().Contains(_packSearch.Text.ToUpper()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 || row.Get<StockHolding, String>(x => x.Location.Code).ToUpper().Contains(_packSearch.Text.ToUpper()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 || row.Get<StockHolding, String>(x => x.Style.Code).ToUpper().Contains(_packSearch.Text.ToUpper()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 || row.Get<StockHolding, String>(x => x.Style.Description).ToUpper() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     .Contains(_packSearch.Text.ToUpper()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 || row.Get<StockHolding, String>(x => x.Dimensions.UnitSize).ToUpper() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     .Contains(_packSearch.Text.ToUpper()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 || row.Get<StockHolding, String>(x => x.Job.JobNumber).ToUpper().Contains(_packSearch.Text.ToUpper()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 || row.Get<StockHolding, String>(x => x.Job.Name).ToUpper().Contains(_packSearch.Text.ToUpper())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private void _packLinked_OnChecked(object sender, RoutedEventArgs e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _packGrid?.Refresh(false, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |