| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | 
							- using InABox.Core;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- namespace Comal.Classes
 
- {
 
-     public class PurchaseOrderItemLookups : EntityLookup<PurchaseOrderItem>, ILookupDefinition<PurchaseOrderItem, BillLine>,
 
-         ILookupDefinition<PurchaseOrderItem, JobRequisitionItemPurchaseOrderItem>
 
-     {
 
-         public override Columns<PurchaseOrderItem> DefineColumns()
 
-         {
 
-             return new Columns<PurchaseOrderItem>(
 
-                 x => x.ID,
 
-                 x => x.PurchaseOrderLink.PONumber,
 
-                 x => x.Product.Code,
 
-                 x => x.Description,
 
-                 x => x.Qty,
 
-                 x => x.ExTax,
 
-                 x => x.TaxCode.ID,
 
-                 x => x.TaxCode.Code,
 
-                 x => x.TaxCode.Description,
 
-                 x => x.TaxCode.Rate,
 
-                 x => x.TaxRate,
 
-                 x => x.IncTax
 
-             );
 
-         }
 
-         public override string FormatLookup(Dictionary<string, object?> values, IEnumerable<string> exclude)
 
-         {
 
-             return Guid.Equals(values["ID"],Guid.Empty)
 
-                 ? ""
 
-                 : $"{values["PurchaseOrderLink.PONumber"]}: {values["Qty"]} x {values["Description"]}";
 
-         }
 
-         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)
 
-                 .And(x=>x.BillLine.ID).IsEqualTo(Guid.Empty);
 
-         }
 
-         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);
 
-         }
 
-         public Filter<PurchaseOrderItem>? DefineFilter(JobRequisitionItemPurchaseOrderItem[] items)
 
-         {
 
-             var jobs = items.Select(x => x.JobRequisitionItem.Job.ID).Distinct().ToArray();
 
-             var products = items.Select(x => x.JobRequisitionItem.Product.ID).Distinct().ToArray();
 
-             if(jobs.Length == 1 && products.Length == 1)
 
-             {
 
-                 return new Filter<PurchaseOrderItem>(x => x.Job.ID).IsEqualTo(jobs.First())
 
-                     .And(x => x.Product.ID).IsEqualTo(products.First());
 
-             }
 
-             {
 
-                 return new Filter<PurchaseOrderItem>().None();
 
-             }
 
-         }
 
-         Columns<JobRequisitionItemPurchaseOrderItem> ILookupDefinition<PurchaseOrderItem, JobRequisitionItemPurchaseOrderItem>.DefineFilterColumns() =>
 
-             new Columns<JobRequisitionItemPurchaseOrderItem>(x => x.JobRequisitionItem.Job.ID)
 
-                 .Add(x => x.JobRequisitionItem.Product.ID);
 
-     }
 
- }
 
 
  |