RequisitionItemHoldingGrid.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Linq;
  3. using System.Windows.Media.Imaging;
  4. using Comal.Classes;
  5. using InABox.Core;
  6. using InABox.DynamicGrid;
  7. using InABox.WPF;
  8. namespace PRSDesktop
  9. {
  10. internal class RequisitionItemHoldingGrid : DynamicGrid<RequisitionItem>
  11. {
  12. public RequisitionItemHoldingGrid()
  13. {
  14. HiddenColumns.Add(x => x.ID);
  15. HiddenColumns.Add(x => x.Style.ID);
  16. HiddenColumns.Add(x => x.Dimensions.UnitSize);
  17. ActionColumns.Add(new DynamicImageColumn(HoldingImage, HoldingClick) { AllowHeaderClick = false });
  18. }
  19. protected override void Init()
  20. {
  21. }
  22. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  23. {
  24. options.Clear();
  25. }
  26. private BitmapImage HoldingImage(CoreRow arg)
  27. {
  28. return PRSDesktop.Resources.rightarrow.AsBitmapImage();
  29. }
  30. private bool HoldingClick(CoreRow arg)
  31. {
  32. var dlg = new MultiSelectDialog<StockHolding>(
  33. new Filter<StockHolding>(x => x.Product.ID).IsEqualTo(arg.Get<RequisitionItem, Guid>(c => c.Product.ID))
  34. .And(x => x.Style.ID).IsEqualTo(arg.Get<RequisitionItem, Guid>(c => c.Style.ID))
  35. .And(x => x.Dimensions.UnitSize).IsEqualTo(arg.Get<RequisitionItem, String>(c => c.Dimensions.UnitSize)),
  36. new Columns<StockHolding>(x => x.Location.ID, x => x.Location.Code),
  37. false
  38. );
  39. if (dlg.ShowDialog())
  40. {
  41. var holding = dlg.Items().FirstOrDefault();
  42. UpdateRow<RequisitionItem, Guid>(arg, x => x.Location.ID, holding.Location.ID, false);
  43. UpdateRow<RequisitionItem, string>(arg, x => x.Location.Code, holding.Location.Code, false);
  44. return true;
  45. }
  46. return false;
  47. }
  48. protected override DynamicGridColumns LoadColumns()
  49. {
  50. var result = new DynamicGridColumns();
  51. result.Add<RequisitionItem, string>(x => x.Product.Code, 200, "Code", "", Alignment.MiddleLeft);
  52. result.Add<RequisitionItem, string>(x => x.Product.Name, 0, "Description", "", Alignment.MiddleLeft);
  53. result.Add<RequisitionItem, string>(x => x.Style.Description, 0, "Style", "", Alignment.MiddleLeft);
  54. result.Add<RequisitionItem, double>(x => x.Quantity, 100, "Quantity", "", Alignment.MiddleCenter);
  55. result.Add<RequisitionItem, string>(x => x.Location.Code, 0, "Location", "", Alignment.MiddleLeft);
  56. return result;
  57. }
  58. protected override RequisitionItem LoadItem(CoreRow row)
  59. {
  60. return row.ToObject<RequisitionItem>();
  61. }
  62. protected override void Reload(Filters<RequisitionItem> criteria, Columns<RequisitionItem> columns, ref SortOrder<RequisitionItem>? sort,
  63. Action<CoreTable?, Exception?> action)
  64. {
  65. action?.Invoke(MasterData, null);
  66. }
  67. public override void SaveItem(RequisitionItem item)
  68. {
  69. }
  70. protected override void DeleteItems(params CoreRow[] rows)
  71. {
  72. //throw new NotImplementedException();
  73. }
  74. }
  75. }