JobOrderGrid.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.Linq;
  3. using Comal.Classes;
  4. using InABox.Core;
  5. using InABox.DynamicGrid;
  6. using InABox.Wpf;
  7. namespace PRSDesktop
  8. {
  9. public class JobOrderGrid : DynamicDataGrid<PurchaseOrderItem>, IMasterDetailControl<Job,PurchaseOrderItem>, IDataModelSource
  10. {
  11. public Job? Master { get; set; }
  12. public Filter<PurchaseOrderItem> MasterDetailFilter => (Master?.ID ?? Guid.Empty) != Guid.Empty
  13. ? new Filter<PurchaseOrderItem>(x => x.Job.ID).IsEqualTo(Master.ID)
  14. : new Filter<PurchaseOrderItem>().None();
  15. public JobOrderGrid()
  16. {
  17. ColumnsTag = "JobOrders";
  18. HiddenColumns.Add(x => x.PurchaseOrderLink.SupplierLink.ID);
  19. HiddenColumns.Add(x => x.PurchaseOrderLink.Category.ID);
  20. HiddenColumns.Add(x => x.ID);
  21. HiddenColumns.Add(x => x.Product.ID);
  22. HiddenColumns.Add(x => x.Product.Code);
  23. HiddenColumns.Add(x => x.Product.Name);
  24. HiddenColumns.Add(x => x.Description);
  25. HiddenColumns.Add(x => x.TaxCode.ID);
  26. HiddenColumns.Add(x => x.TaxCode.Code);
  27. HiddenColumns.Add(x => x.TaxCode.Description);
  28. HiddenColumns.Add(x => x.TaxCode.Rate);
  29. HiddenColumns.Add(x => x.TaxRate);
  30. HiddenColumns.Add(x => x.ExTax);
  31. HiddenColumns.Add(x => x.Tax);
  32. HiddenColumns.Add(x => x.IncTax);
  33. HiddenColumns.Add(x => x.BillLine.ID);
  34. HiddenColumns.Add(x => x.Consignment.ID);
  35. HiddenColumns.Add(x => x.Product.DigitalForm.ID);
  36. HiddenColumns.Add(x => x.Product.DigitalForm.Description);
  37. HiddenColumns.Add(x => x.PurchaseOrderLink.SupplierLink.Code);
  38. HiddenColumns.Add(x => x.PurchaseOrderLink.SupplierLink.Name);
  39. }
  40. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  41. {
  42. base.DoReconfigure(options);
  43. options.AddRange(
  44. DynamicGridOption.RecordCount,
  45. DynamicGridOption.SelectColumns,
  46. DynamicGridOption.FilterRows,
  47. DynamicGridOption.MultiSelect,
  48. DynamicGridOption.ExportData
  49. );
  50. }
  51. public event DataModelUpdateEvent? OnUpdateDataModel;
  52. public string SectionName => "Job Orders";
  53. public DataModel DataModel(Selection selection)
  54. {
  55. var ids = ExtractValues(x => x.ID, selection).ToArray();
  56. return new BaseDataModel<PurchaseOrderItem>(new Filter<PurchaseOrderItem>(x => x.ID).InList(ids));
  57. }
  58. protected override void Reload(Filters<PurchaseOrderItem> criteria, Columns<PurchaseOrderItem> columns, ref SortOrder<PurchaseOrderItem>? sort, Action<CoreTable?, Exception?> action)
  59. {
  60. criteria.Add(MasterDetailFilter);
  61. base.Reload(criteria, columns, ref sort, action);
  62. }
  63. }
  64. }