RequisitionItem.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System;
  2. using System.Linq.Expressions;
  3. using InABox.Core;
  4. using PRSClasses;
  5. namespace Comal.Classes
  6. {
  7. [UserTracking(typeof(Requisition))]
  8. public class RequisitionItem : StockEntity, IPersistent, IRemotable, INumericAutoIncrement<RequisitionItem>, IOneToMany<Invoice>, IOneToMany<Requisition>
  9. , ILicense<LogisticsLicense>, IJobMaterial, IJobScopedItem
  10. {
  11. [IntegerEditor(Editable = Editable.Hidden)]
  12. [NullEditor]
  13. public int Sequence { get; set; }
  14. [EntityRelationship(DeleteAction.Cascade)]
  15. [NullEditor]
  16. public RequisitionLink RequisitionLink { get; set; }
  17. [NullEditor]
  18. [Obsolete("Replaced With JobLink", true)]
  19. public JobLink Job { get; set; }
  20. [EntityRelationship(DeleteAction.Cascade)]
  21. [NullEditor]
  22. public JobLink JobLink
  23. {
  24. get;
  25. set;
  26. }
  27. [EditorSequence(1)]
  28. [RequiredColumn]
  29. public override ProductLink Product { get; set; }
  30. [EditorSequence(3)]
  31. [CodeEditor(Visible = Visible.Optional)]
  32. public string Code { get; set; }
  33. [MemoEditor]
  34. [EditorSequence(4)]
  35. public string Description { get; set; }
  36. [EditorSequence(5)]
  37. [RequiredColumn]
  38. public ProductStyleLink Style { get; set; }
  39. [EditorSequence(6)]
  40. [RequiredColumn]
  41. [DimensionsEditor(typeof(StockDimensions), AllowEditingUnit = false)]
  42. public override StockDimensions Dimensions { get; set; }
  43. [EditorSequence(7)]
  44. public double Quantity { get; set; }
  45. [EditorSequence(8)]
  46. [RequiredColumn]
  47. public StockLocationLink Location { get; set; }
  48. [EditorSequence(9)]
  49. [TimestampEditor]
  50. public DateTime Picked { get; set; }
  51. [NullEditor]
  52. public string BarCode { get; set; }
  53. [NullEditor]
  54. public InvoiceLink Invoice { get; set; }
  55. [EditorSequence("Processing",1)]
  56. public JobScopeLink JobScope { get; set; }
  57. [EditorSequence("Processing",2)]
  58. public ActualCharge Charge { get; set; }
  59. public Expression<Func<RequisitionItem, int>> AutoIncrementField()
  60. {
  61. return x => x.Sequence;
  62. }
  63. public Filter<RequisitionItem> AutoIncrementFilter()
  64. {
  65. return new Filter<RequisitionItem>(x => x.RequisitionLink.ID).IsEqualTo(RequisitionLink.ID);
  66. }
  67. static RequisitionItem()
  68. {
  69. LinkedProperties.Register<RequisitionItem, ProductLink, String>(x => x.Product, x => x.Code, x => x.Code);
  70. LinkedProperties.Register<RequisitionItem, ProductLink, String>(x => x.Product, x => x.Name, x => x.Description);
  71. LinkedProperties.Register<RequisitionItem, ProductLink, bool>(x => x.Product, x => x.Charge.Chargeable, x => x.Charge.Chargeable);
  72. LinkedProperties.Register<RequisitionItem, ProductStyleLink, Guid>(x=>x.Product.DefaultStyle, x => x.ID, x => x.Style.ID);
  73. LinkedProperties.Register<RequisitionItem, StockLocationLink, Guid>(x=>x.Product.DefaultLocation, x => x.ID, x => x.Location.ID);
  74. StockEntity.LinkStockDimensions<RequisitionItem>();
  75. LinkedProperties.Register<RequisitionItem, JobLink, Guid>(x=>x.RequisitionLink.JobLink, x => x.ID, x => x.JobLink.ID);
  76. LinkedProperties.Register<RequisitionItem, JobScopeLink, Guid>(x=>x.RequisitionLink.JobScope, x => x.ID, x => x.JobScope.ID);
  77. Classes.JobScope.LinkScopeProperties<RequisitionItem>();
  78. }
  79. }
  80. }