V6Project.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using System.Collections.Generic;
  2. using InABox.Core;
  3. using InABox.Integration.V6;
  4. namespace PRSDesktop.Integrations.V6
  5. {
  6. public class V6Project : V6Object
  7. {
  8. [NullEditor]
  9. public int ID { get; set; }
  10. [NullEditor]
  11. public int Revision { get; set; }
  12. [IntegerEditor(Width=80)]
  13. [Caption("Quote")]
  14. [EditorSequence(1)]
  15. public int Number { get; set; }
  16. [TextBoxEditor(Width = 100)]
  17. [EditorSequence(3)]
  18. public string ClientID { get; set; }
  19. [TextBoxEditor(Visible = Visible.Hidden)]
  20. [EditorSequence(4)]
  21. public string ClientName { get; set; }
  22. [TextBoxEditor]
  23. [EditorSequence(5)]
  24. public string Title { get; set; }
  25. [MemoEditor(Visible = Visible.Hidden)]
  26. [EditorSequence(6)]
  27. public string Street { get; set; }
  28. [TextBoxEditor]
  29. [EditorSequence(7)]
  30. public string City { get; set; }
  31. [TextBoxEditor]
  32. [EditorSequence(8)]
  33. public string State { get; set; }
  34. [TextBoxEditor]
  35. [EditorSequence(9)]
  36. public string PostCode { get; set; }
  37. [CurrencyEditor]
  38. [EditorSequence(10)]
  39. public double SellPrice {get; set; }
  40. public override void ValidateQuery(string sql, List<string> errors)
  41. {
  42. ValidateField(sql, nameof(ID), errors);
  43. ValidateField(sql, nameof(Revision), errors);
  44. ValidateField(sql, nameof(Number), errors);
  45. ValidateField(sql, nameof(ClientID), errors);
  46. ValidateField(sql, nameof(ClientName), errors);
  47. ValidateField(sql, nameof(Title), errors);
  48. ValidateField(sql, nameof(Street), errors);
  49. ValidateField(sql, nameof(City), errors);
  50. ValidateField(sql, nameof(State), errors);
  51. ValidateField(sql, nameof(PostCode), errors);
  52. ValidateField(sql, nameof(SellPrice), errors);
  53. }
  54. public string GetReference()
  55. {
  56. var result = $"V6:{Number}";
  57. return result;
  58. }
  59. public static bool ParseReference(string? reference, out int quotenumber)
  60. {
  61. quotenumber = 0;
  62. if (reference?.StartsWith("V6:") != true)
  63. return false;
  64. var comps = reference.Split(':');
  65. if (comps.Length < 2)
  66. return false;
  67. if (!int.TryParse(comps[1], out quotenumber))
  68. return false;
  69. return true;
  70. }
  71. public static string SQL = $@"
  72. select distinct
  73. q.quote_id as {nameof(ID)},
  74. q.quote_vers as {nameof(Revision)},
  75. q.quote_num as {nameof(Number)},
  76. c.cust_code as {nameof(ClientID)},
  77. c.cust_name as {nameof(ClientName)},
  78. coalesce(a.addr_1,'') + coalesce(char(13)+char(10)+a.addr_2,'') as {nameof(Street)},
  79. a.addr_3 as {nameof(City)},
  80. a.addr_4 as {nameof(State)},
  81. a.addr_5 as {nameof(PostCode)},
  82. q.quote_title as {nameof(Title)},
  83. q.nett_sell_price + q.nett_sell_prc_lab as {nameof(SellPrice)}
  84. from quote q
  85. left outer join customer c on q.cust_id = c.cust_id
  86. left outer join addr a on q.del_addr_id = a.addr_id
  87. where
  88. 1=1
  89. and
  90. q.quote_vers = (select max(quote_vers) from quote where quote_id = q.quote_id)
  91. and
  92. coalesce(q.quote_num_suff,'') = ''
  93. order by
  94. q.quote_num";
  95. }
  96. }