Browse Source

Added cancelled status for PO, added Unreceived aggregate for PO

Kenric Nugteren 1 year ago
parent
commit
9e0a2a3374

+ 41 - 14
prs.classes/Entities/PurchaseOrder/PurchaseOrder.cs

@@ -15,12 +15,26 @@ namespace Comal.Classes
     //
     //     public override Filter<PurchaseOrderItem>? Filter => new Filter<PurchaseOrderItem>(c => c.DueDate).IsNotEqualTo(DateTime.MinValue);
     //
-    //     public override Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<PurchaseOrder, object>>> Links =>
-    //         new Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<PurchaseOrder, object>>>()
+    //     public override Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>> Links =>
+    //         new Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>>()
     //         {
     //             { PurchaseOrderItem => PurchaseOrderItem.PurchaseOrderLink.ID, PurchaseOrder => PurchaseOrder.ID }
     //         };
     // }
+    public class PurchaseOrderUnreceivedQtyAggregate : CoreAggregate<PurchaseOrder, PurchaseOrderItem, double>
+    {
+        public override Expression<Func<PurchaseOrderItem, double>> Aggregate => x => x.Qty;
+
+        public override AggregateCalculation Calculation => AggregateCalculation.Sum;
+
+        public override Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>> Links =>
+            new Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>>()
+            {
+                { PurchaseOrderItem => PurchaseOrderItem.PurchaseOrderLink.ID, PurchaseOrder => PurchaseOrder.ID }
+            };
+
+        public override Filter<PurchaseOrderItem>? Filter => new Filter<PurchaseOrderItem>(x => x.ReceivedDate).IsEqualTo(DateTime.MinValue);
+    }    
     
     public class PurchaseOrderExTax : CoreAggregate<PurchaseOrder, PurchaseOrderItem, double>
     {
@@ -28,8 +42,8 @@ namespace Comal.Classes
 
         public override AggregateCalculation Calculation => AggregateCalculation.Sum;
 
-        public override Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<PurchaseOrder, object>>> Links =>
-            new Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<PurchaseOrder, object>>>()
+        public override Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>> Links =>
+            new Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>>()
             {
                 { PurchaseOrderItem => PurchaseOrderItem.PurchaseOrderLink.ID, PurchaseOrder => PurchaseOrder.ID }
             };
@@ -41,8 +55,8 @@ namespace Comal.Classes
 
         public override AggregateCalculation Calculation => AggregateCalculation.Sum;
 
-        public override Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<PurchaseOrder, object>>> Links =>
-            new Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<PurchaseOrder, object>>>()
+        public override Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>> Links =>
+            new Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>>()
             {
                 { PurchaseOrderItem => PurchaseOrderItem.PurchaseOrderLink.ID, PurchaseOrder => PurchaseOrder.ID }
             };
@@ -54,8 +68,8 @@ namespace Comal.Classes
 
         public override AggregateCalculation Calculation => AggregateCalculation.Sum;
 
-        public override Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<PurchaseOrder, object>>> Links =>
-            new Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<PurchaseOrder, object>>>()
+        public override Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>> Links =>
+            new Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>>()
             {
                 { PurchaseOrderItem => PurchaseOrderItem.PurchaseOrderLink.ID, PurchaseOrder => PurchaseOrder.ID }
             };
@@ -67,8 +81,8 @@ namespace Comal.Classes
 
         public override AggregateCalculation Calculation => AggregateCalculation.Sum;
 
-        public override Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<PurchaseOrder, object>>> Links =>
-            new Dictionary<Expression<Func<PurchaseOrderItem, object>>, Expression<Func<PurchaseOrder, object>>>()
+        public override Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>> Links =>
+            new Dictionary<Expression<Func<PurchaseOrderItem, object?>>, Expression<Func<PurchaseOrder, object?>>>()
             {
                 { PurchaseOrderItem => PurchaseOrderItem.PurchaseOrderLink.ID, PurchaseOrder => PurchaseOrder.ID }
             };
@@ -120,6 +134,10 @@ namespace Comal.Classes
         [TimestampEditor]
         [EditorSequence("Additional",4)]
         public DateTime ClosedDate { get; set; }
+        
+        [TimestampEditor]
+        [EditorSequence("Additional",5)]
+        public DateTime CancelledDate { get; set; }
 
         [EditorSequence(10)]
         [DoubleEditor(Editable = Editable.Hidden, Summary = Summary.Sum)]
@@ -141,6 +159,11 @@ namespace Comal.Classes
         [Aggregate(typeof(PurchaseOrderBalance))]
         public double Balance { get; set; }
 
+        [EditorSequence(13)]
+        [DoubleEditor(Editable = Editable.Hidden, Summary = Summary.Sum)]
+        [Aggregate(typeof(PurchaseOrderUnreceivedQtyAggregate))]
+        public double Unreceived { get; set; }
+
         [EditorSequence(14)]
         [EnumLookupEditor(typeof(PurchaseOrderStatus), Editable = Editable.Hidden)]
         public PurchaseOrderStatus Status { get; set; }
@@ -201,6 +224,10 @@ namespace Comal.Classes
                     if (IssuedDate == DateTime.MinValue)
                         IssuedDate = DateTime.Now;
                 }
+                else if(status == PurchaseOrderStatus.Cancelled)
+                {
+                    CancelledDate = DateTime.Now;
+                }
                 else
                 {
                     if (ClosedDate != DateTime.MinValue)
@@ -211,12 +238,12 @@ namespace Comal.Classes
             }
             else
             {
-                var closed = name.Equals("ClosedDate") ? (DateTime)after : ClosedDate;
-                var issued = name.Equals("IssuedDate") ? (DateTime)after : IssuedDate;
                 var status = PurchaseOrderStatus.Closed;
-                if (closed != DateTime.MinValue)
+                if (CancelledDate != DateTime.MinValue)
+                    status = PurchaseOrderStatus.Cancelled;
+                else if (ClosedDate != DateTime.MinValue)
                     status = PurchaseOrderStatus.Closed;
-                else if (issued != DateTime.MinValue)
+                else if (IssuedDate != DateTime.MinValue)
                     status = PurchaseOrderStatus.Issued;
                 else
                     status = PurchaseOrderStatus.Draft;

+ 2 - 1
prs.classes/Entities/PurchaseOrder/PurchaseOrderStatus.cs

@@ -4,6 +4,7 @@
     {
         Draft,
         Issued,
-        Closed
+        Closed,
+        Cancelled
     }
 }