QuoteCostSheetItem.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. protected override void Init()
  41. {
  42. base.Init();
  43. CostSheet = new QuoteCostSheetLink();
  44. Product = new ProductLink(() => this);
  45. TaxCode = new TaxCodeLink(() => this);
  46. }
  47. static QuoteCostSheetItem()
  48. {
  49. LinkedProperties.Register<QuoteCostSheetItem, ProductLink, String>(x => x.Product, x => x.Name, x => x.Description);
  50. LinkedProperties.Register<QuoteCostSheetItem, ProductLink, double>(x => x.Product, x => x.NettCost, x => x.Cost);
  51. LinkedProperties.Register<QuoteCostSheetItem, TaxCodeLink, Guid>(x => x.Product.TaxCode, x => x.ID, x => x.TaxCode.ID);
  52. LinkedProperties.Register<QuoteCostSheetItem, TaxCodeLink, double>(x => x.Product.TaxCode, x => x.Rate, x => x.TaxCode.Rate);
  53. LinkedProperties.Register<QuoteCostSheetItem, TaxCodeLink, double>(x=>x.TaxCode, x => x.Rate, x => x.TaxRate);
  54. }
  55. protected override void DoPropertyChanged(string name, object before, object after)
  56. {
  57. base.DoPropertyChanged(name, before, after);
  58. if (name.Equals("Qty"))
  59. ExTax = (double)after * Cost;
  60. else if (name.Equals("Cost"))
  61. ExTax = (double)after * Qty;
  62. }
  63. }
  64. }