BillApproval.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using InABox.Core;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. namespace Comal.Classes
  6. {
  7. public enum BillApprovalStatus
  8. {
  9. Unknown,
  10. NotYetApproved,
  11. Approved,
  12. Rejected,
  13. }
  14. public class BillApproval : Entity, ISequenceable, IRemotable, IPersistent, ILicense<AccountsPayableLicense>
  15. {
  16. private class EmployeeLookup : LookupDefinitionGenerator<Employee, BillApproval>
  17. {
  18. public override Filter<Employee>? DefineFilter(BillApproval[] items)
  19. {
  20. return Filter<Employee>.Where(x => x.ID).NotInList(items.ToArray(x => x.Employee.ID));
  21. }
  22. public override Columns<BillApproval> DefineFilterColumns()
  23. {
  24. return base.DefineFilterColumns().Add(x => x.Employee.ID);
  25. }
  26. }
  27. [EditorSequence(1)]
  28. [EntityRelationship(DeleteAction.Cascade)]
  29. [LookupDefinition(typeof(EmployeeLookup))]
  30. public EmployeeLink Employee { get; set; }
  31. [NullEditor]
  32. [EntityRelationship(DeleteAction.Cascade)]
  33. [RequiredColumn]
  34. public BillLink Bill { get; set; }
  35. [EditorSequence(2)]
  36. public BillApprovalStatus Status { get; set; } = BillApprovalStatus.NotYetApproved;
  37. [EditorSequence(3)]
  38. public string Notes { get; set; }
  39. [NullEditor]
  40. public bool IsCustom { get; set; }
  41. [NullEditor]
  42. public long Sequence { get; set; }
  43. static BillApproval()
  44. {
  45. DefaultColumns.Add<BillApproval>(x => x.Bill.Number);
  46. DefaultColumns.Add<BillApproval>(x => x.Employee.Code);
  47. DefaultColumns.Add<BillApproval>(x => x.Employee.Name);
  48. DefaultColumns.Add<BillApproval>(x => x.Status);
  49. DefaultColumns.Add<BillApproval>(x => x.Notes);
  50. }
  51. }
  52. }