|
@@ -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,
|