Receipt.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq.Expressions;
  4. using InABox.Core;
  5. namespace Comal.Classes
  6. {
  7. public class ReceiptTotal : CoreAggregate<Receipt, InvoiceReceipt, double>
  8. {
  9. public override Expression<Func<InvoiceReceipt, double>> Aggregate => x => x.Amount;
  10. public override AggregateCalculation Calculation => AggregateCalculation.Sum;
  11. public override Dictionary<Expression<Func<InvoiceReceipt, object>>, Expression<Func<Receipt, object>>> Links =>
  12. new Dictionary<Expression<Func<InvoiceReceipt, object>>, Expression<Func<Receipt, object>>>()
  13. {
  14. { InvoiceReceipt => InvoiceReceipt.ReceiptLink.ID, Receipt => Receipt.ID }
  15. };
  16. }
  17. [UserTracking(typeof(Invoice))]
  18. public class Receipt : Entity, IPersistent, IRemotable, ILicense<AccountsReceivableLicense>
  19. {
  20. [DateEditor(TodayVisible = true)]
  21. [EditorSequence(0)]
  22. public DateTime Date { get; set; }
  23. [EditorSequence(1)]
  24. public CustomerLink CustomerLink { get; set; }
  25. [EditorSequence(2)]
  26. public ReceiptTypeLink ReceiptTypeLink { get; set; }
  27. [MemoEditor(Visible = Visible.Default)]
  28. [EditorSequence(3)]
  29. public string Notes { get; set; }
  30. [TimestampEditor(Visible = Visible.Default)]
  31. [EditorSequence(4)]
  32. public DateTime Reconciled { get; set; }
  33. [CurrencyEditor(Visible = Visible.Default, Editable = Editable.Hidden, Summary = Summary.Sum)]
  34. [Aggregate(typeof(ReceiptTotal))]
  35. public double Total { get; set; }
  36. protected override void Init()
  37. {
  38. base.Init();
  39. ReceiptTypeLink = new ReceiptTypeLink();
  40. CustomerLink = new CustomerLink();
  41. Date = DateTime.Today;
  42. }
  43. public override string ToString()
  44. {
  45. return string.Format("{0:dd MMM yy}: {1} (${2:F2})", Date, ReceiptTypeLink.Description, Total);
  46. }
  47. }
  48. }