RequisitionItemHoldingGrid.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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.Style.ID);
  17. HiddenColumns.Add(x => x.Dimensions.UnitSize);
  18. ActionColumns.Add(new DynamicImageColumn(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))
  28. .And(x => x.Style.ID).IsEqualTo(arg.Get<RequisitionItem, Guid>(c => c.Style.ID))
  29. .And(x => x.Dimensions.UnitSize).IsEqualTo(arg.Get<RequisitionItem, String>(c => c.Dimensions.UnitSize)),
  30. new Columns<StockHolding>(x => x.Location.ID, x => x.Location.Code),
  31. false
  32. );
  33. if (dlg.ShowDialog())
  34. {
  35. var holding = dlg.Items().FirstOrDefault();
  36. UpdateRow<RequisitionItem, Guid>(arg, x => x.Location.ID, holding.Location.ID, false);
  37. UpdateRow<RequisitionItem, string>(arg, x => x.Location.Code, holding.Location.Code, false);
  38. return true;
  39. }
  40. return false;
  41. }
  42. protected override DynamicGridColumns LoadColumns()
  43. {
  44. var result = new DynamicGridColumns();
  45. result.Add<RequisitionItem, string>(x => x.Product.Code, 200, "Code", "", Alignment.MiddleLeft);
  46. result.Add<RequisitionItem, string>(x => x.Product.Name, 0, "Description", "", Alignment.MiddleLeft);
  47. result.Add<RequisitionItem, string>(x => x.Style.Description, 0, "Style", "", Alignment.MiddleLeft);
  48. result.Add<RequisitionItem, double>(x => x.Quantity, 100, "Quantity", "", Alignment.MiddleCenter);
  49. result.Add<RequisitionItem, string>(x => x.Location.Code, 0, "Location", "", Alignment.MiddleLeft);
  50. return result;
  51. }
  52. protected override RequisitionItem LoadItem(CoreRow row)
  53. {
  54. return row.ToObject<RequisitionItem>();
  55. }
  56. protected override void Reload(Filters<RequisitionItem> criteria, Columns<RequisitionItem> columns, ref SortOrder<RequisitionItem> sort,
  57. Action<CoreTable, Exception> action)
  58. {
  59. action?.Invoke(MasterData, null);
  60. }
  61. public override void SaveItem(RequisitionItem item)
  62. {
  63. }
  64. protected override void DeleteItems(params CoreRow[] rows)
  65. {
  66. //throw new NotImplementedException();
  67. }
  68. }
  69. }