Browse Source

PRS DEKSTOP - auto create a batch when doing stock movements from Locations Screen, fixed bug when saving stock movements

Nick-PRSDigital@bitbucket.org 2 years ago
parent
commit
f6d19a7ed6
1 changed files with 46 additions and 7 deletions
  1. 46 7
      prs.desktop/Panels/Products/Locations/StockHoldingGrid.cs

+ 46 - 7
prs.desktop/Panels/Products/Locations/StockHoldingGrid.cs

@@ -36,7 +36,7 @@ namespace PRSDesktop
         private readonly Button TransferButton;
         private readonly Button TransferButton;
 
 
         public StockHoldingGrid() : base()
         public StockHoldingGrid() : base()
-        {
+        {         
             ColumnsTag = "StockHolding";
             ColumnsTag = "StockHolding";
             Options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns, DynamicGridOption.FilterRows);
             Options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns, DynamicGridOption.FilterRows);
 
 
@@ -84,7 +84,6 @@ namespace PRSDesktop
             HiddenColumns.Add(x => x.Dimensions.Quantity);
             HiddenColumns.Add(x => x.Dimensions.Quantity);
             HiddenColumns.Add(x => x.Dimensions.Value);
             HiddenColumns.Add(x => x.Dimensions.Value);
 
 
-
             _employeeid = GetEmployeeID();
             _employeeid = GetEmployeeID();
         }
         }
 
 
@@ -109,7 +108,6 @@ namespace PRSDesktop
             }
             }
         }
         }
 
 
-
         private Guid GetEmployeeID()
         private Guid GetEmployeeID()
         {
         {
             var employee = new Client<Employee>().Query(
             var employee = new Client<Employee>().Query(
@@ -146,9 +144,10 @@ namespace PRSDesktop
             var bProd = false;
             var bProd = false;
             var bLocn = false;
             var bLocn = false;
             var bStyle = false;
             var bStyle = false;
+            
             foreach (var item in items)
             foreach (var item in items)
             {
             {
-                bQty = bQty || item.Qty == 0.0F;
+                bQty = bQty || (item.Received == 0 && item.Issued == 0);
                 bProd = bProd || !item.Product.IsValid();
                 bProd = bProd || !item.Product.IsValid();
                 bLocn = bLocn || !item.Location.IsValid();
                 bLocn = bLocn || !item.Location.IsValid();
                 bStyle = bStyle || !item.Style.IsValid();
                 bStyle = bStyle || !item.Style.IsValid();
@@ -225,7 +224,7 @@ namespace PRSDesktop
 
 
             if (column.ColumnName.Equals("Employee.ID"))
             if (column.ColumnName.Equals("Employee.ID"))
                 editor.Editable = bTransferring || bReleasing ? Editable.Hidden : Editable.Enabled;
                 editor.Editable = bTransferring || bReleasing ? Editable.Hidden : Editable.Enabled;
-            
+
             if (column.ColumnName.Equals("Units"))
             if (column.ColumnName.Equals("Units"))
                 editor.Editable = Editable.Hidden;
                 editor.Editable = Editable.Hidden;
         }
         }
@@ -251,10 +250,30 @@ namespace PRSDesktop
             bReceiving = false;
             bReceiving = false;
 
 
             if (result)
             if (result)
+            {
                 DoChanged();
                 DoChanged();
+                SaveBatch(StockMovementBatchType.Receipt, new StockMovement[] { movement});
+            }
+               
             return result;
             return result;
         }
         }
 
 
+        private void SaveBatch(StockMovementBatchType type, StockMovement[] movements)
+        {
+            StockMovementBatch batch = new StockMovementBatch();
+            batch.Type = type;
+            batch.Notes = batch.Type + " batch created from Desktop Stock Location Screen";
+            batch.Employee.ID = _employeeid;
+            new Client<StockMovementBatch>().Save(batch, "created from Desktop Stock Location Screen");
+
+            foreach (var mvt in movements)
+            { 
+                mvt.Batch.ID = batch.ID;
+            }
+
+            new Client<StockMovement>().Save(movements, "Updating batch from Desktop Stock Location Screen");
+        }
+
         private bool IssueStock(Button arg1, CoreRow[] rows)
         private bool IssueStock(Button arg1, CoreRow[] rows)
         {
         {
             if (!rows.Any())
             if (!rows.Any())
@@ -293,6 +312,11 @@ namespace PRSDesktop
             var result = smg.EditItems(new[] { movement });
             var result = smg.EditItems(new[] { movement });
             bIssuing = false;
             bIssuing = false;
 
 
+            var mvts = new List<StockMovement>
+            {
+                movement
+            };
+
             // Issuing to a different job than you received into?
             // Issuing to a different job than you received into?
             if (result && holding.Job.ID != movement.Job.ID)
             if (result && holding.Job.ID != movement.Job.ID)
             {
             {
@@ -328,10 +352,15 @@ namespace PRSDesktop
                 receive.System = true;
                 receive.System = true;
 
 
                 new Client<StockMovement>().Save(new[] { issue, receive }, "");
                 new Client<StockMovement>().Save(new[] { issue, receive }, "");
+                mvts.Add(issue);
+                mvts.Add(receive);
             }
             }
 
 
             if (result)
             if (result)
+            {
                 DoChanged();
                 DoChanged();
+                SaveBatch(StockMovementBatchType.Issue, mvts.ToArray());
+            }
             return result;
             return result;
         }
         }
 
 
@@ -362,7 +391,7 @@ namespace PRSDesktop
             movement.Style.Code = holding.Style.Code;
             movement.Style.Code = holding.Style.Code;
             movement.Employee.ID = _employeeid;
             movement.Employee.ID = _employeeid;
             // Must happen before Received gets set so that OnPropertyChanged has stuff to work with and thus Qty is not zero.
             // Must happen before Received gets set so that OnPropertyChanged has stuff to work with and thus Qty is not zero.
-            movement.Dimensions.CopyFrom(holding.Dimensions); 
+            movement.Dimensions.CopyFrom(holding.Dimensions);
             movement.Received = holding.Units;
             movement.Received = holding.Units;
             movement.IsTransfer = true;
             movement.IsTransfer = true;
 
 
@@ -372,6 +401,11 @@ namespace PRSDesktop
             var result = smg.EditItems(new[] { movement });
             var result = smg.EditItems(new[] { movement });
             bTransferring = false;
             bTransferring = false;
 
 
+            var mvts = new List<StockMovement>
+            {
+                movement
+            };
+
             if (result)
             if (result)
             {
             {
                 var other = new StockMovement();
                 var other = new StockMovement();
@@ -387,7 +421,7 @@ namespace PRSDesktop
                 other.Issued = movement.Received;
                 other.Issued = movement.Received;
                 other.Transaction = movement.Transaction;
                 other.Transaction = movement.Transaction;
                 other.Employee.ID = movement.Employee.ID;
                 other.Employee.ID = movement.Employee.ID;
-                other.Dimensions.CopyFrom(holding.Dimensions); 
+                other.Dimensions.CopyFrom(holding.Dimensions);
                 other.IsTransfer = true;
                 other.IsTransfer = true;
 
 
                 var changes = new List<string>();
                 var changes = new List<string>();
@@ -407,10 +441,15 @@ namespace PRSDesktop
                 other.System = true;
                 other.System = true;
 
 
                 new Client<StockMovement>().Save(other, "");
                 new Client<StockMovement>().Save(other, "");
+
+                mvts.Add(other);
             }
             }
 
 
             if (result)
             if (result)
+            {
                 DoChanged();
                 DoChanged();
+                SaveBatch(StockMovementBatchType.Transfer, mvts.ToArray());
+            }
             return result;
             return result;
         }
         }