ProductInstance.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. { StockMovement => StockMovement.Dimensions.UnitSize, Instance => Instance.Dimensions.UnitSize },
  19. };
  20. public override AggregateCalculation Calculation => AggregateCalculation.Sum;
  21. }
  22. public class ProductInstance : DimensionedEntity<StockDimensions>, IRemotable, IPersistent, IProductInstance,
  23. ISequenceable, ILicense<ProductManagementLicense>
  24. {
  25. [NullEditor] public long Sequence { get; set; }
  26. [EditorSequence(1)]
  27. public ProductLink Product { get; set; }
  28. [EditorSequence(2)]
  29. public ProductStyleLink Style { get; set; }
  30. [EditorSequence(3)]
  31. [RequiredColumn]
  32. [DimensionsEditor(typeof(StockDimensions))]
  33. public override StockDimensions Dimensions { get; set; }
  34. [IntegerEditor]
  35. [EditorSequence(4)]
  36. [LoggableProperty]
  37. public int MinimumStockLevel { get; set; }
  38. [EditorSequence(5)]
  39. [Aggregate(typeof(ProductInstanceFreeStockAggregate))]
  40. [DoubleEditor(Editable = Editable.Hidden)]
  41. public double FreeStock { get; set; }
  42. [CurrencyEditor(Visible = Visible.Optional)]
  43. [EditorSequence(5)]
  44. [LoggableProperty]
  45. public double NettCost { get; set; }
  46. [CurrencyEditor(Visible = Visible.Optional)]
  47. [EditorSequence(6)]
  48. [LoggableProperty]
  49. public double AverageCost { get; set; }
  50. [CurrencyEditor(Visible = Visible.Optional, Editable = Editable.Disabled)]
  51. [EditorSequence(7)]
  52. [LoggableProperty]
  53. public double LastCost { get; set; }
  54. [EditorSequence(8)]
  55. [LoggableProperty]
  56. [DoubleEditor]
  57. public double Parameter { get; set; }
  58. }
  59. }