ProductLink.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using System;
  2. using InABox.Core;
  3. namespace Comal.Classes
  4. {
  5. public class ProductLink : EntityLink<Product>
  6. {
  7. [Obsolete("You should always provide a Linked Entity", true)]
  8. public ProductLink() : this(null)
  9. {
  10. }
  11. public ProductLink(Func<BaseObject>? entity) : base(entity)
  12. {
  13. }
  14. [CodePopupEditor(typeof(Product), "TaxCode.ID", "PurchaseGL.ID")]
  15. public override Guid ID { get; set; }
  16. [CodeEditor(Visible = Visible.Default)]
  17. public string Code { get; set; }
  18. [TextBoxEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
  19. public string Name { get; set; }
  20. [NullEditor]
  21. [Obsolete("Replaced with Dimensions", true)]
  22. // [DoubleEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
  23. public double UnitSize { get; set; }
  24. [NullEditor]
  25. [Obsolete("Replaced with Dimensions", true)]
  26. // [DoubleEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
  27. public double Weight { get; set; }
  28. [NullEditor]
  29. [Obsolete("Replaced with Dimensions", false)]
  30. public ProductUOMLink Units { get; set; }
  31. [RequiredColumn]
  32. public ProductDimensions Dimensions { get; set; }
  33. public ProductGroupLink Group { get; set; }
  34. [NullEditor]
  35. [RequiredColumn]
  36. public ProductStyleLink DefaultStyle { get; set; }
  37. [NullEditor]
  38. [RequiredColumn]
  39. public StockLocationLink DefaultLocation { get; set; }
  40. [CurrencyEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
  41. public double BaseCost { get; set; }
  42. [CurrencyEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
  43. public double NettCost { get; set; }
  44. [NullEditor]
  45. [RequiredColumn]
  46. public TaxCodeLink TaxCode { get; set; }
  47. [NullEditor]
  48. [RequiredColumn]
  49. public PurchaseGLCodeLink PurchaseGL { get; set; }
  50. [NullEditor]
  51. [RequiredColumn]
  52. public SalesGLCodeLink SellGL { get; set; }
  53. [NullEditor]
  54. public bool NonStock { get; set; }
  55. [IntegerEditor]
  56. public int MinimumStockLevel { get; set; }
  57. [NullEditor]
  58. public ImageDocumentLink Image { get; set; }
  59. [CheckBoxEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
  60. public bool UseDefaultSupplierPricing { get; set; }
  61. [CheckBoxEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
  62. public ProductPricingStrategy PricingStrategy { get; set; }
  63. [NullEditor]
  64. [RequiredColumn]
  65. public CostCentreLink CostCentre { get; set; }
  66. [NullEditor]
  67. public ProductCharge Charge { get; set; }
  68. [NullEditor]
  69. public DigitalFormLink DigitalForm { get; set; }
  70. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  71. public double UnitQty { get; set; }
  72. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  73. public double RemnantQty { get; set; }
  74. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  75. public double OnOrder { get; set; }
  76. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  77. public double TotalStock { get; set; }
  78. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  79. public double ReservedStock { get; set; }
  80. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  81. public double FreeStock { get; set; }
  82. public override string ToString()
  83. {
  84. return string.Format("{0}: {1}", Code, Name);
  85. }
  86. protected override void Init()
  87. {
  88. base.Init();
  89. DefaultStyle = new ProductStyleLink(LinkedEntity);
  90. Units = new ProductUOMLink();
  91. DefaultLocation = new StockLocationLink(LinkedEntity);
  92. TaxCode = new TaxCodeLink(LinkedEntity);
  93. PurchaseGL = new PurchaseGLCodeLink(LinkedEntity);
  94. SellGL = new SalesGLCodeLink(LinkedEntity);
  95. NonStock = true;
  96. Image = new ImageDocumentLink();
  97. DigitalForm = new DigitalFormLink();
  98. Group = new ProductGroupLink();
  99. Dimensions = new ProductDimensions(LinkedEntity);
  100. Charge = new ProductCharge();
  101. CostCentre = new CostCentreLink(LinkedEntity);
  102. }
  103. }
  104. }