فهرست منبع

Converted StockLocation.StocktakeStatus enum to CurrentStocktake DateTime

frogsoftware 1 سال پیش
والد
کامیت
ce5775cadc

+ 9 - 19
prs.classes/Entities/Stock/StockLocation/StockLocation.cs

@@ -20,12 +20,6 @@ namespace Comal.Classes
         public override AggregateCalculation Calculation => AggregateCalculation.Count;
     }
 
-    public enum StockTakeStatus
-    {
-        Inactive,
-        InProgress
-    }
-
     public enum StockTakeFrequency
     {
         Never,
@@ -106,30 +100,26 @@ namespace Comal.Classes
         [DoubleEditor(Editable = Editable.Hidden)]
         [EditorSequence(10)]
         public double Holdings { get; set; }
-
-        [EnumLookupEditor(typeof(StockTakeStatus))]
-        [EditorSequence(11)]
-        public StockTakeStatus StocktakeStatus { get; set; } = StockTakeStatus.Inactive;
+        
 
         [DateEditor] 
-        [EditorSequence(12)] 
+        [EditorSequence("Stocktake",1)]
         public DateTime LastStocktake { get; set; } = DateTime.MinValue;
 
         [EnumLookupEditor(typeof(StockTakeFrequency))]
-        [EditorSequence(13)]
+        [EditorSequence("Stocktake",2)]
         public StockTakeFrequency StocktakeFrequency { get; set; } = StockTakeFrequency.Never;
         
-        [DateEditor(Editable = Editable.Disabled)] 
-        [EditorSequence(12)] 
+        [DateEditor] 
+        [EditorSequence("Stocktake",3)] 
         public DateTime NextStocktake { get; set; } = DateTime.MaxValue;
 
+        [EditorSequence("Stocktake",4)] 
+        [DateEditor] 
+        public DateTime CurrentStocktake { get; set; } = DateTime.MinValue;
 
         private static DateTime CalculateNextStockTake(DateTime last, StockTakeFrequency frequency)
         {
-            if (frequency == StockTakeFrequency.Never)
-                return DateTime.MaxValue;
-            if (last.IsEmpty())
-                return DateTime.Today;
             return frequency switch
             {
                 StockTakeFrequency.Daily => last.AddDays(1),
@@ -139,7 +129,7 @@ namespace Comal.Classes
                 StockTakeFrequency.Quarterly => last.AddMonths(3),
                 StockTakeFrequency.TwiceYearly => last.AddMonths(6),
                 StockTakeFrequency.Yearly => last.AddYears(1),
-                _ => DateTime.MaxValue
+                _ => DateTime.MinValue
             };
         }
 

+ 14 - 9
prs.desktop/Panels/Products/Locations/StockLocationGrid.cs

@@ -10,6 +10,7 @@ using InABox.Core;
 using InABox.DynamicGrid;
 using InABox.WPF;
 using NPOI.SS.Formula.Functions;
+using Column = InABox.Core.Column;
 
 namespace PRSDesktop;
 
@@ -30,7 +31,8 @@ public class StockLocationGrid : DynamicDataGrid<StockLocation>
 
         HiddenColumns.Add(x => x.Job.ID);
         HiddenColumns.Add(x => x.StocktakeFrequency);
-        HiddenColumns.Add(x => x.StocktakeStatus);
+        HiddenColumns.Add(x => x.LastStocktake);
+        HiddenColumns.Add(x => x.CurrentStocktake);
         HiddenColumns.Add(x => x.NextStocktake);
         
         ActionColumns.Add(new DynamicImageColumn(StockTakeStatusImage) { ToolTip = StockTakeStatusToolTip, Position = DynamicActionColumnPosition.Start });
@@ -45,22 +47,25 @@ public class StockLocationGrid : DynamicDataGrid<StockLocation>
     {
         return row == null
             ? column.TextToolTip("Indicates the Stocktake status of this location")
-            : row.Get<StockLocation, StockTakeStatus>(x => x.StocktakeStatus) == StockTakeStatus.InProgress
+            : !row.Get<StockLocation, DateTime>(x => x.CurrentStocktake).IsEmpty()
                 ? column.TextToolTip("Stocktake in progress")
-                : column.TextToolTip($"Stocktake due on {row.Get<StockLocation, DateTime>(x => x.NextStocktake).Date:dd MMM yy}");
+                : !row.Get<StockLocation, DateTime>(x => x.NextStocktake).IsEmpty()
+                    ? column.TextToolTip(
+                        $"Stocktake due on {row.Get<StockLocation, DateTime>(x => x.NextStocktake).Date:dd MMM yy}")
+                    : column.TextToolTip("No Stocktake scheduled");
     }
 
     private BitmapImage? StockTakeStatusImage(CoreRow? row)
     {
-        return row == null 
+        return row == null
             ? _stocktakeheader
-            : row.Get<StockLocation, StockTakeStatus>(x => x.StocktakeStatus) == StockTakeStatus.InProgress
+            : !row.Get<StockLocation, DateTime>(x => x.CurrentStocktake).IsEmpty()
                 ? _stocktakeinprogress
-                : row.Get<StockLocation, StockTakeFrequency>(x => x.StocktakeFrequency) == StockTakeFrequency.Never
-                    ? _stocktakedisabled
-                    : row.Get<StockLocation, DateTime>(x => x.NextStocktake).Date > DateTime.Today
+                : !row.Get<StockLocation, DateTime>(x => x.NextStocktake).IsEmpty()
+                    ? row.Get<StockLocation, DateTime>(x => x.NextStocktake).Date > DateTime.Today
                         ? _stocktakenotyetdue
-                        : _stocktakeoverdue;
+                        : _stocktakeoverdue
+                    : _stocktakedisabled;
     }
 
     protected override void DoReconfigure(FluentList<DynamicGridOption> options)