Receipt.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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.Receipt.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 Customer { get; set; }
  26. [Obsolete("Replaced by Customer")]
  27. public CustomerLink CustomerLink
  28. {
  29. get => Customer;
  30. set { }
  31. }
  32. [EditorSequence(2)]
  33. public ReceiptTypeLink ReceiptType { get; set; }
  34. [Obsolete("Replaced by ReceiptType")]
  35. public ReceiptTypeLink ReceiptTypeLink
  36. {
  37. get => ReceiptType;
  38. set { }
  39. }
  40. [MemoEditor(Visible = Visible.Default)]
  41. [EditorSequence(3)]
  42. public string Notes { get; set; }
  43. [TimestampEditor(Visible = Visible.Default)]
  44. [EditorSequence(4)]
  45. public DateTime Reconciled { get; set; }
  46. [CurrencyEditor(Visible = Visible.Default, Editable = Editable.Hidden, Summary = Summary.Sum)]
  47. [Aggregate(typeof(ReceiptTotal))]
  48. public double Total { get; set; }
  49. [NullEditor]
  50. public DateTime Posted { get; set; }
  51. [NullEditor]
  52. [RequiredColumn]
  53. public PostedStatus PostedStatus { get; set; }
  54. [NullEditor]
  55. public string PostedNote { get; set; }
  56. [NullEditor]
  57. public string PostedReference { get; set; }
  58. public override string ToString()
  59. {
  60. return string.Format("{0:dd MMM yy}: {1} (${2:F2})", Date, ReceiptType.Description, Total);
  61. }
  62. }
  63. }