InvoiceLineGrid.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using System.Linq;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. using Comal.Classes;
  6. using InABox.Core;
  7. using InABox.DynamicGrid;
  8. using InABox.WPF;
  9. using PRS.Shared;
  10. using PRSDesktop.Utils;
  11. namespace PRSDesktop
  12. {
  13. internal class InvoiceLineGrid : DynamicDataGrid<InvoiceLine>
  14. {
  15. public InvoiceLineGrid()
  16. {
  17. Options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.AddRows, DynamicGridOption.DeleteRows, DynamicGridOption.EditRows,
  18. DynamicGridOption.SelectColumns, DynamicGridOption.MultiSelect);
  19. AddButton("Calculate", PRSDesktop.Resources.costcentre.AsBitmapImage(), CalculateLines);
  20. }
  21. public Guid InvoiceID { get; set; }
  22. private bool CalculateLines(Button sender, CoreRow[] rows)
  23. {
  24. InvoiceCalculationSelector selector = new InvoiceCalculationSelector()
  25. {
  26. TimeCalculation = InvoiceTimeCalculation.Activity,
  27. MaterialCalculation = InvoiceMaterialCalculation.Product
  28. };
  29. if (selector.ShowDialog() == true)
  30. {
  31. var time = selector.TimeCalculation;
  32. var materials = selector.MaterialCalculation;
  33. Progress.ShowModal("Calculating Invoice", progress => InvoiceUtilities.GenerateInvoiceLines(InvoiceID, time, materials, progress));
  34. return true;
  35. }
  36. MessageBox.Show("Please Select or Create an Invoice First!");
  37. return false;
  38. }
  39. protected override void Reload(Filters<InvoiceLine> criteria, Columns<InvoiceLine> columns, ref SortOrder<InvoiceLine> sort,
  40. Action<CoreTable, Exception> action)
  41. {
  42. criteria.Add(new Filter<InvoiceLine>(x => x.InvoiceLink.ID).IsEqualTo(InvoiceID));
  43. base.Reload(criteria, columns, ref sort, action);
  44. }
  45. protected override InvoiceLine CreateItem()
  46. {
  47. var result = base.CreateItem();
  48. result.InvoiceLink.ID = InvoiceID;
  49. return result;
  50. }
  51. }
  52. }