ProductLink.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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))]
  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. public bool NonStock { get; set; }
  49. [IntegerEditor]
  50. public int MinimumStockLevel { get; set; }
  51. [NullEditor]
  52. public ImageDocumentLink Image { get; set; }
  53. [CheckBoxEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
  54. public bool UseDefaultSupplierPricing { get; set; }
  55. [CheckBoxEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
  56. public ProductPricingStrategy PricingStrategy { get; set; }
  57. [NullEditor]
  58. public CostCentreLink CostCentre { get; set; }
  59. [NullEditor]
  60. public ProductCharge Charge { get; set; }
  61. [NullEditor]
  62. public DigitalFormLink DigitalForm { get; set; }
  63. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  64. public double UnitQty { get; set; }
  65. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  66. public double RemnantQty { get; set; }
  67. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  68. public double OnOrder { get; set; }
  69. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  70. public double TotalStock { get; set; }
  71. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  72. public double ReservedStock { get; set; }
  73. [DoubleEditor(Visible=Visible.Optional, Editable = Editable.Hidden, Summary=Summary.Sum)]
  74. public double FreeStock { get; set; }
  75. public override string ToString()
  76. {
  77. return string.Format("{0}: {1}", Code, Name);
  78. }
  79. protected override void Init()
  80. {
  81. base.Init();
  82. DefaultStyle = new ProductStyleLink(LinkedEntity);
  83. Units = new ProductUOMLink();
  84. DefaultLocation = new StockLocationLink(LinkedEntity);
  85. TaxCode = new TaxCodeLink(LinkedEntity);
  86. NonStock = true;
  87. Image = new ImageDocumentLink();
  88. DigitalForm = new DigitalFormLink();
  89. Group = new ProductGroupLink();
  90. Dimensions = new ProductDimensions(LinkedEntity);
  91. Charge = new ProductCharge();
  92. CostCentre = new CostCentreLink();
  93. }
  94. }
  95. }