Receipt.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. IPostable
  20. {
  21. [DateEditor(TodayVisible = true)]
  22. [EditorSequence(0)]
  23. public DateTime Date { get; set; } = DateTime.Today;
  24. [EditorSequence(1)]
  25. public CustomerLink CustomerLink { get; set; }
  26. [EditorSequence(2)]
  27. public ReceiptTypeLink ReceiptTypeLink { get; set; }
  28. [MemoEditor(Visible = Visible.Default)]
  29. [EditorSequence(3)]
  30. public string Notes { get; set; }
  31. [TimestampEditor(Visible = Visible.Default)]
  32. [EditorSequence(4)]
  33. public DateTime Reconciled { get; set; }
  34. [CurrencyEditor(Visible = Visible.Default, Editable = Editable.Hidden, Summary = Summary.Sum)]
  35. [Aggregate(typeof(ReceiptTotal))]
  36. public double Total { get; set; }
  37. [NullEditor]
  38. public DateTime Posted { get; set; }
  39. [NullEditor]
  40. [RequiredColumn]
  41. public PostedStatus PostedStatus { get; set; }
  42. [NullEditor]
  43. public string PostedNote { get; set; }
  44. [NullEditor]
  45. public string PostedReference { get; set; }
  46. public override string ToString()
  47. {
  48. return string.Format("{0:dd MMM yy}: {1} (${2:F2})", Date, ReceiptTypeLink.Description, Total);
  49. }
  50. }
  51. }