QuoteGrid.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading;
  5. using Comal.Classes;
  6. using InABox.Core;
  7. using InABox.DynamicGrid;
  8. namespace PRSDesktop
  9. {
  10. public class QuoteGrid : DynamicDataGrid<Quote>
  11. {
  12. private Guid _statusid = Guid.Empty;
  13. public QuoteGrid()
  14. {
  15. HiddenColumns.Add(x => x.ID);
  16. HiddenColumns.Add(x => x.Job.ID);
  17. HiddenColumns.Add(x =>x.Number);
  18. HiddenColumns.Add(x =>x.Customer.ID);
  19. HiddenColumns.Add(x =>x.Customer.Code);
  20. HiddenColumns.Add(x =>x.Customer.Name);
  21. HiddenColumns.Add(x =>x.SiteAddress.Street);
  22. HiddenColumns.Add(x =>x.SiteAddress.City);
  23. HiddenColumns.Add(x =>x.SiteAddress.State);
  24. HiddenColumns.Add(x =>x.SiteAddress.PostCode);
  25. HiddenColumns.Add(x =>x.Account.ID);
  26. HiddenColumns.Add(x =>x.Account.Code);
  27. HiddenColumns.Add(x =>x.Account.Name);
  28. HiddenColumns.Add(x =>x.Title);
  29. HiddenColumns.Add(x =>x.Notes);
  30. HiddenColumns.Add(x =>x.Status.ID);
  31. HiddenColumns.Add(x =>x.ExTax);
  32. }
  33. public override DynamicEditorPages LoadEditorPages(Quote item)
  34. {
  35. var result = base.LoadEditorPages(item);
  36. void RemovePage<T>() where T : Entity, new()
  37. {
  38. var page = result.FirstOrDefault(x =>
  39. x is IDynamicGrid
  40. && x.GetType().GetGenericArguments().Length == 2
  41. && x.GetType().GetGenericArguments().Last() == typeof(T));
  42. if (page != null)
  43. result.Remove(page);
  44. }
  45. RemovePage<QuoteDiagram>();
  46. RemovePage<QuoteTakeoff>();
  47. RemovePage<QuoteDesign>();
  48. RemovePage<QuoteSpreadsheet>();
  49. RemovePage<QuoteContract>();
  50. RemovePage<QuoteProposal>();
  51. result.RemoveAll(x => x is QuoteDocumentGrid);
  52. return result;
  53. }
  54. protected override void DoReconfigure(DynamicGridOptions options)
  55. {
  56. base.DoReconfigure(options);
  57. options.RecordCount = true;
  58. options.SelectColumns = true;
  59. options.AddRows = true;
  60. options.EditRows = true;
  61. options.FilterRows = true;
  62. }
  63. protected override void CustomiseEditor(Quote[] items, DynamicGridColumn column, BaseEditor editor)
  64. {
  65. base.CustomiseEditor(items, column, editor);
  66. if(new Column<Quote>(x => x.Customer.ID).IsEqualTo(column.ColumnName) && editor is CodePopupEditor popup)
  67. {
  68. popup.CanAdd = Security.CanEdit<Customer>();
  69. }
  70. }
  71. public Guid StatusID
  72. {
  73. get => _statusid;
  74. set
  75. {
  76. _statusid = value;
  77. Refresh(false, true);
  78. }
  79. }
  80. protected override void Reload(
  81. Filters<Quote> criteria, Columns<Quote> columns, ref SortOrder<Quote>? sort,
  82. CancellationToken token, Action<CoreTable?, Exception?> action)
  83. {
  84. if (_statusid != Guid.Empty)
  85. criteria.Add(new Filter<Quote>(x => x.Status.ID).IsEqualTo(_statusid));
  86. sort = new SortOrder<Quote>(x => x.Number, SortDirection.Descending);
  87. base.Reload(criteria, columns, ref sort, token, action);
  88. }
  89. protected override Dictionary<string, object?> EditorValueChanged(IDynamicEditorForm editor, Quote[] items, string name, object value)
  90. {
  91. var result = base.EditorValueChanged(editor, items, name, value);
  92. if (name.Equals("Customer.ID"))
  93. {
  94. var contact = editor.FindEditor("Contact.ID");
  95. if (contact != null)
  96. contact.Configure();
  97. }
  98. return result;
  99. }
  100. }
  101. }