Bill.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System;
  2. using InABox.Core;
  3. namespace Comal.Classes
  4. {
  5. [UserTracking("Accounts Payable")]
  6. public class Bill : Entity, IPersistent, IRemotable, ILicense<AccountsPayableLicense>, IScannable, IPostable
  7. {
  8. [EditorSequence(1)]
  9. [TextBoxEditor]
  10. public string Number { get; set; }
  11. [EditorSequence(2)]
  12. [EntityRelationship(DeleteAction.Cascade)]
  13. public SupplierLink SupplierLink { get; set; }
  14. [EditorSequence(3)]
  15. [DateEditor]
  16. public DateTime BillDate { get; set; }
  17. [EditorSequence(4)]
  18. [DateEditor]
  19. public DateTime PaymentDate { get; set; }
  20. [EditorSequence(5)]
  21. [DateEditor]
  22. public DateTime AccountingDate { get; set; }
  23. [EditorSequence("Additional",1)]
  24. [TimestampEditor]
  25. public DateTime Checked { get; set; }
  26. [EditorSequence("Additional",2)]
  27. [TimestampEditor]
  28. public DateTime Approved { get; set; }
  29. [DoubleEditor(Editable = Editable.Hidden, Summary = Summary.Sum)]
  30. [Aggregate(typeof(BillExTax))]
  31. public double ExTax { get; set; }
  32. [DoubleEditor(Editable = Editable.Hidden, Summary = Summary.Sum)]
  33. [Aggregate(typeof(BillTax))]
  34. public double Tax { get; set; }
  35. [DoubleEditor(Editable = Editable.Hidden, Summary = Summary.Sum)]
  36. [Aggregate(typeof(BillIncTax))]
  37. public double IncTax { get; set; }
  38. [CurrencyEditor(Editable = Editable.Hidden, Summary = Summary.Sum)]
  39. [Aggregate(typeof(BillAmountPaid))]
  40. public double AmountPaid { get; set; }
  41. [CurrencyEditor(Editable = Editable.Hidden, Summary = Summary.Sum)]
  42. [Formula(typeof(BillBalance))]
  43. public double Balance { get; set; }
  44. [Aggregate(typeof(BillDocumentCount))]
  45. [IntegerEditor(Editable = Editable.Hidden)]
  46. public int Documents { get; set; }
  47. [NullEditor]
  48. [LoggableProperty]
  49. public DateTime Posted { get; set; }
  50. [NullEditor]
  51. [LoggableProperty]
  52. public PostedStatus PostedStatus { get; set; }
  53. [NullEditor]
  54. public string PostedNote { get; set; }
  55. protected override void Init()
  56. {
  57. base.Init();
  58. SupplierLink = new SupplierLink(() => this);
  59. }
  60. protected override void DoPropertyChanged(string name, object before, object after)
  61. {
  62. base.DoPropertyChanged(name, before, after);
  63. if (name.Equals("AmountPaid") || name.Equals("IncTax"))
  64. Balance = IncTax - AmountPaid;
  65. }
  66. }
  67. }