QuoteProposalGrid.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using Comal.Classes;
  3. using InABox.Core;
  4. using InABox.DynamicGrid;
  5. using InABox.Wpf;
  6. namespace PRSDesktop
  7. {
  8. public class QuoteProposalGrid : DynamicDataGrid<QuoteProposal>, IMasterDetailControl<Quote,QuoteProposal>
  9. {
  10. public Quote? Master { get; set; }
  11. public Filter<QuoteProposal> MasterDetailFilter => Master != null && Master.ID != Guid.Empty
  12. ? new Filter<QuoteProposal>(x => x.Quote.ID).IsEqualTo(Master.ID)
  13. : new Filter<QuoteProposal>().None();
  14. public QuoteProposalGrid()
  15. {
  16. HiddenColumns.Add(x => x.Quote.ID);
  17. HiddenColumns.Add(x => x.ID);
  18. HiddenColumns.Add(x => x.Preamble);
  19. HiddenColumns.Add(x => x.Summary);
  20. HiddenColumns.Add(x => x.ExTax);
  21. HiddenColumns.Add(x => x.TaxCode.ID);
  22. HiddenColumns.Add(x => x.IncTax);
  23. }
  24. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  25. {
  26. base.DoReconfigure(options);
  27. options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns);
  28. }
  29. protected override void Reload(Filters<QuoteProposal> criteria, Columns<QuoteProposal> columns, ref SortOrder<QuoteProposal>? sort, Action<CoreTable?, Exception?> action)
  30. {
  31. criteria.Add(MasterDetailFilter);
  32. base.Reload(criteria, columns, ref sort, action);
  33. }
  34. protected override bool CanCreateItems()
  35. {
  36. return base.CanCreateItems() && (Master?.ID ?? Guid.Empty) != Guid.Empty;
  37. }
  38. public override QuoteProposal CreateItem()
  39. {
  40. var result = base.CreateItem();
  41. result.Quote.ID = Master?.ID ?? Guid.Empty;
  42. result.Quote.Synchronise(Master ?? new Quote());
  43. return result;
  44. }
  45. }
  46. }