QuoteProposalGrid.cs 1.9 KB

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