InvoiceLineGrid.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using System.Linq;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. using Comal.Classes;
  6. using InABox.Clients;
  7. using InABox.Core;
  8. using InABox.DynamicGrid;
  9. using InABox.WPF;
  10. namespace PRSDesktop
  11. {
  12. internal class InvoiceLineGrid : DynamicDataGrid<InvoiceLine>
  13. {
  14. public InvoiceLineGrid()
  15. {
  16. Options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.AddRows, DynamicGridOption.DeleteRows, DynamicGridOption.EditRows,
  17. DynamicGridOption.SelectColumns, DynamicGridOption.MultiSelect);
  18. AddButton("Calculate", PRSDesktop.Resources.costcentre.AsBitmapImage(), CalculateLines);
  19. }
  20. public Guid InvoiceID { get; set; }
  21. private bool CalculateLines(Button sender, CoreRow[] rows)
  22. {
  23. var res = MessageBox.Show("Summarise Time and Materials?", "Confirm Action", MessageBoxButton.YesNoCancel, MessageBoxImage.Question,
  24. MessageBoxResult.Yes, MessageBoxOptions.None);
  25. if (res == MessageBoxResult.Cancel)
  26. return false;
  27. var invoice = new Client<Invoice>().Load(new Filter<Invoice>(x => x.ID).IsEqualTo(InvoiceID)).FirstOrDefault();
  28. if (invoice != null)
  29. {
  30. Utility.CalculateInvoice(invoice, res == MessageBoxResult.Yes);
  31. return true;
  32. }
  33. MessageBox.Show("Please Select or Create an Invoice First!");
  34. return false;
  35. }
  36. protected override void Reload(Filters<InvoiceLine> criteria, Columns<InvoiceLine> columns, ref SortOrder<InvoiceLine> sort,
  37. Action<CoreTable, Exception> action)
  38. {
  39. criteria.Add(new Filter<InvoiceLine>(x => x.InvoiceLink.ID).IsEqualTo(InvoiceID));
  40. base.Reload(criteria, columns, ref sort, action);
  41. }
  42. protected override InvoiceLine CreateItem()
  43. {
  44. var result = base.CreateItem();
  45. result.InvoiceLink.ID = InvoiceID;
  46. return result;
  47. }
  48. }
  49. }