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