ProductLookups.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Collections.Generic;
  3. using InABox.Core;
  4. namespace Comal.Classes
  5. {
  6. public class ProductLookups : EntityLookup<Product>, ILookupDefinition<Product, StockMovement>, ILookupDefinition<Product, EmployeeProduct>
  7. {
  8. // EmployeeProduct records also require a Default Location to pull from
  9. public Filter<Product> DefineFilter(EmployeeProduct[] items)
  10. {
  11. return DefineFilter().And(x => x.NonStock).IsEqualTo(false).And(x => x.DefaultLocation).LinkValid();
  12. }
  13. Columns<EmployeeProduct> ILookupDefinition<Product, EmployeeProduct>.DefineFilterColumns()
  14. => new Columns<EmployeeProduct>();
  15. // You should not be able to create a stock movement for a non-stock item
  16. public Filter<Product> DefineFilter(StockMovement[] items)
  17. {
  18. return DefineFilter().And(x => x.NonStock).IsEqualTo(false);
  19. }
  20. Columns<StockMovement> ILookupDefinition<Product, StockMovement>.DefineFilterColumns()
  21. => new Columns<StockMovement>();
  22. public override Columns<Product> DefineColumns()
  23. {
  24. return new Columns<Product>(
  25. x => x.ID,
  26. x => x.Code,
  27. x => x.Name,
  28. x => x.TaxCode.ID,
  29. x => x.PurchaseGL.ID,
  30. x => x.NettCost
  31. );
  32. }
  33. public override string FormatLookup(Dictionary<string, object?> values, IEnumerable<string> exclude)
  34. {
  35. return $"{values["Name"]}";
  36. }
  37. public override Filter<Product> DefineFilter()
  38. {
  39. return new Filter<Product>(x => x.Expired).IsEqualTo(DateTime.MinValue);
  40. }
  41. public override SortOrder<Product> DefineSortOrder()
  42. {
  43. return new SortOrder<Product>(x => x.Code);
  44. }
  45. }
  46. }