using System; using System.Collections.Generic; using System.Linq.Expressions; using InABox.Core; namespace Comal.Classes { public class QuoteContractExTax : CoreAggregate { public override Expression> Aggregate => x => x.Proposal.ProposalExTax; public override AggregateCalculation Calculation => AggregateCalculation.Sum; public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { QuoteContractProposal => QuoteContractProposal.Contract.ID, QuoteContract => QuoteContract.ID } }; } public class QuoteContractTax : CoreAggregate { public override Expression> Aggregate => x => x.Proposal.ProposalTax; public override AggregateCalculation Calculation => AggregateCalculation.Sum; public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { QuoteContractProposal => QuoteContractProposal.Contract.ID, QuoteContract => QuoteContract.ID } }; } public class QuoteContractIncTax : CoreAggregate { public override Expression> Aggregate => x => x.Proposal.ProposalIncTax; public override AggregateCalculation Calculation => AggregateCalculation.Sum; public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { QuoteContractProposal => QuoteContractProposal.Contract.ID, QuoteContract => QuoteContract.ID } }; } [UserTracking(typeof(Quote))] public class QuoteContract : Entity, IRemotable, IPersistent, IQuoteContract, ILicense, IOneToMany { [NullEditor] [EntityRelationship(DeleteAction.Cascade)] public QuoteLink Quote { get; set; } [TextBoxEditor] public string Description { get; set; } [CurrencyEditor(Editable = Editable.Hidden, Summary = Summary.Sum)] [Aggregate(typeof(QuoteContractExTax))] public double ExTax { get; set; } [CurrencyEditor(Editable = Editable.Hidden, Summary = Summary.Sum)] [Aggregate(typeof(QuoteContractTax))] public double Tax { get; set; } [CurrencyEditor(Visible = Visible.Default, Editable = Editable.Hidden, Summary = Summary.Sum)] [Aggregate(typeof(QuoteContractIncTax))] public double IncTax { get; set; } } }