JobSummaryGrid.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using Comal.Classes;
  3. using InABox.Core;
  4. using InABox.DynamicGrid;
  5. namespace PRSDesktop
  6. {
  7. internal class JobSummaryGrid : DynamicDataGrid<JobMaterial>, IJobControl, IDataModelSource
  8. {
  9. public JobSummaryGrid() : base()
  10. {
  11. Options.AddRange(
  12. DynamicGridOption.RecordCount,
  13. DynamicGridOption.SelectColumns,
  14. DynamicGridOption.FilterRows,
  15. DynamicGridOption.ExportData
  16. );
  17. HiddenColumns.Add(x => x.BillOfMaterials);
  18. HiddenColumns.Add(x => x.TotalRequired);
  19. HiddenColumns.Add(x => x.BalanceRequired);
  20. HiddenColumns.Add(x => x.ReservedStock);
  21. HiddenColumns.Add(x => x.OnOrder);
  22. HiddenColumns.Add(x => x.Issued);
  23. HiddenColumns.Add(x => x.Received);
  24. HiddenColumns.Add(x => x.Product.Image.ID);
  25. HiddenColumns.Add(x => x.Product.Image.FileName);
  26. ActionColumns.Add(new DynamicImageColumn<JobMaterial>(this, x => x.Product.Image, false)
  27. { Position = DynamicActionColumnPosition.Start });
  28. }
  29. public event DataModelUpdateEvent OnUpdateDataModel;
  30. public string SectionName => "Job Summary";
  31. public DataModel DataModel(Selection selection)
  32. {
  33. return new AutoDataModel<JobMaterial>(new Filter<JobMaterial>(x => x.Job.ID).IsEqualTo(JobID));
  34. }
  35. public Guid JobID { get; set; }
  36. protected override JobMaterial CreateItem()
  37. {
  38. var result = base.CreateItem();
  39. result.Job.ID = JobID;
  40. return result;
  41. }
  42. protected override void Reload(Filters<JobMaterial> criteria, Columns<JobMaterial> columns, ref SortOrder<JobMaterial> sort,
  43. Action<CoreTable, Exception> action)
  44. {
  45. if (JobID == Guid.Empty)
  46. criteria.Add(new Filter<JobMaterial>().None());
  47. else
  48. criteria.Add(new Filter<JobMaterial>(x => x.Job.ID).IsEqualTo(JobID)
  49. .And(x=>x.Product.ID).IsNotEqualTo(Guid.Empty));
  50. base.Reload(criteria, columns, ref sort, action);
  51. }
  52. protected override bool FilterRecord(CoreRow row)
  53. {
  54. var result = base.FilterRecord(row);
  55. if (result)
  56. result = (result && row.Get<JobMaterial, double>(x => x.BillOfMaterials) != 0.0F) ||
  57. row.Get<JobMaterial, double>(x => x.TotalRequired) != 0.0F ||
  58. row.Get<JobMaterial, double>(x => x.BalanceRequired) != 0.0F ||
  59. row.Get<JobMaterial, double>(x => x.OnOrder) != 0.0F ||
  60. row.Get<JobMaterial, double>(x => x.Issued) != 0.0F ||
  61. row.Get<JobMaterial, double>(x => x.Received) != 0.0F ||
  62. row.Get<JobMaterial, double>(x => x.ReservedStock) != 0.0F;
  63. return result;
  64. }
  65. }
  66. }