RequisitionItem.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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 { get; set; }
  23. [EditorSequence(1)]
  24. [RequiredColumn]
  25. public override ProductLink Product { get; set; }
  26. [EditorSequence(3)]
  27. [CodeEditor(Visible = Visible.Optional)]
  28. public string Code { get; set; }
  29. [MemoEditor]
  30. [EditorSequence(4)]
  31. public string Description { get; set; }
  32. [EditorSequence(5)]
  33. [RequiredColumn]
  34. public ProductStyleLink Style { get; set; }
  35. [EditorSequence(6)]
  36. [RequiredColumn]
  37. [DimensionsEditor(typeof(StockDimensions), AllowEditingUnit = false)]
  38. public override StockDimensions Dimensions { get; set; }
  39. [EditorSequence(7)]
  40. public double Quantity { get; set; }
  41. [EditorSequence(8)]
  42. public double ActualQuantity { get; set; }
  43. [EditorSequence(9)]
  44. [RequiredColumn]
  45. public StockLocationLink Location { get; set; }
  46. [EditorSequence(10)]
  47. [RequiredColumn]
  48. public JobRequisitionItemLink JobRequisitionItem { get; set; }
  49. [EditorSequence(11)]
  50. [TimestampEditor]
  51. public DateTime Picked { get; set; }
  52. [EditorSequence("Image",1)]
  53. [DataModelTableName("Image")]
  54. public ImageDocumentLink Image { get; set; }
  55. [NullEditor]
  56. public string BarCode { get; set; }
  57. [NullEditor]
  58. public InvoiceLink Invoice { get; set; }
  59. [EditorSequence("Processing",1)]
  60. public JobScopeLink JobScope { get; set; }
  61. [EditorSequence("Processing",2)]
  62. public ActualCharge Charge { get; set; }
  63. public Expression<Func<RequisitionItem, int>> AutoIncrementField()
  64. {
  65. return x => x.Sequence;
  66. }
  67. public Filter<RequisitionItem> AutoIncrementFilter()
  68. {
  69. return new Filter<RequisitionItem>(x => x.RequisitionLink.ID).IsEqualTo(RequisitionLink.ID);
  70. }
  71. static RequisitionItem()
  72. {
  73. LinkedProperties.Register<RequisitionItem, ProductLink, String>(x => x.Product, x => x.Code, x => x.Code);
  74. LinkedProperties.Register<RequisitionItem, ProductLink, String>(x => x.Product, x => x.Name, x => x.Description);
  75. LinkedProperties.Register<RequisitionItem, ProductLink, bool>(x => x.Product, x => x.Charge.Chargeable, x => x.Charge.Chargeable);
  76. LinkedProperties.Register<RequisitionItem, ProductStyleLink, Guid>(x=>x.Product.DefaultInstance.Style, x => x.ID, x => x.Style.ID);
  77. LinkedProperties.Register<RequisitionItem, StockLocationLink, Guid>(x=>x.Product.DefaultLocation, x => x.ID, x => x.Location.ID);
  78. StockEntity.LinkStockDimensions<RequisitionItem>();
  79. LinkedProperties.Register<RequisitionItem, JobLink, Guid>(x=>x.RequisitionLink.JobLink, x => x.ID, x => x.JobLink.ID);
  80. LinkedProperties.Register<RequisitionItem, JobScopeLink, Guid>(x=>x.RequisitionLink.JobScope, x => x.ID, x => x.JobScope.ID);
  81. Classes.JobScope.LinkScopeProperties<RequisitionItem>();
  82. }
  83. }
  84. }