Browse Source

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

Kenric Nugteren 10 tháng trước cách đây
mục cha
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);