ProductInstance.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using InABox.Core;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq.Expressions;
  5. using System.Text;
  6. namespace Comal.Classes
  7. {
  8. public class ProductInstanceFreeStockAggregate : CoreAggregate<ProductInstance, StockMovement, double>
  9. {
  10. public override Expression<Func<StockMovement, double>> Aggregate => x => x.Qty;
  11. public override Filter<StockMovement> Filter => new Filter<StockMovement>(x => x.Job).NotLinkValid();
  12. public override Dictionary<Expression<Func<StockMovement, object?>>, Expression<Func<ProductInstance, object?>>>
  13. Links =>
  14. new Dictionary<Expression<Func<StockMovement, object?>>, Expression<Func<ProductInstance, object?>>>()
  15. {
  16. { StockMovement => StockMovement.Product.ID, Instance => Instance.Product.ID },
  17. { StockMovement => StockMovement.Style.ID, Instance => Instance.Style.ID },
  18. }.AddRange(Dimensions.GetLinks<StockMovement, ProductInstance>(x => x.Dimensions, x => x.Dimensions));
  19. public override AggregateCalculation Calculation => AggregateCalculation.Sum;
  20. }
  21. public class ProductInstance : StockEntity, IRemotable, IPersistent, IProductInstance,
  22. ISequenceable, ILicense<ProductManagementLicense>
  23. {
  24. [NullEditor] public long Sequence { get; set; }
  25. [EditorSequence(1)]
  26. public override ProductLink Product { get; set; }
  27. [EditorSequence(2)]
  28. public ProductStyleLink Style { get; set; }
  29. [EditorSequence(3)]
  30. [RequiredColumn]
  31. [DimensionsEditor(typeof(StockDimensions))]
  32. public override StockDimensions Dimensions { get; set; }
  33. [IntegerEditor]
  34. [EditorSequence(4)]
  35. [LoggableProperty]
  36. public int MinimumStockLevel { get; set; }
  37. [EditorSequence(5)]
  38. [Aggregate(typeof(ProductInstanceFreeStockAggregate))]
  39. [DoubleEditor(Editable = Editable.Hidden)]
  40. public double FreeStock { get; set; }
  41. [CurrencyEditor(Visible = Visible.Optional)]
  42. [EditorSequence(5)]
  43. [LoggableProperty]
  44. public double NettCost { get; set; }
  45. [CurrencyEditor(Visible = Visible.Optional, Editable = Editable.Disabled)]
  46. [EditorSequence(6)]
  47. [LoggableProperty]
  48. public double AverageCost { get; set; }
  49. [CurrencyEditor(Visible = Visible.Optional, Editable = Editable.Disabled)]
  50. [EditorSequence(7)]
  51. [LoggableProperty]
  52. public double LastCost { get; set; }
  53. [NullEditor]
  54. [Obsolete("", true)]
  55. public double Parameter { get; set; }
  56. }
  57. }