ReservationManagementSubstitutionGrid.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using System;
  2. using System.Threading;
  3. using System.Windows.Controls;
  4. using Comal.Classes;
  5. using InABox.Core;
  6. using InABox.DynamicGrid;
  7. using InABox.WPF;
  8. namespace PRSDesktop;
  9. public class ReservationManagementSubstitutionGrid : DynamicDataGrid<StockHolding>
  10. {
  11. private bool initialized;
  12. private JobRequisitionItem? jri;
  13. private bool freeStockOnly;
  14. public JobRequisitionItem? JRI
  15. {
  16. get => jri;
  17. set
  18. {
  19. jri = value;
  20. Refresh(!initialized,true);
  21. }
  22. }
  23. public bool FreeStockOnly
  24. {
  25. get => freeStockOnly;
  26. set
  27. {
  28. freeStockOnly = value;
  29. Refresh(!initialized, true);
  30. }
  31. }
  32. public bool UpdateStyle { get; set; }
  33. private bool SubstituteProduct(CoreRow? row)
  34. {
  35. return true;
  36. }
  37. protected override void DoReconfigure(DynamicGridOptions options)
  38. {
  39. options.Clear();
  40. }
  41. protected override DynamicGridColumns LoadColumns()
  42. {
  43. var result = new DynamicGridColumns();
  44. result.Add<StockHolding,string>(x => x.Dimensions.UnitSize, 100, "Substitutes", "", Alignment.MiddleCenter);
  45. result.Add<StockHolding,string>(x => x.Style.Description, 0, "Style", "", Alignment.MiddleCenter);
  46. result.Add<StockHolding,string>(x => x.Location.Code, 100, "Location", "", Alignment.MiddleCenter);
  47. result.Add<StockHolding,string>(x => x.Job.JobNumber, 70, "Job", "", Alignment.MiddleCenter);
  48. result.Add<StockHolding,double>(x => x.Available, 60, "Avail.", "F2", Alignment.MiddleCenter);
  49. return result;
  50. }
  51. protected override void Init()
  52. {
  53. base.Init();
  54. HiddenColumns.Add(x=>x.Job.ID);
  55. HiddenColumns.Add(x=>x.Job.JobNumber);
  56. HiddenColumns.Add(x=>x.Job.Name);
  57. HiddenColumns.Add(x=>x.Style.ID);
  58. HiddenColumns.Add(x=>x.Style.Code);
  59. HiddenColumns.Add(x=>x.Style.Description);
  60. HiddenColumns.Add(x => x.Dimensions.UnitSize);
  61. HiddenColumns.Add(x => x.Dimensions.Length);
  62. HiddenColumns.Add(x => x.Dimensions.Width);
  63. HiddenColumns.Add(x => x.Dimensions.Height);
  64. HiddenColumns.Add(x => x.Dimensions.Weight);
  65. HiddenColumns.Add(x => x.Dimensions.Quantity);
  66. HiddenColumns.Add(x => x.Dimensions.Value);
  67. HiddenColumns.Add(x => x.Dimensions.Unit.ID);
  68. HiddenColumns.Add(x => x.Dimensions.Unit.HasLength);
  69. HiddenColumns.Add(x => x.Dimensions.Unit.HasHeight);
  70. HiddenColumns.Add(x => x.Dimensions.Unit.HasWidth);
  71. HiddenColumns.Add(x => x.Dimensions.Unit.HasWeight);
  72. HiddenColumns.Add(x => x.Dimensions.Unit.HasQuantity);
  73. HiddenColumns.Add(x => x.Dimensions.Unit.Formula);
  74. HiddenColumns.Add(x => x.Dimensions.Unit.Format);
  75. HiddenColumns.Add(x => x.Dimensions.Unit.Code);
  76. HiddenColumns.Add(x => x.Dimensions.Unit.Description);
  77. HiddenColumns.Add(x => x.Available);
  78. }
  79. protected override void Reload(Filters<StockHolding> criteria, Columns<StockHolding> columns, ref SortOrder<StockHolding>? sort, CancellationToken token, Action<CoreTable?, Exception?> action)
  80. {
  81. initialized = true;
  82. if (jri != null)
  83. {
  84. criteria.Add(new Filter<StockHolding>(x => x.Product.ID).IsEqualTo(jri.Product.ID)
  85. .And(
  86. new Filter<StockHolding>(x => x.Style.ID).IsNotEqualTo(jri.Style.ID)
  87. .Or(x => x.Dimensions.Unit.ID).IsNotEqualTo(jri.Dimensions.Unit.ID)
  88. .Or(x => x.Dimensions.Height).IsNotEqualTo(jri.Dimensions.Height)
  89. .Or(x => x.Dimensions.Width).IsNotEqualTo(jri.Dimensions.Width)
  90. .Or(x => x.Dimensions.Length).IsNotEqualTo(jri.Dimensions.Length)
  91. .Or(x => x.Dimensions.Quantity).IsNotEqualTo(jri.Dimensions.Quantity)
  92. .Or(x => x.Dimensions.Weight).IsNotEqualTo(jri.Dimensions.Weight)
  93. )
  94. );
  95. if (FreeStockOnly)
  96. criteria.Add(new Filter<StockHolding>(x => x.Job.ID).IsEqualTo(Guid.Empty));
  97. }
  98. else
  99. criteria.Add(new Filter<StockHolding>().None());
  100. base.Reload(criteria, columns, ref sort, token, action);
  101. }
  102. }