RequisitionItemHoldingGrid.cs 3.3 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. Options.Clear();
  15. HiddenColumns.Add(x => x.ID);
  16. HiddenColumns.Add(x => x.Holding.ID);
  17. HiddenColumns.Add(x => x.Style.ID);
  18. ActionColumns.Add(new DynamicActionColumn(HoldingImage, HoldingClick) { AllowHeaderClick = false });
  19. }
  20. private BitmapImage HoldingImage(CoreRow arg)
  21. {
  22. return PRSDesktop.Resources.rightarrow.AsBitmapImage();
  23. }
  24. private bool HoldingClick(CoreRow arg)
  25. {
  26. var dlg = new MultiSelectDialog<StockHolding>(
  27. new Filter<StockHolding>(x => x.Product.ID).IsEqualTo(arg.Get<RequisitionItem, Guid>(c => c.Product.ID)).And(x => x.Location.Active)
  28. .IsEqualTo(true),
  29. new Columns<StockHolding>(x => x.ID, x => x.Location.Area.Warehouse.Code, x => x.Location.Area.Code, x => x.Location.Code,
  30. x => x.Location.Description, x => x.Units, x => x.Style.ID),
  31. false
  32. );
  33. if (dlg.ShowDialog())
  34. {
  35. var holding = dlg.Items().FirstOrDefault();
  36. UpdateRow<RequisitionItem, Guid>(arg, x => x.Holding.ID, holding.ID, false);
  37. UpdateRow<RequisitionItem, string>(arg, x => x.Holding.Location.Code, holding.Location.Code, false);
  38. UpdateRow<RequisitionItem, Guid>(arg, x => x.Holding.Style.ID, holding.Style.ID, false);
  39. UpdateRow<RequisitionItem, string>(arg, x => x.Holding.Style.Description, holding.Style.Description);
  40. return true;
  41. }
  42. return false;
  43. }
  44. public override void ConfigureColumns(DynamicGridColumns columns)
  45. {
  46. base.ConfigureColumns(columns);
  47. }
  48. protected override void DeleteItems(params CoreRow[] rows)
  49. {
  50. throw new NotImplementedException();
  51. }
  52. protected override DynamicGridColumns LoadColumns()
  53. {
  54. var result = new DynamicGridColumns();
  55. result.Add<RequisitionItem, string>(x => x.Product.Code, 200, "Code", "", Alignment.MiddleLeft);
  56. result.Add<RequisitionItem, string>(x => x.Product.Name, 0, "Description", "", Alignment.MiddleLeft);
  57. result.Add<RequisitionItem, string>(x => x.Style.Description, 0, "Style", "", Alignment.MiddleLeft);
  58. result.Add<RequisitionItem, double>(x => x.Quantity, 100, "Quantity", "", Alignment.MiddleCenter);
  59. result.Add<RequisitionItem, string>(x => x.Holding.Location.Code, 0, "Location", "", Alignment.MiddleLeft);
  60. return result;
  61. }
  62. protected override RequisitionItem LoadItem(CoreRow row)
  63. {
  64. return row.ToObject<RequisitionItem>();
  65. }
  66. protected override void Reload(Filters<RequisitionItem> criteria, Columns<RequisitionItem> columns, ref SortOrder<RequisitionItem> sort,
  67. Action<CoreTable, Exception> action)
  68. {
  69. action?.Invoke(MasterData, null);
  70. }
  71. protected override void SaveItem(RequisitionItem item)
  72. {
  73. }
  74. }
  75. }