فهرست منبع

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

Kenric Nugteren 11 ماه پیش
والد
کامیت
282ae7bc24
1فایلهای تغییر یافته به همراه25 افزوده شده و 12 حذف شده
  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);
         }