|  | @@ -18,21 +18,49 @@ namespace PRSDesktop
 | 
	
		
			
				|  |  |          private static readonly BitmapImage? post = PRSDesktop.Resources.post.AsBitmapImage();
 | 
	
		
			
				|  |  |          private static readonly BitmapImage? warning = PRSDesktop.Resources.warning.AsBitmapImage();
 | 
	
		
			
				|  |  |          private static readonly BitmapImage? refresh = PRSDesktop.Resources.refresh.AsBitmapImage();
 | 
	
		
			
				|  |  | -        private readonly BitmapImage pdf = PRSDesktop.Resources.doc_pdf.AsBitmapImage();
 | 
	
		
			
				|  |  | +        private static readonly BitmapImage? data = PRSDesktop.Resources.pencil.AsBitmapImage();
 | 
	
		
			
				|  |  | +        private static readonly BitmapImage? check = PRSDesktop.Resources.checklist.AsBitmapImage();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          public SupplierBills()
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              HiddenColumns.Add(x => x.PostedStatus);
 | 
	
		
			
				|  |  |              HiddenColumns.Add(x => x.PostedStatus);
 | 
	
		
			
				|  |  |              HiddenColumns.Add(x => x.PostedNote);
 | 
	
		
			
				|  |  | +            HiddenColumns.Add(x => x.Approved);
 | 
	
		
			
				|  |  | +            HiddenColumns.Add(x => x.DataEntered);
 | 
	
		
			
				|  |  | +            HiddenColumns.Add(x => x.Checked);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            ActionColumns.Add(new DynamicImageColumn(Approved_Image, null));
 | 
	
		
			
				|  |  | +            ActionColumns.Add(new DynamicImageColumn(DataEntered_Image, null) { ToolTip = DataEntered_ToolTip });
 | 
	
		
			
				|  |  | +            ActionColumns.Add(new DynamicImageColumn(Checked_Image, null) { ToolTip = Checked_ToolTip });
 | 
	
		
			
				|  |  | +            ActionColumns.Add(new DynamicImageColumn(Approved_Image, null) { ToolTip = Approved_ToolTip });
 | 
	
		
			
				|  |  |              
 | 
	
		
			
				|  |  |              ActionColumns.Add(new DynamicImageColumn(Posted_Image, null)
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  ToolTip = Posted_ToolTip
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private FrameworkElement? Approved_ToolTip(DynamicActionColumn column, CoreRow? row)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            return row is null ? column.TextToolTip("Has this bill been approved?")
 | 
	
		
			
				|  |  | +                : row.Get<Bill, DateTime>(x => x.Approved).IsEmpty() ? column.TextToolTip("Not yet approved")
 | 
	
		
			
				|  |  | +                : column.TextToolTip("Approved");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private FrameworkElement? Checked_ToolTip(DynamicActionColumn column, CoreRow? row)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            return row is null ? column.TextToolTip("Has this bill been checked?")
 | 
	
		
			
				|  |  | +                : row.Get<Bill, DateTime>(x => x.Approved).IsEmpty() ? column.TextToolTip("Not yet checked")
 | 
	
		
			
				|  |  | +                : column.TextToolTip("Checked");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private FrameworkElement? DataEntered_ToolTip(DynamicActionColumn column, CoreRow? row)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            return row is null ? column.TextToolTip("Has this bill been entered via Data Entry?")
 | 
	
		
			
				|  |  | +                : row.Get<Bill, DateTime>(x => x.Approved).IsEmpty() ? column.TextToolTip("Data not entered.")
 | 
	
		
			
				|  |  | +                : column.TextToolTip("Data Entered");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          protected override void DoReconfigure(FluentList<DynamicGridOption> options)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              base.DoReconfigure(options);
 | 
	
	
		
			
				|  | @@ -47,6 +75,20 @@ namespace PRSDesktop
 | 
	
		
			
				|  |  |                  .EndUpdate();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        private BitmapImage? DataEntered_Image(CoreRow? row)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            return (row != null) && row.Get<Bill, DateTime>(x => x.DataEntered).IsEmpty()
 | 
	
		
			
				|  |  | +                ? null
 | 
	
		
			
				|  |  | +                : data;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private BitmapImage? Checked_Image(CoreRow? row)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            return (row != null) && row.Get<Bill, DateTime>(x => x.Checked).IsEmpty()
 | 
	
		
			
				|  |  | +                ? null
 | 
	
		
			
				|  |  | +                : check;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          private FrameworkElement? Posted_ToolTip(DynamicActionColumn column, CoreRow? row)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              if (row is null)
 |