Receipt.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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; } = DateTime.Today;
  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. public override string ToString()
  37. {
  38. return string.Format("{0:dd MMM yy}: {1} (${2:F2})", Date, ReceiptTypeLink.Description, Total);
  39. }
  40. }
  41. }