Browse Source

POItem Lookups

Kenric Nugteren 1 year ago
parent
commit
01362451d8

+ 1 - 1
prs.classes/Entities/PurchaseOrder/PurchaseOrderItemLink.cs

@@ -5,7 +5,7 @@ namespace Comal.Classes
 {
     public class PurchaseOrderItemLink : EntityLink<PurchaseOrderItem>
     {
-        [LookupEditor(typeof(PurchaseOrderItem))]
+        [PopupEditor(typeof(PurchaseOrderItem))]
         public override Guid ID { get; set; }
 
         [TextBoxEditor(Visible = Visible.Default, Editable = Editable.Hidden)]

+ 23 - 2
prs.classes/Entities/PurchaseOrder/PurchaseOrderItemLookups.cs

@@ -1,8 +1,10 @@
 using InABox.Core;
+using System;
+using System.Linq;
 
 namespace Comal.Classes
 {
-    public class PurchaseOrderItemLookups : EntityLookup<PurchaseOrderItem>
+    public class PurchaseOrderItemLookups : EntityLookup<PurchaseOrderItem>, ILookupDefinition<PurchaseOrderItem, BillLine>
     {
         public override Columns<PurchaseOrderItem> DefineColumns()
         {
@@ -13,11 +15,30 @@ namespace Comal.Classes
             );
         }
 
-        public override Filter<PurchaseOrderItem> DefineFilter()
+        public override Filter<PurchaseOrderItem>? DefineFilter()
         {
             return null;
         }
 
+        public Filter<PurchaseOrderItem> DefineFilter(BillLine[] items)
+        {
+            if (!items.Any())
+            {
+                return new Filter<PurchaseOrderItem>().None();
+            }
+            var supplierID = items.Select(x => x.BillLink.SupplierLink.ID).Distinct().SingleOrDefault();
+            if(supplierID == Guid.Empty)
+            {
+                return new Filter<PurchaseOrderItem>().None();
+            }
+            return new Filter<PurchaseOrderItem>(x => x.PurchaseOrderLink.SupplierLink.ID).IsEqualTo(supplierID);
+        }
+
+        public Columns<BillLine> DefineFilterColumns()
+        {
+            return new Columns<BillLine>(x => x.BillLink.SupplierLink.ID);
+        }
+
         public override SortOrder<PurchaseOrderItem> DefineSortOrder()
         {
             return new SortOrder<PurchaseOrderItem>(x => x.PurchaseOrderLink.PONumber).ThenBy(x => x.Created);