QuoteGrid.cs 3.9 KB

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