using System; using InABox.Core; namespace Comal.Classes { [UserTracking("Accounts Payable")] public class Bill : Entity, IPersistent, IRemotable, ILicense, IScannable, IPostable { [EditorSequence(1)] [TextBoxEditor] public string Number { get; set; } [EditorSequence(2)] [EntityRelationship(DeleteAction.Cascade)] public SupplierLink SupplierLink { get; set; } [EditorSequence(3)] [DateEditor] public DateTime BillDate { get; set; } [EditorSequence(4)] [DateEditor] public DateTime PaymentDate { get; set; } [EditorSequence(5)] [DateEditor] public DateTime AccountingDate { get; set; } [EditorSequence("Additional",1)] [TimestampEditor] public DateTime Checked { get; set; } [EditorSequence("Additional",2)] [TimestampEditor] public DateTime Approved { get; set; } [DoubleEditor(Editable = Editable.Hidden, Summary = Summary.Sum)] [Aggregate(typeof(BillExTax))] public double ExTax { get; set; } [DoubleEditor(Editable = Editable.Hidden, Summary = Summary.Sum)] [Aggregate(typeof(BillTax))] public double Tax { get; set; } [DoubleEditor(Editable = Editable.Hidden, Summary = Summary.Sum)] [Aggregate(typeof(BillIncTax))] public double IncTax { get; set; } [CurrencyEditor(Editable = Editable.Hidden, Summary = Summary.Sum)] [Aggregate(typeof(BillAmountPaid))] public double AmountPaid { get; set; } [CurrencyEditor(Editable = Editable.Hidden, Summary = Summary.Sum)] [Formula(typeof(BillBalance))] public double Balance { get; set; } [Aggregate(typeof(BillDocumentCount))] [IntegerEditor(Editable = Editable.Hidden)] public int Documents { get; set; } [NullEditor] [LoggableProperty] public DateTime Posted { get; set; } [NullEditor] [LoggableProperty] public PostedStatus PostedStatus { get; set; } [NullEditor] public string PostedNote { get; set; } protected override void Init() { base.Init(); SupplierLink = new SupplierLink(() => this); } protected override void DoPropertyChanged(string name, object before, object after) { base.DoPropertyChanged(name, before, after); if (name.Equals("AmountPaid") || name.Equals("IncTax")) Balance = IncTax - AmountPaid; } } }