using InABox.Core; using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Text; namespace Comal.Classes { public class ProductInstanceFreeStockAggregate : CoreAggregate { public override Expression> Aggregate => x => x.Qty; public override Filter Filter => new Filter(x => x.Job).NotLinkValid(); public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { StockMovement => StockMovement.Product.ID, Instance => Instance.Product.ID }, { StockMovement => StockMovement.Style.ID, Instance => Instance.Style.ID }, { StockMovement => StockMovement.Dimensions.UnitSize, Instance => Instance.Dimensions.UnitSize }, }; public override AggregateCalculation Calculation => AggregateCalculation.Sum; } public class ProductInstance : DimensionedEntity, IRemotable, IPersistent, IProductInstance, ISequenceable, ILicense { [NullEditor] public long Sequence { get; set; } [EditorSequence(1)] public ProductLink Product { get; set; } [EditorSequence(2)] public ProductStyleLink Style { get; set; } [EditorSequence(3)] [RequiredColumn] [DimensionsEditor(typeof(StockDimensions))] public override StockDimensions Dimensions { get; set; } [IntegerEditor] [EditorSequence(4)] [LoggableProperty] public int MinimumStockLevel { get; set; } [EditorSequence(5)] [Aggregate(typeof(ProductInstanceFreeStockAggregate))] [DoubleEditor(Editable = Editable.Hidden)] public double FreeStock { get; set; } [CurrencyEditor(Visible = Visible.Optional)] [EditorSequence(5)] [LoggableProperty] public double NettCost { get; set; } [CurrencyEditor(Visible = Visible.Optional)] [EditorSequence(6)] [LoggableProperty] public double AverageCost { get; set; } [CurrencyEditor(Visible = Visible.Optional, Editable = Editable.Disabled)] [EditorSequence(7)] [LoggableProperty] public double LastCost { get; set; } [EditorSequence(8)] [LoggableProperty] [DoubleEditor] public double Parameter { get; set; } } }