using InABox.Core; using System; using System.Collections.Generic; using System.Linq; namespace Comal.Classes { public class PurchaseOrderItemLookups : EntityLookup, ILookupDefinition { public override Columns DefineColumns() { return new Columns( 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 values, IEnumerable exclude) { return Guid.Equals(values["ID"],Guid.Empty) ? "" : $"{values["PurchaseOrderLink.PONumber"]}: {values["Qty"]} x {values["Description"]}"; } public override Filter? DefineFilter() { return null; } public Filter DefineFilter(BillLine[] items) { if (!items.Any()) return new Filter().None(); var supplierID = items.Select(x => x.BillLink.SupplierLink.ID).Distinct().SingleOrDefault(); if(supplierID == Guid.Empty) return new Filter().None(); return new Filter(x => x.PurchaseOrderLink.SupplierLink.ID).IsEqualTo(supplierID) .And(x=>x.BillLine.ID).IsEqualTo(Guid.Empty); } public Columns DefineFilterColumns() { return new Columns(x => x.BillLink.SupplierLink.ID); } public override SortOrder DefineSortOrder() { return new SortOrder(x => x.PurchaseOrderLink.PONumber).ThenBy(x => x.Created); } } }