Browse Source

Added transferring negative units to for StockHolding relocate, by swapping the TransferIn and TransferOut

Kenric Nugteren 6 days ago
parent
commit
282ae7bc24
1 changed files with 25 additions and 12 deletions
  1. 25 12
      prs.desktop/Panels/Products/Locations/StockHoldingGrid.cs

+ 25 - 12
prs.desktop/Panels/Products/Locations/StockHoldingGrid.cs

@@ -349,23 +349,36 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
         foreach(var requi in requiitems)
         {
             var qty = getQuantity(requi);
-            if (!qty.HasValue || qty.Value <= 0) continue;
+            if (!qty.HasValue || qty.Value == 0) continue;
 
             var mout = holding.CreateMovement();
-            mout.Issued = qty.Value;
             mout.Cost = holding.AverageValue;
             mout.Date = DateTime.Now;
             mout.Employee.ID = App.EmployeeID;
-            mout.Type = StockMovementType.TransferOut;
 
             var min = mout.CreateMovement();
-            min.Received = qty.Value;
             min.Cost = holding.AverageValue;
             min.Employee.ID = App.EmployeeID;
-            min.Type = StockMovementType.TransferIn;
             min.Date = mout.Date;
             min.Transaction = mout.Transaction;
 
+            if(qty.Value > 0)
+            {
+                mout.Issued = qty.Value;
+                mout.Type = StockMovementType.TransferOut;
+
+                min.Received = qty.Value;
+                min.Type = StockMovementType.TransferIn;
+            }
+            else
+            {
+                min.Issued = -qty.Value;
+                min.Type = StockMovementType.TransferOut;
+
+                mout.Received = -qty.Value;
+                mout.Type = StockMovementType.TransferIn;
+            }
+
             modify(requi, mout, min);
 
             updates.Add(mout);
@@ -605,15 +618,15 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
                 Columns.None<StockMovement>().Add(x => x.Units).Add(x => x.JobRequisitionItem.ID))
                 .ToObjects<StockMovement>().GroupBy(x => x.JobRequisitionItem.ID).ToDictionary(x => x.Key, x => x.Sum(x => x.Units));
 
-            DoTransfer(holding, items, x => x.ID == Guid.Empty ? x.Qty : quantities.GetValueOrDefault(x.ID), (requi, mout, min) =>
+            DoTransfer(holding, items, x => x.ID == Guid.Empty ? x.Qty : quantities.GetValueOrDefault(x.ID), (requi, mThis, mThat) =>
             {
-                mout.JobRequisitionItem.ID = requi.ID;
-                mout.Notes = $"Moved to {target.Code} by {App.EmployeeName}";
+                mThis.JobRequisitionItem.ID = requi.ID;
+                mThis.Notes = $"Moved to {target.Code} by {App.EmployeeName}";
 
-                min.JobRequisitionItem.ID = requi.ID;
-                min.Notes = $"Moved to {target.Code} by {App.EmployeeName}";
-                min.Location.Clear();
-                min.Location.ID = target.ID;
+                mThat.JobRequisitionItem.ID = requi.ID;
+                mThat.Notes = $"Moved to {target.Code} by {App.EmployeeName}";
+                mThat.Location.Clear();
+                mThat.Location.ID = target.ID;
             }, updates);
         }