浏览代码

Fix to stock holding grid and recalculate now recalculates Quantity.

Kenric Nugteren 1 年之前
父节点
当前提交
983036ac61

+ 4 - 1
prs.classes/Entities/Stock/StockHolding.cs

@@ -327,8 +327,11 @@ namespace Comal.Classes
             var cost = movements.Select(x => x.Units * x.Cost).Sum();
             var available = movements.Where(x => x.JobRequisitionItem.ID == Guid.Empty).Sum(x => x.Units);
             holding.Units = units;
-            holding.AverageValue = units.IsEffectivelyEqual(0.0F) ? 0.0d : cost / units;
             holding.Available = available;
+            holding.Qty = movements.Sum(x => x.Units * x.Dimensions.Value);
+
+            holding.AverageValue = units.IsEffectivelyEqual(0.0F) ? 0.0d : cost / units;
+            holding.Weight = holding.Qty * holding.Dimensions.Weight;
         }
     }
     

+ 3 - 2
prs.desktop/Panels/Products/Locations/StockHoldingGrid.cs

@@ -121,6 +121,7 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
                     .Add(x => x.Units)
                     .Add(x => x.AverageValue)            
                     .Add(x => x.Available)            
+                    .Add(x => x.Qty)
             );
             
             query.Add(
@@ -366,7 +367,7 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
 
         movement.CommitChanges();
 
-        var holding = rows.First().ToObject<StockHolding>();
+        var holding = rows.FirstOrDefault()?.ToObject<StockHolding>();
         var smg = CheckStockMovementGrid(MovementAction.Receive, holding);
         var result = smg.EditItems(new[] { movement });
 
@@ -511,7 +512,7 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
         
         var movement = CreateMovementFromHolding(holding);
         movement.JobRequisitionItem.ID = requiitems[0].ID;
-        movement.Received = holding.Units;
+        movement.Received = holding.Available;
         movement.IsTransfer = true;
         movement.Type = StockMovementType.TransferIn;
 

+ 4 - 30
prs.desktop/Panels/Products/Locations/StockTakeWindow.xaml.cs

@@ -91,7 +91,7 @@ namespace PRSDesktop
         {
             CoreTable table = new Client<StockHolding>().Query(new Filter<StockHolding>(x => x.Location.ID).InList(ids.ToArray())
                 .And(x => x.Dimensions.UnitSize).IsNotEqualTo(null)
-                .And(x => x.Qty).IsGreaterThan(0.1),
+                .And(x => x.Units).IsGreaterThan(0),
                 new Columns<StockHolding>(
                     x => x.ID,
                     x => x.Qty,
@@ -146,33 +146,12 @@ namespace PRSDesktop
                 displayHolding.Location.Code = holding.Location.Code;
                 displayHolding.Location.Description = holding.Location.Description;
 
-                displayHolding = CopyDimensions(displayHolding, holding);
+                displayHolding.Dimensions.CopyFrom(holding.Dimensions);
 
                 StockTakeHoldings.Add(displayHolding);
             }
         }
 
-        private StockTakeHolding CopyDimensions(StockTakeHolding display, StockHolding holding)
-        {
-            display.Dimensions.Unit.ID = holding.Dimensions.Unit.ID;
-            display.Dimensions.Unit.HasQuantity = holding.Dimensions.Unit.HasQuantity;
-            display.Dimensions.Unit.HasLength = holding.Dimensions.Unit.HasLength;
-            display.Dimensions.Unit.HasHeight = holding.Dimensions.Unit.HasHeight;
-            display.Dimensions.Unit.HasWeight = holding.Dimensions.Unit.HasWeight;
-            display.Dimensions.Unit.HasWidth = holding.Dimensions.Unit.HasWidth;
-
-            display.Dimensions.Quantity = holding.Dimensions.Quantity;
-            display.Dimensions.Length = holding.Dimensions.Length;
-            display.Dimensions.Height = holding.Dimensions.Height;
-            display.Dimensions.Weight = holding.Dimensions.Weight;
-            display.Dimensions.Width = holding.Dimensions.Width;
-
-            display.Dimensions.Unit.Format = holding.Dimensions.Unit.Format;
-            display.Dimensions.Unit.Formula = holding.Dimensions.Unit.Formula;
-
-            return display;
-        }
-
         #region Editor Setup
         private void Page_OnSave(IDynamicEditorForm editor, BaseObject[] items)
         {
@@ -407,7 +386,7 @@ namespace PRSDesktop
         {
             var batch = new StockMovementBatch();
             batch.Notes = "Stocktake";
-            batch.Employee.ID = EmployeeID;
+            batch.Employee.ID = App.EmployeeID;
             batch.Type = StockMovementBatchType.Stocktake;
 
             new Client<StockMovementBatch>().Save(batch, "Created on Desktop Stocktake");
@@ -446,7 +425,7 @@ namespace PRSDesktop
             movement.Product.ID = holding.Product.ID;
             movement.Job.ID = holding.Job.ID;
             movement.Style.ID = holding.Style.ID;
-            movement.Employee.ID = EmployeeID;
+            movement.Employee.ID = App.EmployeeID;
             movement.Notes = holding.Notes;
             movement = CopyDimensions(movement, holding);
             movement.Date = DateTime.Now;
@@ -571,11 +550,6 @@ namespace PRSDesktop
     #region Grid
     public class StockTakeHoldingGrid : DynamicItemsListGrid<StockTakeHolding>
     {
-        protected override void Reload(Filters<StockTakeHolding> criteria, Columns<StockTakeHolding> columns, ref SortOrder<StockTakeHolding>? sort, Action<CoreTable?, Exception?> action)
-        {
-            base.Reload(criteria, columns, ref sort, action);
-        }
-
         protected override void DoAdd(bool OpenEditorOnDirectEdit = false)
         {
             base.DoAdd(true);