Browse Source

Fixing double refresh on PO screen. Fixed the Cost editor on POItem being enabled when Recieved is set.

Kenric Nugteren 10 months ago
parent
commit
db30a547fe

+ 12 - 10
prs.desktop/Panels/PurchaseOrders/SupplierPurchaseOrderItemOneToMany.cs

@@ -697,11 +697,13 @@ public class SupplierPurchaseOrderItemOneToMany : DynamicOneToManyGrid<PurchaseO
             editor.CurrencySymbol = Item.SupplierLink.Currency.Symbol;
     }
 
+    private readonly Column<PurchaseOrderItem> receivedDateColumn = new Column<PurchaseOrderItem>(x => x.ReceivedDate);
+
     protected override void CustomiseEditor(PurchaseOrderItem[] items, DynamicGridColumn column, BaseEditor editor)
     {
         base.CustomiseEditor(items, column, editor);
 
-        if(items.Any(x => x.ReceivedDate != DateTime.MinValue) && !new Column<PurchaseOrderItem>(x => x.ReceivedDate).IsEqualTo(column.ColumnName) && editor.Editable == Editable.Enabled)
+        if(items.Any(x => x.ReceivedDate != DateTime.MinValue) && !receivedDateColumn.IsEqualTo(column.ColumnName) && editor.Editable == Editable.Enabled)
         {
             editor.Editable = editor.Editable.Combine(Editable.Disabled);
         }
@@ -710,16 +712,16 @@ public class SupplierPurchaseOrderItemOneToMany : DynamicOneToManyGrid<PurchaseO
     protected override void DoReconfigureEditors(DynamicEditorGrid grid, PurchaseOrderItem[] items)
     {
         base.DoReconfigureEditors(grid, items);
-        var fcp = grid.FindEditor(nameof(PurchaseOrderItem.ForeignCurrencyCost)) as CurrencyEditorControl;
-        if (fcp != null)
-        {
-            fcp.SetEnabled(items.All(x=>x.PurchaseOrderLink.SupplierLink.Currency.ID != Guid.Empty));
-            fcp.CurrencySymbol = items.First().PurchaseOrderLink.SupplierLink.Currency.Symbol;
-        }
-        var tp = grid.FindEditor(nameof(PurchaseOrderItem.Cost));
-        if (tp != null)
+
+        if(!items.Any(x => x.ReceivedDate != DateTime.MinValue))
         {
-            tp.SetEnabled(items.All(x=>x.PurchaseOrderLink.SupplierLink.Currency.ID == Guid.Empty));
+            if (grid.FindEditor(nameof(PurchaseOrderItem.ForeignCurrencyCost)) is CurrencyEditorControl fcp)
+            {
+                fcp.SetEnabled(items.All(x => x.PurchaseOrderLink.SupplierLink.Currency.ID != Guid.Empty));
+                fcp.CurrencySymbol = items.First().PurchaseOrderLink.SupplierLink.Currency.Symbol;
+            }
+            var tp = grid.FindEditor(nameof(PurchaseOrderItem.Cost));
+            tp?.SetEnabled(items.All(x=>x.PurchaseOrderLink.SupplierLink.Currency.ID == Guid.Empty));
         }
     }
     

+ 7 - 1
prs.desktop/Panels/PurchaseOrders/SupplierPurchaseOrderPanel.xaml.cs

@@ -253,11 +253,17 @@ public partial class SupplierPurchaseOrderPanel : UserControl, IPanel<PurchaseOr
     {
         using (new WaitCursor())
         {
+            var rows = Orders.SelectedRows;
+
             var cancel = new System.ComponentModel.CancelEventArgs();
             PurchaseOrder.SaveItem(cancel);
-            Orders.Refresh(false, true);
+
             if (!cancel.Cancel)
             {
+                if(_orders is not null)
+                {
+                    Orders.UpdateRows(rows, _orders);
+                }
                 ReloadOrders();
                 SetChanged(false);
             }

+ 4 - 4
prs.desktop/Panels/Reservation Management/ReservationManagementItemGrid.cs

@@ -917,10 +917,10 @@ public class ReservationManagementItemGrid : DynamicDataGrid<JobRequisitionItem>
             args.ColumnGroupings.Clear();
             args.ActionColumns.Clear();
             args.VisibleColumns.Clear();
-            args.VisibleColumns.Add<StockHolding, String>(x => x.Location.Code, 150, "Location", "", Alignment.MiddleLeft);
-            args.VisibleColumns.Add<StockHolding, String>(x => x.Style.Code, 150, "Style Code", "", Alignment.MiddleLeft);
-            args.VisibleColumns.Add<StockHolding, String>(x => x.Style.Description, 0, "Style", "", Alignment.MiddleLeft);
-            args.VisibleColumns.Add<StockHolding, String>(x => x.Dimensions.UnitSize, 150, "Unit Size", "", Alignment.MiddleLeft);
+            args.VisibleColumns.Add<StockHolding, string>(x => x.Location.Code, 150, "Location", "", Alignment.MiddleLeft);
+            args.VisibleColumns.Add<StockHolding, string>(x => x.Style.Code, 150, "Style Code", "", Alignment.MiddleLeft);
+            args.VisibleColumns.Add<StockHolding, string>(x => x.Style.Description, 0, "Style", "", Alignment.MiddleLeft);
+            args.VisibleColumns.Add<StockHolding, string>(x => x.Dimensions.UnitSize, 150, "Unit Size", "", Alignment.MiddleLeft);
             args.VisibleColumns.Add<StockHolding, double>(x => x.Units, 100, "Quantity", "", Alignment.MiddleCenter);
             args.VisibleColumns.Add<StockHolding, double>(x => x.AverageValue, 100, "Cost $", "", Alignment.MiddleCenter);
         };

+ 1 - 5
prs.desktop/Panels/Suppliers/Bills/SupplierBillPanel.xaml.cs

@@ -180,11 +180,7 @@ public partial class SupplierBillPanel : UserControl, IPanel<Bill>, IPropertiesP
             {
                 if(_editRows is not null && _bills is not null)
                 {
-                    for(var i = 0; i < _editRows.Length; ++i)
-                    {
-                        Bills.UpdateRow(_editRows[i], _bills[i]);
-                        Bills.InvalidateRow(_editRows[i]);
-                    }
+                    Bills.UpdateRows(_editRows, _bills);
                 }
                 ReloadBills();
                 SetChanged(false);