| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | using System;using System.Collections.Generic;using System.Linq.Expressions;using InABox.Core;namespace Comal.Classes{    public class BillExTax : CoreAggregate<Bill, BillLine, double>    {        public override Expression<Func<BillLine, double>> Aggregate => x => x.ExTax;        public override AggregateCalculation Calculation => AggregateCalculation.Sum;        public override Dictionary<Expression<Func<BillLine, object>>, Expression<Func<Bill, object>>> Links =>            new Dictionary<Expression<Func<BillLine, object>>, Expression<Func<Bill, object>>>()            {                { BillLine => BillLine.BillLink.ID, Bill => Bill.ID }            };    }    public class BillTax : CoreAggregate<Bill, BillLine, double>    {        public override Expression<Func<BillLine, double>> Aggregate => x => x.Tax;        public override AggregateCalculation Calculation => AggregateCalculation.Sum;        public override Dictionary<Expression<Func<BillLine, object>>, Expression<Func<Bill, object>>> Links =>            new Dictionary<Expression<Func<BillLine, object>>, Expression<Func<Bill, object>>>()            {                { BillLine => BillLine.BillLink.ID, Bill => Bill.ID }            };    }    public class BillIncTax : CoreAggregate<Bill, BillLine, double>    {        public override Expression<Func<BillLine, double>> Aggregate => x => x.IncTax;        public override AggregateCalculation Calculation => AggregateCalculation.Sum;        public override Dictionary<Expression<Func<BillLine, object>>, Expression<Func<Bill, object>>> Links =>            new Dictionary<Expression<Func<BillLine, object>>, Expression<Func<Bill, object>>>()            {                { BillLine => BillLine.BillLink.ID, Bill => Bill.ID }            };    }    public class BillAmountPaid : CoreAggregate<Bill, BillPayment, double>    {        public override Expression<Func<BillPayment, double>> Aggregate => x => x.Amount;        public override AggregateCalculation Calculation => AggregateCalculation.Sum;        public override Dictionary<Expression<Func<BillPayment, object>>, Expression<Func<Bill, object>>> Links =>            new Dictionary<Expression<Func<BillPayment, object>>, Expression<Func<Bill, object>>>()            {                { BillPayment => BillPayment.BillLink.ID, Bill => Bill.ID }            };    }    public class BillBalance : IFormula<Bill, double>    {        public Expression<Func<Bill, double>> Value => x => x.IncTax;        public Expression<Func<Bill, double>>[] Modifiers => new Expression<Func<Bill, double>>[] { x => x.AmountPaid };        public FormulaOperator Operator => FormulaOperator.Subtract;        public FormulaType Type => FormulaType.Virtual;    }    public class BillDocumentCount : CoreAggregate<Bill, BillDocument, Guid>    {        public override Expression<Func<BillDocument, Guid>> Aggregate => x => x.ID;        public override AggregateCalculation Calculation => AggregateCalculation.Count;        public override Dictionary<Expression<Func<BillDocument, object>>, Expression<Func<Bill, object>>> Links =>            new Dictionary<Expression<Func<BillDocument, object>>, Expression<Func<Bill, object>>>()            {                { BillDocument => BillDocument.EntityLink.ID, Bill => Bill.ID }            };    }}
 |