using System; using System.Collections.Generic; using System.Linq.Expressions; using InABox.Core; namespace Comal.Classes { public enum StockMovementBatchType { Stocktake, Receipt, Issue, Transfer } public class StockMovementBatchDocumentCount : CoreAggregate { public override Expression> Aggregate => x => x.ID; public override AggregateCalculation Calculation => AggregateCalculation.Count; public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { StockMovementBatchDocument => StockMovementBatchDocument.EntityLink.ID, StockMovementBatch => StockMovementBatch.ID } }; } public interface IStockMovementBatch : IEntity { } [UserTracking(typeof(StockMovement))] public class StockMovementBatch : Entity, IRemotable, IPersistent, IStockMovementBatch, ILicense { [EnumLookupEditor(typeof(StockMovementBatchType))] [EditorSequence(1)] public StockMovementBatchType Type { get; set; } [TimestampEditor] [EditorSequence(2)] public DateTime TimeStamp { get; set; } [EditorSequence(3)] public EmployeeLink Employee { get; set; } [MemoEditor] [EditorSequence(4)] public string Notes { get; set; } [Aggregate(typeof(StockMovementBatchDocumentCount))] [NullEditor] public int Documents { get; set; } public RequisitionLink Requisition { get; set; } } public class StockMovementBatchLink : EntityLink, IStockMovementBatch { [EnumLookupEditor(typeof(StockMovementBatchType), Visible = Visible.Optional, Editable = Editable.Hidden)] public StockMovementBatchType Type { get; set; } [MemoEditor(Visible = Visible.Optional, Editable = Editable.Hidden)] public string Notes { get; set; } [NullEditor] public int Documents { get; set; } [NullEditor] public override Guid ID { get; set; } } [UserTracking(typeof(StockMovement))] public class StockMovementBatchDocument : EntityDocument, ILicense, IManyToMany { } }