StockDimensions.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using InABox.Core;
  3. namespace Comal.Classes
  4. {
  5. public class StockDimensions : Dimensions<ProductDimensionUnitLink,ProductDimensionUnit>
  6. {
  7. [Obsolete("You should always provide a Linked Entity", true)]
  8. public StockDimensions()
  9. {
  10. }
  11. public StockDimensions(Func<Entity> entity) : base(entity)
  12. {
  13. }
  14. [NullEditor]
  15. [RequiredColumn]
  16. public override ProductDimensionUnitLink Unit { get; set; }
  17. [DoubleEditor(Visible = Visible.Hidden)]
  18. [EditorSequence(2)]
  19. [Caption("Pack Qty", IncludePath = false)]
  20. [RequiredColumn]
  21. public override double Quantity { get; set; }
  22. [DoubleEditor(Visible = Visible.Hidden)]
  23. [EditorSequence(3)]
  24. [Caption("Length", IncludePath = false)]
  25. [RequiredColumn]
  26. public override double Length { get; set; }
  27. [DoubleEditor(Visible = Visible.Hidden)]
  28. [EditorSequence(4)]
  29. [Caption("Width", IncludePath = false)]
  30. [RequiredColumn]
  31. public override double Width { get; set; }
  32. [DoubleEditor(Visible = Visible.Hidden)]
  33. [EditorSequence(5)]
  34. [Caption("Height", IncludePath = false)]
  35. [RequiredColumn]
  36. public override double Height { get; set; }
  37. [DoubleEditor(Visible = Visible.Hidden)]
  38. [EditorSequence(6)]
  39. [Caption("Weight", IncludePath = false)]
  40. [RequiredColumn]
  41. public override double Weight { get; set; }
  42. [DoubleEditor(Visible = Visible.Optional, Editable = Editable.Hidden, Summary = Summary.Sum)]
  43. [Caption("Value", IncludePath = false)]
  44. [EditorSequence(7)]
  45. [RequiredColumn]
  46. public override double Value { get; set; }
  47. [TextBoxEditor(Visible = Visible.Default, Editable=Editable.Hidden)]
  48. [EditorSequence(8)]
  49. [Caption("Size", IncludePath = false)]
  50. [RequiredColumn]
  51. public override String UnitSize { get; set; }
  52. }
  53. public abstract class StockEntity : DimensionedEntity<StockDimensions>
  54. {
  55. public abstract ProductLink Product { get; set; }
  56. protected override void Init()
  57. {
  58. base.Init();
  59. Product = new ProductLink(() => this);
  60. }
  61. public static void LinkStockDimensions<TStock>() where TStock : StockEntity
  62. {
  63. LinkedProperties.Register<TStock, ProductDimensionUnitLink, Guid>(x => x.Product.Dimensions.Unit, x => x.ID, x => x.Dimensions.Unit.ID);
  64. LinkedProperties.Register<TStock, ProductDimensionUnitLink, String>(x => x.Product.Dimensions.Unit, x => x.Code, x => x.Dimensions.Unit.Code);
  65. LinkedProperties.Register<TStock, ProductDimensionUnitLink, String>(x => x.Product.Dimensions.Unit, x => x.Description, x => x.Dimensions.Unit.Description);
  66. LinkedProperties.Register<TStock, ProductDimensionUnitLink, bool>(x => x.Product.Dimensions.Unit, x => x.HasLength, x => x.Dimensions.Unit.HasLength);
  67. LinkedProperties.Register<TStock, ProductDimensionUnitLink, bool>(x => x.Product.Dimensions.Unit, x => x.HasHeight, x => x.Dimensions.Unit.HasHeight);
  68. LinkedProperties.Register<TStock, ProductDimensionUnitLink, bool>(x => x.Product.Dimensions.Unit, x => x.HasQuantity, x => x.Dimensions.Unit.HasQuantity);
  69. LinkedProperties.Register<TStock, ProductDimensionUnitLink, bool>(x => x.Product.Dimensions.Unit, x => x.HasWeight, x => x.Dimensions.Unit.HasWeight);
  70. LinkedProperties.Register<TStock, ProductDimensionUnitLink, bool>(x => x.Product.Dimensions.Unit, x => x.HasWidth, x => x.Dimensions.Unit.HasWidth);
  71. LinkedProperties.Register<TStock, ProductDimensionUnitLink, String>(x => x.Product.Dimensions.Unit, x => x.Formula, x => x.Dimensions.Unit.Formula);
  72. LinkedProperties.Register<TStock, ProductDimensionUnitLink, String>(x => x.Product.Dimensions.Unit, x => x.Format, x => x.Dimensions.Unit.Format);
  73. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Height, x => x.Dimensions.Height);
  74. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Length, x => x.Dimensions.Length);
  75. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Quantity, x => x.Dimensions.Quantity);
  76. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Weight, x => x.Dimensions.Weight);
  77. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Width, x => x.Dimensions.Width);
  78. LinkedProperties.Register<TStock, ProductDimensions, double>(x => x.Product.Dimensions, x => x.Value, x => x.Dimensions.Value);
  79. LinkedProperties.Register<TStock, ProductDimensions, String>(x => x.Product.Dimensions, x => x.UnitSize, x => x.Dimensions.UnitSize);
  80. }
  81. }
  82. }