ProductLookups.cs 1.5 KB

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