using System; using InABox.Core; namespace Comal.Classes { [UserTracking(typeof(Quote))] public class QuoteCostSheetItem : Entity, IRemotable, IPersistent, IQuoteCostSheetItem, IOneToMany, ITaxable, ILicense { [NullEditor] [EntityRelationship(DeleteAction.Cascade)] public QuoteCostSheetLink CostSheet { get; set; } [EntityRelationship(DeleteAction.SetNull)] [EditorSequence(1)] public ProductLink Product { get; set; } [TextBoxEditor] [EditorSequence(2)] public string Description { get; set; } [DoubleEditor] [EditorSequence(3)] public double Qty { get; set; } [DoubleEditor] [EditorSequence(4)] public double Cost { get; set; } [EditorSequence(6)] public TaxCodeLink TaxCode { get; set; } [EnumLookupEditor(typeof(QuoteCostSheetItemLineType))] public QuoteCostSheetItemLineType Type { get; set; } [NullEditor] public long Sequence { get; set; } [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)] [EditorSequence(5)] public double ExTax { get; set; } [NullEditor] public double TaxRate { get; set; } [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)] [EditorSequence(7)] public double Tax { get; set; } [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)] [EditorSequence(8)] public double IncTax { get; set; } protected override void Init() { base.Init(); CostSheet = new QuoteCostSheetLink(); Product = new ProductLink(() => this); TaxCode = new TaxCodeLink(() => this); } static QuoteCostSheetItem() { LinkedProperties.Register(x => x.Product, x => x.Name, x => x.Description); LinkedProperties.Register(x => x.Product, x => x.NettCost, x => x.Cost); LinkedProperties.Register(x => x.Product.TaxCode, x => x.ID, x => x.TaxCode.ID); LinkedProperties.Register(x => x.Product.TaxCode, x => x.Rate, x => x.TaxCode.Rate); LinkedProperties.Register(x=>x.TaxCode, x => x.Rate, x => x.TaxRate); } protected override void DoPropertyChanged(string name, object before, object after) { base.DoPropertyChanged(name, before, after); if (name.Equals("Qty")) ExTax = (double)after * Cost; else if (name.Equals("Cost")) ExTax = (double)after * Qty; } } }