PurchaseOrderItemLookups.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using InABox.Core;
  2. using System;
  3. using System.Linq;
  4. namespace Comal.Classes
  5. {
  6. public class PurchaseOrderItemLookups : EntityLookup<PurchaseOrderItem>, ILookupDefinition<PurchaseOrderItem, BillLine>
  7. {
  8. public override Columns<PurchaseOrderItem> DefineColumns()
  9. {
  10. return new Columns<PurchaseOrderItem>(
  11. x => x.ID,
  12. x => x.PurchaseOrderLink.PONumber,
  13. x => x.Product.Code
  14. );
  15. }
  16. public override Filter<PurchaseOrderItem>? DefineFilter()
  17. {
  18. return null;
  19. }
  20. public Filter<PurchaseOrderItem> DefineFilter(BillLine[] items)
  21. {
  22. if (!items.Any())
  23. {
  24. return new Filter<PurchaseOrderItem>().None();
  25. }
  26. var supplierID = items.Select(x => x.BillLink.SupplierLink.ID).Distinct().SingleOrDefault();
  27. if(supplierID == Guid.Empty)
  28. {
  29. return new Filter<PurchaseOrderItem>().None();
  30. }
  31. return new Filter<PurchaseOrderItem>(x => x.PurchaseOrderLink.SupplierLink.ID).IsEqualTo(supplierID);
  32. }
  33. public Columns<BillLine> DefineFilterColumns()
  34. {
  35. return new Columns<BillLine>(x => x.BillLink.SupplierLink.ID);
  36. }
  37. public override SortOrder<PurchaseOrderItem> DefineSortOrder()
  38. {
  39. return new SortOrder<PurchaseOrderItem>(x => x.PurchaseOrderLink.PONumber).ThenBy(x => x.Created);
  40. }
  41. }
  42. }