Browse Source

Added Balance field for STockMovement, and populated in Stocktakes on desktop

Kenric Nugteren 1 year ago
parent
commit
06530d3f1f

+ 12 - 8
prs.classes/Entities/Stock/StockMovement.cs

@@ -102,14 +102,18 @@ namespace Comal.Classes
         [DoubleEditor(Summary = Summary.Sum)]
         [EditorSequence(3)]
         public double Issued { get; set; }
+
+        [DoubleEditor]
+        [EditorSequence(4)]
+        public double Balance { get; set; }
         
         // Units = Received - Issued
         [Formula(typeof(StockMovementUnitsFormula))]
-        [EditorSequence(4)]
+        [EditorSequence(5)]
         [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary= Summary.Sum)]
         public double Units { get; set; }
         
-        [EditorSequence(5)]
+        [EditorSequence(6)]
         [RequiredColumn]
         [DimensionsEditor(typeof(StockDimensions), AllowEditingUnit = false)]
         public override StockDimensions Dimensions { get; set; }
@@ -117,25 +121,25 @@ namespace Comal.Classes
         // IsRemnant = Dimensions.Value < Product.Dimensions.Value
         [CheckBoxEditor(Editable = Editable.Hidden)]
         [Condition(typeof(StockMovementIsRemnantCondition))]
-        [EditorSequence(6)]
+        [EditorSequence(7)]
         public bool IsRemnant { get; set; }
         
         // Qty = Units * Dimensions.Value
-        [EditorSequence(7)]
+        [EditorSequence(8)]
         [Formula(typeof(StockMovementQuantityFormula))]
         [DoubleEditor(Editable = Editable.Hidden, Summary = Summary.Sum)]
         public double Qty { get; set; }
         
-        [EditorSequence(8)]
+        [EditorSequence(9)]
         [EntityRelationship(DeleteAction.SetNull)]
         public JobLink Job { get; set; }
 
-        [EditorSequence(9)]
+        [EditorSequence(10)]
         [EntityRelationship(DeleteAction.SetNull)]
         public EmployeeLink Employee { get; set; }
 
         [MemoEditor]
-        [EditorSequence(10)]
+        [EditorSequence(11)]
         public string Notes { get; set; }
 
         [EnumLookupEditor(typeof(StockMovementType))]
@@ -172,7 +176,7 @@ namespace Comal.Classes
         public double UnitSize { get; set; }
         
         [CurrencyEditor(Visible = Visible.Default)]
-        [EditorSequence(11)]
+        [EditorSequence(12)]
         public double Cost { get; set; } = 0.0;
         
         [CurrencyEditor(Visible = Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]

+ 12 - 13
prs.desktop/Panels/Products/Locations/StockTakeWindow.xaml.cs

@@ -405,7 +405,7 @@ namespace PRSDesktop
 
         private StockMovementBatch CreateBatch()
         {
-            StockMovementBatch batch = new StockMovementBatch();
+            var batch = new StockMovementBatch();
             batch.Notes = "Stocktake";
             batch.Employee.ID = EmployeeID;
             batch.Type = StockMovementBatchType.Stocktake;
@@ -414,30 +414,28 @@ namespace PRSDesktop
 
             return batch;
         }
-        private List<StockMovement> CompareHoldingsAndCreateMovements(Guid batchID)
+        private IEnumerable<StockMovement> CompareHoldingsAndCreateMovements(Guid batchID)
         {
-            List<StockMovement> movements = new List<StockMovement>();
-            foreach (var holding in StockTakeHoldings)
+            return StockTakeHoldings.Select(holding =>
             {
-                StockHolding original = OriginalHoldings.Find(x => x.ID == holding.ID);
+                var original = OriginalHoldings.Find(x => x.ID == holding.ID);
                 if (holding.NewQty < 0.001 && holding.NewQty > 0)
                     holding.NewQty = 0;
-                if (original != null)               
-                    movements.Add(CreateMovement(holding, holding.NewQty - holding.OriginalQty, batchID));                
+                if (original != null)
+                    return CreateMovement(holding, holding.NewQty - holding.OriginalQty, batchID, holding.NewQty);
                 else
-                    movements.Add(CreateMovement(holding, holding.NewQty, batchID));
-            }
-            return movements;
+                    return CreateMovement(holding, holding.NewQty, batchID, holding.NewQty);
+            });
         }
 
-        private StockMovement CreateMovement(StockTakeHolding holding, double qty, Guid batchID)
+        private StockMovement CreateMovement(StockTakeHolding holding, double qty, Guid batchID, double balance)
         {
-            var movement = CreateBaseMovement(holding, batchID);
+            var movement = CreateBaseMovement(holding, batchID, balance);
 
             return DetermineMovementType(movement, qty);
         }
 
-        private StockMovement CreateBaseMovement(StockTakeHolding holding, Guid batchID)
+        private StockMovement CreateBaseMovement(StockTakeHolding holding, Guid batchID, double balance)
         {
             var movement = new StockMovement();
 
@@ -455,6 +453,7 @@ namespace PRSDesktop
             movement.Location.ID = holding.Location.ID;
             movement.IsRemnant = false;
             movement.Type = StockMovementType.StockTake;
+            movement.Balance = balance;
 
             return movement;
         }