StockHolding_Old.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq.Expressions;
  4. using InABox.Core;
  5. using PRSClasses;
  6. namespace Comal.Classes
  7. {
  8. // public class StockHoldingLastStocktake : CoreAggregate<StockHolding, StockMovement, DateTime>
  9. // {
  10. // public override Expression<Func<StockMovement, DateTime>> Aggregate => x => x.Date;
  11. //
  12. // public override Filter<StockMovement> Filter => new Filter<StockMovement>(x => x.Type)
  13. // .IsEqualTo(StockMovementType.StockTake);
  14. //
  15. // public override Dictionary<Expression<Func<StockMovement, object?>>, Expression<Func<StockHolding, object?>>> Links =>
  16. // new Dictionary<Expression<Func<StockMovement, object?>>, Expression<Func<StockHolding, object?>>>()
  17. // {
  18. // { StockMovement => StockMovement.Product.ID, StockHolding => StockHolding.Product.ID },
  19. // { StockMovement => StockMovement.Location.ID, StockHolding => StockHolding.Location.ID },
  20. // { StockMovement => StockMovement.Style.ID, StockHolding => StockHolding.Style.ID },
  21. // { StockMovement => StockMovement.Job.ID, StockHolding => StockHolding.Job.ID },
  22. // }.AddRange(Dimensions.GetLinks<StockMovement, StockHolding>(x => x.Dimensions, x => x.Dimensions));
  23. //
  24. // public override AggregateCalculation Calculation => AggregateCalculation.Maximum;
  25. // }
  26. //
  27. // [UserTracking(typeof(StockMovement))]
  28. // [Unrecoverable]
  29. // public class StockHolding : StockEntity, IRemotable, IPersistent, IOneToMany<StockLocation>, IOneToMany<Product>,
  30. // IStockHolding, ILicense<WarehouseLicense>
  31. // {
  32. //
  33. // [Editable(Editable.Disabled)]
  34. // [EditorSequence(1)]
  35. // public StockLocationLink Location { get; set; }
  36. //
  37. // private class ProductLookupGenerator : LookupDefinitionGenerator<Product, StockHolding>
  38. // {
  39. // public override Filter<Product>? DefineFilter(StockHolding[] items)
  40. // => LookupFactory.DefineFilter<Product>().And(x => x.NonStock).IsEqualTo(false);
  41. // }
  42. // [Editable(Editable.Disabled)]
  43. // [EditorSequence(2)]
  44. // [LookupDefinition(typeof(ProductLookupGenerator))]
  45. // public override ProductLink Product { get; set; }
  46. //
  47. // [DimensionsEditor(typeof(StockDimensions))]
  48. // [Editable(Editable.Disabled)]
  49. // [EditorSequence(3)]
  50. // public override StockDimensions Dimensions { get; set; }
  51. //
  52. // [Editable(Editable.Disabled)]
  53. // [EditorSequence(4)]
  54. // public ProductStyleLink Style { get; set; }
  55. //
  56. // [Editable(Editable.Disabled)]
  57. // [EditorSequence(4)]
  58. // public JobLink Job { get; set; }
  59. //
  60. // [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)]
  61. // [EditorSequence(5)]
  62. // public double Units { get; set; }
  63. //
  64. // [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)]
  65. // [EditorSequence(6)]
  66. // public double Qty { get; set; }
  67. //
  68. // [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)]
  69. // [EditorSequence(7)]
  70. // public double Weight { get; set; }
  71. //
  72. // [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)]
  73. // [EditorSequence(8)]
  74. // public double Value { get; set; }
  75. //
  76. // [DoubleEditor(Editable = Editable.Disabled)]
  77. // [EditorSequence(9)]
  78. // public double AverageValue { get; set; }
  79. //
  80. // [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)]
  81. // [EditorSequence(10)]
  82. // public double Available { get; set; }
  83. //
  84. // [Formula(typeof(StockHoldingAllocatedFormula))]
  85. // [DoubleEditor(Editable = Editable.Disabled, Summary = Summary.Sum)]
  86. // [EditorSequence(11)]
  87. // public double Allocated { get; set; }
  88. //
  89. // [Aggregate(typeof(StockHoldingLastStocktake))]
  90. // [DateEditor(Editable = Editable.Disabled)]
  91. // [EditorSequence(11)]
  92. // public DateTime LastStockTake { get; set; }
  93. //
  94. // public static Column<IStockHolding>[] Columns => new Column<IStockHolding>[]
  95. // {
  96. // new Column<IStockHolding>(x => x.Job.ID),
  97. // new Column<IStockHolding>(x => x.Location.ID),
  98. // new Column<IStockHolding>(x => x.Product.ID),
  99. // new Column<IStockHolding>(x => x.Style.ID),
  100. // new Column<IStockHolding>(x => x.Dimensions.Unit.ID),
  101. // new Column<IStockHolding>(x => x.Dimensions.Quantity),
  102. // new Column<IStockHolding>(x => x.Dimensions.Length),
  103. // new Column<IStockHolding>(x => x.Dimensions.Width),
  104. // new Column<IStockHolding>(x => x.Dimensions.Height),
  105. // new Column<IStockHolding>(x => x.Dimensions.Weight),
  106. // };
  107. //
  108. // public static Filter<StockMovement>? GetFilter(IStockHolding holding)
  109. // {
  110. // var filter = new Filters<StockMovement>();
  111. //
  112. // foreach(var column in Columns)
  113. // {
  114. // filter.Add(new Filter<StockMovement>(column.Cast<StockMovement>()).IsEqualTo(CoreUtils.GetPropertyValue(holding, column.Property)));
  115. // }
  116. //
  117. // return filter.Combine();
  118. // }
  119. // }
  120. //
  121. // internal class StockHoldingAllocatedFormula : IFormula<StockHolding, double>
  122. // {
  123. // public Expression<Func<StockHolding, double>> Value => x => x.Qty;
  124. //
  125. // public FormulaOperator Operator => FormulaOperator.Subtract;
  126. //
  127. // public Expression<Func<StockHolding, double>>[] Modifiers => new Expression<Func<StockHolding, double>>[]
  128. // {
  129. // x => x.Available
  130. // };
  131. //
  132. // public FormulaType Type => FormulaType.Virtual;
  133. // }
  134. }