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

Added button to view all relevant stock movements on summary screen

Kenric Nugteren 1 год назад
Родитель
Сommit
b867166074
1 измененных файлов с 66 добавлено и 2 удалено
  1. 66 2
      prs.desktop/Panels/Jobs/JobSummaryGrid.cs

+ 66 - 2
prs.desktop/Panels/Jobs/JobSummaryGrid.cs

@@ -11,7 +11,9 @@ using InABox.Clients;
 using InABox.Core;
 using InABox.DynamicGrid;
 using InABox.WPF;
-
+using PRSDesktop.Panels.Jobs;
+using Syncfusion.UI.Xaml.Charts;
+using Syncfusion.UI.Xaml.Diagram.Theming;
 
 namespace PRSDesktop
 {
@@ -61,6 +63,8 @@ namespace PRSDesktop
             ActionColumns.Add(new DynamicImageManagerColumn<JobMaterial>(this, x => x.Product.Image, false)
             { Position = DynamicActionColumnPosition.Start });
 
+            ActionColumns.Add(new DynamicMenuColumn(BuildMenu));
+
             AddButton("Create PO", null, CreatePO);
         }
 
@@ -100,7 +104,67 @@ namespace PRSDesktop
             columns.Add<JobMaterial, double>(x => x.FreeStockTotal, 80, "Free Stock", "", Alignment.MiddleCenter);
             columns.Add<JobMaterial, double>(x => x.FreeStockShortage, 80, "Stk Short", "", Alignment.MiddleCenter);
         }
-        
+
+        private void BuildMenu(DynamicMenuColumn column, CoreRow? row)
+        {
+            if (row is null) return;
+            var menu = column.GetMenu();
+            menu.AddItem("View Stock Movements", PRSDesktop.Resources.forklift, row, ViewStockMovements_Click);
+        }
+
+        private void ViewStockMovements_Click(CoreRow row)
+        {
+            var productID = row.Get<StockSummary, Guid>(c => c.Product.ID);
+            Guid? styleID = StyleColumnVisible() ? row.Get<StockSummary, Guid>(c => c.Style.ID) : null;
+            var unitSize = row.Get<StockSummary, String>(c => c.Dimensions.UnitSize);
+
+            /*ShowDetailGrid<StockMovement>(
+                args.Column.ColumnName,
+                x => x.Product.ID,
+                productid,
+                x => x.Style.ID,
+                styleid,
+                x => x.Dimensions.UnitSize,
+                unitsize,
+                x => x.Job.ID,
+                new Filter<StockMovement>(x => x.IsTransfer).IsEqualTo(false).And(x => x.Issued).IsNotEqualTo(0.0F),
+                null
+            );
+            var movements = Client.Query<StockMovement>(
+                );*/
+
+            var grid = (Activator.CreateInstance(typeof(DynamicDataGrid<>).MakeGenericType(typeof(StockMovement))) as DynamicDataGrid<StockMovement>);
+            if (grid == null)
+            {
+                MessageBox.Show($"Cannot create Grid for [{typeof(StockMovement).Name}]");
+                return;
+            }
+            grid.ColumnsTag = $"{ColumnsTag}.Transactions";
+            grid.Reconfigure(options =>
+            {
+                options.BeginUpdate().Clear().AddRange(DynamicGridOption.FilterRows, DynamicGridOption.SelectColumns).EndUpdate();
+            });
+            grid.OnReload += (object sender, Filters<StockMovement> criteria, Columns<StockMovement> columns, ref SortOrder<StockMovement>? sortby) =>
+            {
+                var filter = criteria.Combine();
+                criteria.Clear();
+                criteria.Add(new Filter<StockMovement>(x => x.Transaction).InQuery(filter, x => x.Transaction));
+            };
+
+            grid.OnDefineFilter += t =>
+            {
+                var filter = new Filter<StockMovement>(x => x.Product.ID).IsEqualTo(productID)
+                    .And(x => x.Dimensions.UnitSize).IsEqualTo(unitSize);
+                if (styleID.HasValue)
+                    filter = filter.And(x => x.Style.ID).IsEqualTo(styleID);
+                filter = filter.And(x => x.Job.ID).IsEqualTo(Job.ID);
+                return filter;
+            };
+
+            var window = DynamicGridUtils.CreateGridWindow($"Stock Movements", grid);
+            window.ShowDialog();
+        }
+
         private void ShowDetailGrid<TEntity>(
             String columnname, 
             Expression<Func<TEntity,object?>> productcol,