| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | using InABox.Core;using System;using System.Collections.Generic;using System.Linq;namespace Comal.Classes{    public class PurchaseOrderItemLookups : EntityLookup<PurchaseOrderItem>, ILookupDefinition<PurchaseOrderItem, BillLine>    {        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);        }    }}
 |