using System; using System.Threading; using System.Windows.Controls; using Comal.Classes; using InABox.Core; using InABox.DynamicGrid; using InABox.WPF; namespace PRSDesktop; public class ReservationManagementSubstitutionGrid : DynamicDataGrid { private bool initialized; private JobRequisitionItem? jri; private bool freeStockOnly; public JobRequisitionItem? JRI { get => jri; set { jri = value; Refresh(!initialized,true); } } public bool FreeStockOnly { get => freeStockOnly; set { freeStockOnly = value; Refresh(!initialized, true); } } public bool UpdateStyle { get; set; } private bool SubstituteProduct(CoreRow? row) { return true; } protected override void DoReconfigure(DynamicGridOptions options) { options.Clear(); } protected override DynamicGridColumns LoadColumns() { var result = new DynamicGridColumns(); result.Add(x => x.Dimensions.UnitSize, 100, "Substitutes", "", Alignment.MiddleCenter); result.Add(x => x.Style.Description, 0, "Style", "", Alignment.MiddleCenter); result.Add(x => x.Location.Code, 100, "Location", "", Alignment.MiddleCenter); result.Add(x => x.Job.JobNumber, 70, "Job", "", Alignment.MiddleCenter); result.Add(x => x.Available, 60, "Avail.", "F2", Alignment.MiddleCenter); return result; } protected override void Init() { base.Init(); HiddenColumns.Add(x=>x.Job.ID); HiddenColumns.Add(x=>x.Job.JobNumber); HiddenColumns.Add(x=>x.Job.Name); HiddenColumns.Add(x=>x.Style.ID); HiddenColumns.Add(x=>x.Style.Code); HiddenColumns.Add(x=>x.Style.Description); HiddenColumns.Add(x => x.Dimensions.UnitSize); HiddenColumns.Add(x => x.Dimensions.Length); HiddenColumns.Add(x => x.Dimensions.Width); HiddenColumns.Add(x => x.Dimensions.Height); HiddenColumns.Add(x => x.Dimensions.Weight); HiddenColumns.Add(x => x.Dimensions.Quantity); HiddenColumns.Add(x => x.Dimensions.Value); HiddenColumns.Add(x => x.Dimensions.Unit.ID); HiddenColumns.Add(x => x.Dimensions.Unit.HasLength); HiddenColumns.Add(x => x.Dimensions.Unit.HasHeight); HiddenColumns.Add(x => x.Dimensions.Unit.HasWidth); HiddenColumns.Add(x => x.Dimensions.Unit.HasWeight); HiddenColumns.Add(x => x.Dimensions.Unit.HasQuantity); HiddenColumns.Add(x => x.Dimensions.Unit.Formula); HiddenColumns.Add(x => x.Dimensions.Unit.Format); HiddenColumns.Add(x => x.Dimensions.Unit.Code); HiddenColumns.Add(x => x.Dimensions.Unit.Description); HiddenColumns.Add(x => x.Available); HiddenColumns.Add(x => x.AverageValue); foreach(var column in StockHolding.Columns) { HiddenColumns.Add(column); } } protected override void Reload(Filters criteria, Columns columns, ref SortOrder? sort, CancellationToken token, Action action) { initialized = true; if (jri != null) { criteria.Add(new Filter(x => x.Product.ID).IsEqualTo(jri.Product.ID) .And( new Filter(x => x.Style.ID).IsNotEqualTo(jri.Style.ID) .Or(x => x.Dimensions.Unit.ID).IsNotEqualTo(jri.Dimensions.Unit.ID) .Or(x => x.Dimensions.Height).IsNotEqualTo(jri.Dimensions.Height) .Or(x => x.Dimensions.Width).IsNotEqualTo(jri.Dimensions.Width) .Or(x => x.Dimensions.Length).IsNotEqualTo(jri.Dimensions.Length) .Or(x => x.Dimensions.Quantity).IsNotEqualTo(jri.Dimensions.Quantity) .Or(x => x.Dimensions.Weight).IsNotEqualTo(jri.Dimensions.Weight) ) ); if (FreeStockOnly) criteria.Add(new Filter(x => x.Job.ID).IsEqualTo(Guid.Empty)); } else criteria.Add(new Filter().None()); base.Reload(criteria, columns, ref sort, token, action); } }