RequisitionItem.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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>
  9. , ILicense<LogisticsLicense>, IJobMaterial
  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. [EntityRelationship(DeleteAction.Cascade)]
  18. [NullEditor]
  19. public JobLink Job { get; set; }
  20. [EditorSequence(1)]
  21. [RequiredColumn]
  22. public override ProductLink Product { get; set; }
  23. [EditorSequence(3)]
  24. [CodeEditor(Visible = Visible.Optional)]
  25. public string Code { get; set; }
  26. [MemoEditor]
  27. [EditorSequence(4)]
  28. public string Description { get; set; }
  29. [EditorSequence(5)]
  30. [RequiredColumn]
  31. public ProductStyleLink Style { get; set; }
  32. [EditorSequence(6)]
  33. [RequiredColumn]
  34. [DimensionsEditor(typeof(StockDimensions), AllowEditingUnit = false)]
  35. public override StockDimensions Dimensions { get; set; }
  36. [EditorSequence(7)]
  37. public double Quantity { get; set; }
  38. [EditorSequence(8)]
  39. [RequiredColumn]
  40. public StockLocationLink Location { get; set; }
  41. [EditorSequence(9)]
  42. [TimestampEditor]
  43. public DateTime Picked { get; set; }
  44. [NullEditor]
  45. public string BarCode { get; set; }
  46. [NullEditor]
  47. public InvoiceLink Invoice { get; set; }
  48. [EditorSequence("Processing",1)]
  49. public ActualCharge Charge { get; set; }
  50. public Expression<Func<RequisitionItem, int>> AutoIncrementField()
  51. {
  52. return x => x.Sequence;
  53. }
  54. public Filter<RequisitionItem> AutoIncrementFilter()
  55. {
  56. return new Filter<RequisitionItem>(x => x.RequisitionLink.ID).IsEqualTo(RequisitionLink.ID);
  57. }
  58. protected override void Init()
  59. {
  60. base.Init();
  61. RequisitionLink = new RequisitionLink();
  62. Job = new JobLink();
  63. Location = new StockLocationLink();
  64. Style = new ProductStyleLink(() => this);
  65. Invoice = new InvoiceLink();
  66. Charge = new ActualCharge();
  67. }
  68. static RequisitionItem()
  69. {
  70. LinkedProperties.Register<RequisitionItem, ProductLink, String>(x => x.Product, x => x.Code, x => x.Code);
  71. LinkedProperties.Register<RequisitionItem, ProductLink, String>(x => x.Product, x => x.Name, x => x.Description);
  72. LinkedProperties.Register<RequisitionItem, ProductLink, bool>(x => x.Product, x => x.Charge.Chargeable, x => x.Charge.Chargeable);
  73. LinkedProperties.Register<RequisitionItem, ProductStyleLink, Guid>(x=>x.Product.DefaultStyle, x => x.ID, x => x.Style.ID);
  74. LinkedProperties.Register<RequisitionItem, StockLocationLink, Guid>(x=>x.Product.DefaultLocation, x => x.ID, x => x.Location.ID);
  75. StockEntity.LinkStockDimensions<RequisitionItem>();
  76. }
  77. }
  78. }