using System; using System.Collections.Generic; using System.Linq.Expressions; using InABox.Core; namespace Comal.Classes { public class ReceiptTotal : CoreAggregate { public override Expression> Aggregate => x => x.Amount; public override AggregateCalculation Calculation => AggregateCalculation.Sum; public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { InvoiceReceipt => InvoiceReceipt.ReceiptLink.ID, Receipt => Receipt.ID } }; } [UserTracking(typeof(Invoice))] public class Receipt : Entity, IPersistent, IRemotable, ILicense { [DateEditor(TodayVisible = true)] [EditorSequence(0)] public DateTime Date { get; set; } = DateTime.Today; [EditorSequence(1)] public CustomerLink CustomerLink { get; set; } [EditorSequence(2)] public ReceiptTypeLink ReceiptTypeLink { get; set; } [MemoEditor(Visible = Visible.Default)] [EditorSequence(3)] public string Notes { get; set; } [TimestampEditor(Visible = Visible.Default)] [EditorSequence(4)] public DateTime Reconciled { get; set; } [CurrencyEditor(Visible = Visible.Default, Editable = Editable.Hidden, Summary = Summary.Sum)] [Aggregate(typeof(ReceiptTotal))] public double Total { get; set; } public override string ToString() { return string.Format("{0:dd MMM yy}: {1} (${2:F2})", Date, ReceiptTypeLink.Description, Total); } } }