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

- Disabled "View Order" button on ReservationManagement screen if there are no orders.
- Made it so when you create a new SupplierProduct on ordering screen, if none is already selected, the new one is selected.
- Added default set of columns for POIA grid.

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

+ 11 - 0
prs.desktop/Panels/PurchaseOrders/PurchaseOrderItemAllocationGrid.cs

@@ -13,6 +13,17 @@ namespace PRSDesktop.Panels.PurchaseOrders;
 
 public class PurchaseOrderItemAllocationGrid : DynamicOneToManyGrid<PurchaseOrderItem, PurchaseOrderItemAllocation>
 {
+    public override DynamicGridColumns GenerateColumns()
+    {
+        var columns = new DynamicGridColumns();
+        columns.Add<PurchaseOrderItemAllocation, string>(x => x.Job.JobNumber, 120, "Job Number", "", Alignment.MiddleCenter);
+        columns.Add<PurchaseOrderItemAllocation, string>(x => x.Job.Name, 0, "Job Name", "", Alignment.MiddleLeft);
+        columns.Add<PurchaseOrderItemAllocation, int>(x => x.JobRequisitionItem.Requisition.Number, 120, "Requi #", "", Alignment.MiddleCenter);
+        columns.Add<PurchaseOrderItemAllocation, string>(x => x.JobRequisitionItem.Requisition.Description, 0, "Requi Description", "", Alignment.MiddleLeft);
+        columns.Add<PurchaseOrderItemAllocation, double>(x => x.Quantity, 70, "Quantity", "F2", Alignment.MiddleRight);
+        return columns;
+    }
+
     protected override void DoValidate(PurchaseOrderItemAllocation[] items, List<string> errors)
     {
         base.DoValidate(items, errors);

+ 10 - 3
prs.desktop/Panels/Reservation Management/ReservationManagementItemGrid.cs

@@ -604,13 +604,20 @@ public class ReservationManagementItemGrid : DynamicDataGrid<JobRequisitionItem>
                     x => x.Item.PurchaseOrderLink.PONumber,
                     x => x.Item.PurchaseOrderLink.SupplierLink.Name)
                 .ToArray();
-            foreach (var tuple in orders)
+            if(orders.Length > 0)
             {
-                if(tuple.Item1 != Guid.Empty)
+                foreach (var tuple in orders)
                 {
-                    column.AddItem($"{tuple.Item2}: {tuple.Item3}", PRSDesktop.Resources.purchase, (r) => ViewPurchaseOrder(tuple.Item1), viewOrder);
+                    if(tuple.Item1 != Guid.Empty)
+                    {
+                        column.AddItem($"{tuple.Item2}: {tuple.Item3}", PRSDesktop.Resources.purchase, (r) => ViewPurchaseOrder(tuple.Item1), viewOrder);
+                    }
                 }
             }
+            else
+            {
+                viewOrder.IsEnabled = false;
+            }
         }
     }
 

+ 26 - 17
prs.desktop/Panels/Stock Forecast/OrderScreen/StockForecastOrderingGrid.cs

@@ -472,6 +472,25 @@ public class StockForecastOrderingGrid : DynamicItemsListGrid<StockOrderingItem>
         return supplierProduct;
     }
 
+    private void SetSupplierProduct(StockOrderingItem item, SupplierProduct supplierProduct)
+    {
+        var supplierIdx = Suppliers.WithIndex()
+            .FirstOrDefault(x => x.Value.ID == supplierProduct.SupplierLink.ID, new KeyValuePair<int, SupplierLink>(-1, null)).Key;
+        if(supplierIdx != -1)
+        {
+            var qty = item.GetQuantity(supplierIdx);
+            if(OrderType == StockForecastOrderingType.Breakup)
+            {
+                qty.Breakups.Clear();
+                foreach(var (id, q) in item.GetJobRequiredQuantities())
+                {
+                    qty.Breakups[id] = q;
+                }
+            }
+            qty.OrderTotal = GetRequiredQuantity(item, supplierProduct);
+        }
+    }
+
     private void CalculateSupplierProduct(StockOrderingItem item)
     {
         var selectedSupplierProducts = new List<SupplierProduct>();
@@ -483,25 +502,10 @@ public class StockForecastOrderingGrid : DynamicItemsListGrid<StockOrderingItem>
                 selectedSupplierProducts.Add(supplierProduct);
             }
         }
-
         var selectedSupplierProduct = SelectSupplierProduct(selectedSupplierProducts, item);
         if(selectedSupplierProduct is not null)
         {
-            var supplierIdx = Suppliers.WithIndex()
-                .FirstOrDefault(x => x.Value.ID == selectedSupplierProduct.SupplierLink.ID, new KeyValuePair<int, SupplierLink>(-1, null)).Key;
-            if(supplierIdx != -1)
-            {
-                var qty = item.GetQuantity(supplierIdx);
-                if(OrderType == StockForecastOrderingType.Breakup)
-                {
-                    qty.Breakups.Clear();
-                    foreach(var (id, q) in item.GetJobRequiredQuantities())
-                    {
-                        qty.Breakups[id] = q;
-                    }
-                }
-                qty.OrderTotal = GetRequiredQuantity(item, selectedSupplierProduct);
-            }
+            SetSupplierProduct(item, selectedSupplierProduct);
         }
     }
 
@@ -1113,7 +1117,12 @@ public class StockForecastOrderingGrid : DynamicItemsListGrid<StockOrderingItem>
             var qty = item.GetQuantity(supplierIdx);
             if(qty.SupplierProduct is null)
             {
-                CalculateSupplierProduct(item, supplierIdx);
+                var hasSelected = item.Quantities.Any(x => x.SupplierProduct is not null);
+                var sp = CalculateSupplierProduct(item, supplierIdx);
+                if(!hasSelected && sp is not null)
+                {
+                    SetSupplierProduct(item, sp);
+                }
             }
             InvalidateGrid();
         }