using System; using InABox.Core; namespace Comal.Classes { public class BillLineLink : EntityLink { [NullEditor] public override Guid ID { get; set; } } [UserTracking(typeof(Bill))] public class BillLine : Entity, IPersistent, IRemotable, IOneToMany, ITaxable, ILicense, IPostableFragment { [EntityRelationship(DeleteAction.Cascade)] [NullEditor] public BillLink BillLink { get; set; } [EntityRelationship(DeleteAction.SetNull)] [EditorSequence(1)] public PurchaseOrderItemLink OrderItem { get; set; } [MemoEditor] [EditorSequence(2)] public string Description { get; set; } [EditorSequence(3)] public PurchaseGLCodeLink PurchaseGL { get; set; } [EditorSequence(4)] public CostCentreLink CostCentre { get; set; } [DoubleEditor(Summary = Summary.Sum)] [EditorSequence(5)] public double ExTax { get; set; } [RequiredColumn] [EditorSequence(6)] public TaxCodeLink TaxCode { get; set; } [DoubleEditor(Editable = Editable.Hidden)] public double TaxRate { get; set; } [DoubleEditor(Editable = Editable.Hidden, Summary = Summary.Sum)] public double Tax { get; set; } [DoubleEditor(Summary = Summary.Sum)] [EditorSequence(7)] public double IncTax { get; set; } [NullEditor] public string PostedReference { get; set; } protected override void Init() { base.Init(); BillLink = new BillLink(); TaxCode = new TaxCodeLink(() => this); OrderItem = new PurchaseOrderItemLink(() => this); CostCentre = new CostCentreLink(() => this); PurchaseGL = new PurchaseGLCodeLink(() => this); } static BillLine() { LinkedProperties.Register(x => x.OrderItem, x => x.ExTax, x => x.ExTax); LinkedProperties.Register(x => x.OrderItem.PurchaseGL, x => x.ID, x => x.PurchaseGL.ID); LinkedProperties.Register(x => x.OrderItem.CostCentre, x => x.ID, x => x.CostCentre.ID); LinkedProperties.Register(x => x.OrderItem.TaxCode, x => x.ID, x => x.TaxCode.ID); LinkedProperties.Register(x => x.OrderItem.TaxCode, x => x.Code, x => x.TaxCode.Code); LinkedProperties.Register(x => x.OrderItem.TaxCode, x => x.Description, x => x.TaxCode.Description); LinkedProperties.Register(x => x.OrderItem.TaxCode, x => x.Rate, x => x.TaxCode.Rate); LinkedProperties.Register(x => x.OrderItem, x => x.Tax, x => x.Tax); LinkedProperties.Register(x => x.OrderItem, x => x.IncTax, x => x.IncTax); LinkedProperties.Register(x => x.TaxCode, x => x.Rate, x => x.TaxRate); } } }