JobRequisitionItemPurchaseOrderItem.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using InABox.Core;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. namespace Comal.Classes
  7. {
  8. public class JobRequisitionItemPurchaseOrderLink : EntityLink<PurchaseOrder>
  9. {
  10. [NullEditor]
  11. public override Guid ID { get; set; }
  12. [NullEditor]
  13. public string PONumber { get; set; }
  14. [NullEditor]
  15. public DateTime ClosedDate { get; set; }
  16. }
  17. public class JobRequisitionItemProductLink : EntityLink<Product>
  18. {
  19. [NullEditor]
  20. public override Guid ID { get; set; }
  21. [NullEditor]
  22. public String Code { get; set; }
  23. }
  24. public class JobRequisitionItemPurchaseOrderItemLink : EntityLink<PurchaseOrderItem>
  25. {
  26. [NullEditor]
  27. public override Guid ID { get; set; }
  28. [NullEditor]
  29. public JobRequisitionItemPurchaseOrderLink PurchaseOrderLink { get; set; }
  30. [NullEditor]
  31. public JobRequisitionItemProductLink Product { get; set; }
  32. [NullEditor]
  33. public StockDimensions Dimensions { get; set; }
  34. [NullEditor]
  35. public double Qty { get; set; }
  36. [NullEditor]
  37. public DateTime ReceivedDate { get; set; }
  38. }
  39. public class JobRequisitionItemPurchaseOrderItem : Entity, IRemotable, IPersistent, IOneToMany<JobRequisitionItem>, ILicense<ProjectManagementLicense>
  40. {
  41. [NullEditor]
  42. [EntityRelationship(DeleteAction.Cascade)]
  43. public JobRequisitionItemLink JobRequisitionItem { get; set; }
  44. private class PurchaseOrderItemLookup : LookupDefinitionGenerator<PurchaseOrderItem, JobRequisitionItemPurchaseOrderItem>
  45. {
  46. public override Filter<PurchaseOrderItem>? DefineFilter(JobRequisitionItemPurchaseOrderItem[] items)
  47. {
  48. var jobs = items.Select(x => x.JobRequisitionItem.Job.ID).Distinct().ToArray();
  49. var products = items.Select(x => x.JobRequisitionItem.Product.ID).Distinct().ToArray();
  50. if(jobs.Length == 1 && products.Length == 1)
  51. {
  52. return new Filter<PurchaseOrderItem>(x => x.Job.ID).IsEqualTo(jobs.First())
  53. .And(x => x.Product.ID).IsEqualTo(products.First());
  54. }
  55. {
  56. return new Filter<PurchaseOrderItem>().None();
  57. }
  58. }
  59. public override Columns<JobRequisitionItemPurchaseOrderItem> DefineFilterColumns()
  60. => Columns.None<JobRequisitionItemPurchaseOrderItem>().Add(x => x.JobRequisitionItem.Job.ID)
  61. .Add(x => x.JobRequisitionItem.Product.ID);
  62. }
  63. [LookupDefinition(typeof(PurchaseOrderItemLookup))]
  64. [EntityRelationship(DeleteAction.Cascade)]
  65. public JobRequisitionItemPurchaseOrderItemLink PurchaseOrderItem { get; set; }
  66. }
  67. }