Consignment.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq.Expressions;
  4. using InABox.Core;
  5. namespace Comal.Classes
  6. {
  7. public class ConsignmentLastReceived : CoreAggregate<Consignment, PurchaseOrderItem, DateTime>
  8. {
  9. public override Expression<Func<PurchaseOrderItem, DateTime>> Aggregate => x => x.ReceivedDate;
  10. public override AggregateCalculation Calculation => AggregateCalculation.Maximum;
  11. public override Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<Consignment, object>>> Links =>
  12. new Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<Consignment, object>>>()
  13. {
  14. { PurchaseOrderItem => PurchaseOrderItem.Consignment.ID, Consignment => Consignment.ID }
  15. };
  16. }
  17. public class ConsignmentUnreceivedItems : CoreAggregate<Consignment, PurchaseOrderItem, Guid>
  18. {
  19. public override Expression<Func<PurchaseOrderItem, Guid>> Aggregate => x => x.ID;
  20. public override AggregateCalculation Calculation => AggregateCalculation.Count;
  21. public override Filter<PurchaseOrderItem> Filter => new Filter<PurchaseOrderItem>(x => x.ReceivedDate).IsEqualTo(DateTime.MinValue);
  22. public override Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<Consignment, object>>> Links =>
  23. new Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<Consignment, object>>>()
  24. {
  25. { PurchaseOrderItem => PurchaseOrderItem.Consignment.ID, Consignment => Consignment.ID }
  26. };
  27. }
  28. //public class ConsignmentClosed : ICondition<Consignment, int, DateTime>
  29. //{
  30. // public static readonly DateTime DefaultDate = DateTime.MinValue;
  31. // public Expression<Func<Consignment, int>> Left => x => x.UnreceivedItems;
  32. // public Condition Condition => Condition.Equals;
  33. // public Expression<Func<Consignment, int>> Right => x => 0;
  34. // public Expression<Func<Consignment, DateTime>> True => x => x.LastReceived;
  35. // public Expression<Func<Consignment, DateTime>> False => x => DateTime.MinValue;
  36. //}
  37. [UserTracking(typeof(Delivery))]
  38. public class Consignment : Entity, IRemotable, IPersistent, ILicense<LogisticsLicense>
  39. {
  40. [TextBoxEditor]
  41. [EditorSequence(0)]
  42. public string Number { get; set; }
  43. [EditorSequence(1)]
  44. public ConsignmentTypeLink Type { get; set; }
  45. [EditorSequence(2)]
  46. public PurchaseOrderCategoryLink Category { get; set; }
  47. [EditorSequence(3)]
  48. public SupplierLink Supplier { get; set; }
  49. [TextBoxEditor]
  50. [EditorSequence(4)]
  51. public string Origin { get; set; }
  52. [TextBoxEditor]
  53. [EditorSequence(5)]
  54. public string Description { get; set; }
  55. [DateEditor]
  56. [Caption("Est. Shipping Date")]
  57. [EditorSequence(6)]
  58. public DateTime EstimatedDispatchDate { get; set; }
  59. [DateEditor]
  60. [Caption("Act. Shipping Date")]
  61. [EditorSequence(7)]
  62. public DateTime ActualDispatchDate { get; set; }
  63. [DateEditor]
  64. [Caption("Est. Port Arrival")]
  65. [EditorSequence(8)]
  66. public DateTime EstimatedPortArrival { get; set; }
  67. [DateEditor]
  68. [Caption("Act. Port Arrival")]
  69. [EditorSequence(9)]
  70. public DateTime ActualPortArrival { get; set; }
  71. [NullEditor]
  72. [EditorSequence(10)]
  73. public DateTime EstimatedDepotArrival { get; set; }
  74. [NullEditor]
  75. [EditorSequence(11)]
  76. public DateTime ActualDepotArrival { get; set; }
  77. [DateEditor]
  78. [Caption("Est. Warehouse Arrival")]
  79. [EditorSequence(12)]
  80. public DateTime EstimatedWarehouseArrival { get; set; }
  81. [DateEditor]
  82. [Caption("Act. Warehouse Arrival")]
  83. [EditorSequence(13)]
  84. public DateTime ActualWarehouseArrival { get; set; }
  85. [TextBoxEditor]
  86. [EditorSequence(14)]
  87. public string Status { get; set; }
  88. [EditorSequence(14)]
  89. public PDFDocumentLink BillOfLading { get; set; }
  90. [TimestampEditor(Editable = Editable.Disabled)]
  91. [EditorSequence(15)]
  92. [Aggregate(typeof(ConsignmentLastReceived))]
  93. public DateTime LastReceived { get; set; }
  94. [IntegerEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
  95. [Aggregate(typeof(ConsignmentUnreceivedItems))]
  96. public int UnreceivedItems { get; set; }
  97. [TimestampEditor] //(Editable = Editable.Disabled)]
  98. [EditorSequence(16)]
  99. //[Condition(typeof(ConsignmentClosed))]
  100. public DateTime Closed { get; set; }
  101. [NullEditor]
  102. [EditorSequence(17)]
  103. public EmployeeLink Employee { get; set; }
  104. }
  105. }