using System; using System.Linq.Expressions; using InABox.Core; using PRSClasses; namespace Comal.Classes { [UserTracking(typeof(Requisition))] public class RequisitionItem : StockEntity, IPersistent, IRemotable, INumericAutoIncrement, IOneToMany , ILicense, IJobMaterial { [IntegerEditor(Editable = Editable.Hidden)] [NullEditor] public int Sequence { get; set; } [EntityRelationship(DeleteAction.Cascade)] [NullEditor] public RequisitionLink RequisitionLink { get; set; } [EntityRelationship(DeleteAction.Cascade)] [NullEditor] public JobLink Job { get; set; } [EditorSequence(1)] [RequiredColumn] public override ProductLink Product { get; set; } [EditorSequence(3)] [CodeEditor(Visible = Visible.Optional)] public string Code { get; set; } [MemoEditor] [EditorSequence(4)] public string Description { get; set; } [EditorSequence(5)] [RequiredColumn] public ProductStyleLink Style { get; set; } [EditorSequence(6)] [RequiredColumn] [DimensionsEditor(typeof(StockDimensions), AllowEditingUnit = false)] public override StockDimensions Dimensions { get; set; } [EditorSequence(7)] public double Quantity { get; set; } [EditorSequence(8)] [RequiredColumn] public StockLocationLink Location { get; set; } [EditorSequence(9)] [TimestampEditor] public DateTime Picked { get; set; } [NullEditor] public string BarCode { get; set; } [NullEditor] public InvoiceLink Invoice { get; set; } [EditorSequence("Processing",1)] public ActualCharge Charge { get; set; } public Expression> AutoIncrementField() { return x => x.Sequence; } public Filter AutoIncrementFilter() { return new Filter(x => x.RequisitionLink.ID).IsEqualTo(RequisitionLink.ID); } protected override void Init() { base.Init(); RequisitionLink = new RequisitionLink(); Job = new JobLink(); Location = new StockLocationLink(); Style = new ProductStyleLink(() => this); Invoice = new InvoiceLink(); Charge = new ActualCharge(); } static RequisitionItem() { LinkedProperties.Register(x => x.Product, x => x.Code, x => x.Code); LinkedProperties.Register(x => x.Product, x => x.Name, x => x.Description); LinkedProperties.Register(x => x.Product, x => x.Charge.Chargeable, x => x.Charge.Chargeable); LinkedProperties.Register(x=>x.Product.DefaultStyle, x => x.ID, x => x.Style.ID); LinkedProperties.Register(x=>x.Product.DefaultLocation, x => x.ID, x => x.Location.ID); StockEntity.LinkStockDimensions(); } } }