SupplierBills.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows;
  5. using System.Windows.Media.Imaging;
  6. using com.sun.org.apache.xpath.@internal;
  7. using Comal.Classes;
  8. using InABox.Core;
  9. using InABox.DynamicGrid;
  10. using InABox.WPF;
  11. using Syncfusion.UI.Xaml.Diagram.Controls;
  12. namespace PRSDesktop
  13. {
  14. public class SupplierBills : DynamicDataGrid<Bill>
  15. {
  16. private static readonly BitmapImage? tick = PRSDesktop.Resources.tick.AsBitmapImage();
  17. private static readonly BitmapImage? warning = PRSDesktop.Resources.warning.AsBitmapImage();
  18. private static readonly BitmapImage? refresh = PRSDesktop.Resources.refresh.AsBitmapImage();
  19. private readonly BitmapImage pdf = PRSDesktop.Resources.doc_pdf.AsBitmapImage();
  20. public SupplierBills()
  21. {
  22. Options
  23. .BeginUpdate()
  24. .Clear()
  25. .Add(DynamicGridOption.FilterRows)
  26. .Add(DynamicGridOption.SelectColumns)
  27. .Add(DynamicGridOption.MultiSelect)
  28. .Add(DynamicGridOption.RecordCount)
  29. .Add(DynamicGridOption.ShowHelp)
  30. .EndUpdate();
  31. HiddenColumns.Add(x => x.PostedStatus);
  32. HiddenColumns.Add(x => x.PostedNote);
  33. ActionColumns.Add(new DynamicImageColumn(Posted_Image, null)
  34. {
  35. ToolTip = Posted_ToolTip
  36. });
  37. }
  38. private FrameworkElement? Posted_ToolTip(DynamicActionColumn column, CoreRow? row)
  39. {
  40. if (row is null)
  41. {
  42. return column.TextToolTip("Bill Processed Status");
  43. }
  44. return column.TextToolTip(row.Get<Bill, PostedStatus>(x => x.PostedStatus) switch
  45. {
  46. PostedStatus.PostFailed => "Post failed: " + row.Get<Bill, string>(x => x.PostedNote),
  47. PostedStatus.RequiresRepost => "Repost required: " + row.Get<Bill, string>(x => x.PostedNote),
  48. PostedStatus.Posted => "Processed",
  49. PostedStatus.NeverPosted or _ => "Not posted yet",
  50. });
  51. }
  52. private BitmapImage? Posted_Image(CoreRow? row)
  53. {
  54. if (row is null) return tick;
  55. return row.Get<Bill, PostedStatus>(x => x.PostedStatus) switch
  56. {
  57. PostedStatus.PostFailed => warning,
  58. PostedStatus.Posted => tick,
  59. PostedStatus.RequiresRepost => refresh,
  60. PostedStatus.NeverPosted or _ => null,
  61. };
  62. }
  63. public Bill[] LoadBills(CoreRow[] rows)
  64. {
  65. return LoadItems(rows);
  66. }
  67. }
  68. }