QuoteCostSheetItem.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using InABox.Core;
  3. namespace Comal.Classes
  4. {
  5. [UserTracking(typeof(Quote))]
  6. public class QuoteCostSheetItem : Entity, IRemotable, IPersistent, IQuoteCostSheetItem, IOneToMany<QuoteCostSheet>, ITaxable, ILicense<QuotesManagementLicense>
  7. {
  8. [NullEditor]
  9. [EntityRelationship(DeleteAction.Cascade)]
  10. public QuoteCostSheetLink CostSheet { get; set; }
  11. [EntityRelationship(DeleteAction.SetNull)]
  12. [EditorSequence(1)]
  13. public ProductLink Product { get; set; }
  14. [TextBoxEditor]
  15. [EditorSequence(2)]
  16. public string Description { get; set; }
  17. [DoubleEditor]
  18. [EditorSequence(3)]
  19. public double Qty { get; set; }
  20. [DoubleEditor]
  21. [EditorSequence(4)]
  22. public double Cost { get; set; }
  23. [EditorSequence(6)]
  24. public TaxCodeLink TaxCode { get; set; }
  25. [EnumLookupEditor(typeof(QuoteCostSheetItemLineType))]
  26. public QuoteCostSheetItemLineType Type { get; set; }
  27. [NullEditor]
  28. public long Sequence { get; set; }
  29. [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)]
  30. [EditorSequence(5)]
  31. public double ExTax { get; set; }
  32. [NullEditor]
  33. public double TaxRate { get; set; }
  34. [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)]
  35. [EditorSequence(7)]
  36. public double Tax { get; set; }
  37. [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)]
  38. [EditorSequence(8)]
  39. public double IncTax { get; set; }
  40. static QuoteCostSheetItem()
  41. {
  42. LinkedProperties.Register<QuoteCostSheetItem, ProductLink, String>(x => x.Product, x => x.Name, x => x.Description);
  43. LinkedProperties.Register<QuoteCostSheetItem, ProductLink, double>(x => x.Product, x => x.NettCost, x => x.Cost);
  44. LinkedProperties.Register<QuoteCostSheetItem, TaxCodeLink, Guid>(x => x.Product.TaxCode, x => x.ID, x => x.TaxCode.ID);
  45. LinkedProperties.Register<QuoteCostSheetItem, TaxCodeLink, double>(x => x.Product.TaxCode, x => x.Rate, x => x.TaxCode.Rate);
  46. LinkedProperties.Register<QuoteCostSheetItem, TaxCodeLink, double>(x=>x.TaxCode, x => x.Rate, x => x.TaxRate);
  47. }
  48. protected override void DoPropertyChanged(string name, object? before, object? after)
  49. {
  50. base.DoPropertyChanged(name, before, after);
  51. if (name.Equals("Qty"))
  52. ExTax = (double)after * Cost;
  53. else if (name.Equals("Cost"))
  54. ExTax = (double)after * Qty;
  55. }
  56. }
  57. }