Просмотр исходного кода

Made LoadRequisitionItems always load negative and zero holdings. Fixed some bugs with the issue button on StockHoldings, allowing for negative General stock. Fixed a bug with StockMovementGrid, where the columns being changed did break it.

Kenric Nugteren 1 год назад
Родитель
Сommit
3f2772b195

+ 1 - 1
prs.desktop/Panels/Factory/FactoryPackGrid.cs

@@ -399,7 +399,7 @@ public class FactoryPackGrid : DynamicDataGrid<StockHolding>
         }
         
         var holding = holdingrow.ToObject<StockHolding>();
-        var requiitems = holding.LoadRequisitionItems().ToArray();
+        var requiitems = holding.LoadRequisitionItems(true).ToArray();
         var ffi = new FactoryFloorIssue()
         {
             RequisitionItems = requiitems,

+ 9 - 13
prs.desktop/Panels/Products/Locations/StockHoldingGrid.cs

@@ -250,7 +250,7 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
         
         column.AddSeparator();
 
-        var requiitems = holding.LoadRequisitionItems().ToList();
+        var requiitems = holding.LoadRequisitionItems(true).ToList();
         
         column.AddItem("Relocate Items", null, r => RelocateItems(holding, requiitems.ToArray()));
     }
@@ -396,7 +396,7 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
         }
         
         var holding = rows.First().ToObject<StockHolding>();
-        var items = holding.LoadRequisitionItems().AsArray();
+        var items = holding.LoadRequisitionItems(true).AsArray();
 
         DoIssue(holding, items);
         return false;
@@ -446,7 +446,8 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
         {
             var win = new StockHoldingRelocationWindow(holding, requiitems)
             {
-                IsTargetEditable = false
+                IsTargetEditable = false,
+                Title = "Issue Items"
             };
             if (win.ShowDialog() == true)
             {
@@ -464,8 +465,8 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
                     updates.AddRange(CreateIssue(holding, issue, requi.ID));
                 }
                 DoChanged();
-                Refresh(false,true);
                 SaveBatch(StockMovementBatchType.Issue, updates.ToArray());
+                Refresh(false,true);
             }
         }
         else
@@ -473,17 +474,12 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
             var sjs = new StockIssue();
             sjs.Job.ID = holding.Job.ID;
             sjs.Qty = requiitems[0].Qty;
-            
-            var sjg = new DynamicItemsListGrid<StockIssue>();
-            sjg.OnValidate += (sender, items, errors) =>
-            {
-                if (items[0].Qty > requiitems[0].Qty)
-                        errors.Add($"Qty must not exceed {requiitems[0].Qty}");
-            };
-            if (sjg.EditItems(new StockIssue[] { sjs }))
+
+            if (DynamicGridUtils.EditObject(sjs))
             {
                 var mvts = CreateIssue(holding, sjs, Guid.Empty);
                 SaveBatch(StockMovementBatchType.Issue, mvts.AsArray());
+                Refresh(false, true);
             }
         }
     }
@@ -494,7 +490,7 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
             return false;
         
         var holding = rows.First().ToObject<StockHolding>();
-        var items = holding.LoadRequisitionItems().AsArray();
+        var items = holding.LoadRequisitionItems(true).AsArray();
 
         DoTransfer(holding, items);
         return false;

+ 1 - 1
prs.desktop/Panels/Products/Locations/StockHoldingRelocationWindow.xaml

@@ -185,7 +185,7 @@
                                             Grid.Column="5" 
                                             Value="{Binding Issued}" 
                                             MinValue="0" 
-                                            MaxValue="{Binding Quantity}"
+                                            MaxValue="{Binding MaxValue}"
                                             HorizontalContentAlignment="Center"
                                             VerticalAlignment="Stretch"
                                             VerticalContentAlignment="Center"

+ 12 - 2
prs.desktop/Panels/Products/Locations/StockHoldingRelocationWindow.xaml.cs

@@ -40,6 +40,8 @@ public class StockHoldingRelocationItem : INotifyPropertyChanged
         }
     }
 
+    public double MaxValue { get; set; }
+
     public Guid ID { get; set; }
 
     public event PropertyChangedEventHandler? PropertyChanged;
@@ -157,6 +159,7 @@ public partial class StockHoldingRelocationWindow : Window, INotifyPropertyChang
             {
                 Issued = 0,
                 Quantity = qty,
+                MaxValue = item.ID == Guid.Empty ? double.MaxValue : qty,
                 Text = item.ID == Guid.Empty
                     ? "Unrequisitioned Items"
                     : $"{item.Job.JobNumber}:{item.Requisition.Number} {item.Requisition.Description} ({qty})",
@@ -218,7 +221,14 @@ public partial class StockHoldingRelocationWindow : Window, INotifyPropertyChang
     {
         if (sender is not FrameworkElement element || element.Tag is not StockHoldingRelocationItem item) return;
 
-        item.Issued = Math.Min(item.Issued + 1, item.Quantity);
+        if(item.ID == Guid.Empty)
+        {
+            item.Issued += 1;
+        }
+        else
+        {
+            item.Issued = Math.Min(item.Issued + 1, item.Quantity);
+        }
     }
     private void None_Click(object sender, RoutedEventArgs e)
     {
@@ -230,7 +240,7 @@ public partial class StockHoldingRelocationWindow : Window, INotifyPropertyChang
     {
         if (sender is not FrameworkElement element || element.Tag is not StockHoldingRelocationItem item) return;
 
-        item.Issued = item.Quantity;
+        item.Issued = Math.Max(0, item.Quantity);
     }
 
     private bool DoLookup(string? column, string? value)

+ 8 - 1
prs.desktop/Panels/Products/Locations/StockMovementGrid.cs

@@ -71,6 +71,8 @@ public class StockMovementGrid : DynamicDataGrid<StockMovement>, IDataModelSourc
         HiddenColumns.Add(x => x.PostedStatus);
         HiddenColumns.Add(x => x.PostedNote);
 
+        BeforeRefresh += StockMovementGrid_BeforeRefresh;
+
         ActionColumns.Add(new DynamicImageColumn(Posted_Image, null)
         {
             ToolTip = Posted_ToolTip
@@ -247,6 +249,11 @@ public class StockMovementGrid : DynamicDataGrid<StockMovement>, IDataModelSourc
         base.DeleteItems(allrecords.Rows.ToArray());
     }
 
+    private void StockMovementGrid_BeforeRefresh(object sender, BeforeRefreshEventArgs args)
+    {
+        syscolumn = -1;
+    }
+
     //int typecolumn = -1;
     protected override DynamicGridStyle GetRowStyle(CoreRow row, DynamicGridStyle style)
     {
@@ -257,7 +264,7 @@ public class StockMovementGrid : DynamicDataGrid<StockMovement>, IDataModelSourc
             syscolumn = row.Table.Columns.IndexOf(col);
         }
 
-        if (row.Values[syscolumn].Equals(true)) //row.Get<StockMovement, bool>(x => x.System))
+        if (object.Equals(row.Values[syscolumn], true)) //row.Get<StockMovement, bool>(x => x.System))
         {
             result = new DynamicGridRowStyle
             {