You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

274 lines
15 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_sendAutoEmail] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE proc [dbo].[proc_sendAutoEmail] (
  9. @flag VARCHAR(50)
  10. ,@controlNo VARCHAR(50) = NULL
  11. ,@complain VARCHAR(MAX) = NULL
  12. ,@user VARCHAR(50) = NULL
  13. ,@branchId INT = NULL
  14. )
  15. AS
  16. SET NOCOUNT ON
  17. SET XACT_ABORT ON
  18. DECLARE @controlNoEncrypted VARCHAR(20)
  19. ,@id INT
  20. ,@replyTo VARCHAR(5)
  21. ,@adminEmail VARCHAR(MAX)
  22. ,@agentEmail VARCHAR(100)
  23. ,@subject VARCHAR(MAX)
  24. ,@body VARCHAR(MAX)
  25. ,@agentName VARCHAR(200)
  26. ,@branch INT
  27. ,@agent INT
  28. SET @controlNo = UPPER(LTRIM(RTRIM(@controlNo)))
  29. SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
  30. CREATE TABLE #letterKeyword(id INT IDENTITY(1,1), keyword VARCHAR(MAX), VALUE VARCHAR(MAX))
  31. CREATE TABLE #TEMP1(
  32. #CURRENT_DATE# VARCHAR(MAX)
  33. ,#SEND_AGENT_NAME# VARCHAR(MAX)
  34. ,#SEND_COUNTRY# VARCHAR(MAX)
  35. ,#TRAN_ID# VARCHAR(MAX)
  36. ,#SEND_USER# VARCHAR(MAX)
  37. ,#PAID_USER# VARCHAR(MAX)
  38. ,#CANCEL_USER# VARCHAR(MAX)
  39. ,#CONTROL_NO# VARCHAR(MAX)
  40. ,#COMPLAIN# VARCHAR(MAX)
  41. ,#USER_NAME# VARCHAR(MAX)
  42. ,#PAID_AGENT_NAME# VARCHAR(MAX)
  43. ,#PAID_COUNTRY# VARCHAR(MAX)
  44. ,#SEND_DATE# VARCHAR(MAX)
  45. ,#PAID_DATE# VARCHAR(MAX)
  46. ,#CANCEL_DATE# VARCHAR(MAX)
  47. ,#SEND_AMT# VARCHAR(MAX)
  48. ,#PAID_AMT# VARCHAR(MAX)
  49. ,#USER_FULL_NAME# VARCHAR(MAX)
  50. ,#AGENT_NAME# VARCHAR(MAX)
  51. ,#BRANCH_NAME# VARCHAR(MAX)
  52. ,#RETURN_AMT# VARCHAR(MAX)
  53. ,#STUDENT_NAME# VARCHAR(MAX)
  54. ,#STUDENT_CLASS# VARCHAR(MAX)
  55. )
  56. IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted)
  57. BEGIN
  58. INSERT INTO #TEMP1
  59. SELECT
  60. #CURRENT_DATE# = CAST(GETDATE() AS VARCHAR)
  61. ,#SEND_AGENT_NAME# = ISNULL(sAgentName + ' - ' + sBranchName, '')
  62. ,#SEND_COUNTRY# = sCountry
  63. ,#TRAN_ID# = CAST(rt.id AS VARCHAR)
  64. ,#SEND_USER# = rt.createdBy
  65. ,#PAID_USER# = ISNULL(paidBy, '')
  66. ,#CANCEL_USER# = ISNULL(cancelApprovedBy, '')
  67. ,#CONTROL_NO# = @controlNo
  68. ,#COMPLAIN# = ISNULL(@complain, '')
  69. ,#USER_NAME# = @user
  70. ,#PAID_AGENT_NAME# = ISNULL(pAgentName + ' - ' + pBranchName, '')
  71. ,#PAID_COUNTRY# = pCountry
  72. ,#SEND_DATE# = CAST(approvedDate AS VARCHAR)
  73. ,#PAID_DATE# = CAST(paidDate AS VARCHAR)
  74. ,#CANCEL_DATE# = CAST(cancelApprovedDate AS VARCHAR)
  75. ,#SEND_AMT# = dbo.ShowDecimal(cAmt)
  76. ,#PAID_AMT# = dbo.ShowDecimal(pAmt)
  77. ,#USER_FULL_NAME# = (SELECT firstName + ISNULL(' ' + middleName, '') + ISNULL(' ' + lastName, '') FROM applicationUsers WITH(NOLOCK) WHERE userName = @user)
  78. ,#AGENT_NAME# = (
  79. SELECT CASE WHEN @branchId = dbo.FNAGetHOAgentId() THEN 'IME Head Office' ELSE sAgentName END
  80. )
  81. ,#BRANCH_NAME# = (
  82. SELECT CASE WHEN @branchId = dbo.FNAGetHOAgentId() THEN 'IME Head Office' ELSE sBranchName END
  83. )
  84. ,#RETURN_AMT# = cAmt - ISNULL(cancelCharge, 0)
  85. ,#STUDENT_NAME# = rec.stdName
  86. ,#STUDENT_CLASS# = ISNULL(' ' + sl.name, '') + ' /' +ISNULL(' ' + rec.stdRollRegNo, '') + ISNULL(' ' + rec.stdSemYr,' ')
  87. FROM remitTran rt WITH(NOLOCK) INNER JOIN dbo.tranReceivers rec WITH(NOLOCK) ON rt.id = rec.tranId
  88. LEFT JOIN dbo.schoolLevel sl WITH(NOLOCK) ON sl.rowId = rec.stdLevel
  89. WHERE controlNo = @controlNoEncrypted
  90. END
  91. INSERT INTO #letterKeyWord
  92. SELECT col, VALUE
  93. FROM
  94. (
  95. SELECT
  96. t.#CURRENT_DATE#
  97. ,t.#SEND_AGENT_NAME#
  98. ,t.#SEND_COUNTRY#
  99. ,t.#TRAN_ID#
  100. ,t.#SEND_USER#
  101. ,t.#PAID_USER#
  102. ,t.#CANCEL_USER#
  103. ,t.#CONTROL_NO#
  104. ,t.#COMPLAIN#
  105. ,t.#USER_NAME#
  106. ,t.#PAID_AGENT_NAME#
  107. ,t.#PAID_COUNTRY#
  108. ,t.#SEND_DATE#
  109. ,t.#PAID_DATE#
  110. ,t.#CANCEL_DATE#
  111. ,t.#SEND_AMT#
  112. ,t.#PAID_AMT#
  113. ,t.#USER_FULL_NAME#
  114. ,t.#AGENT_NAME#
  115. ,t.#BRANCH_NAME#
  116. ,t.#RETURN_AMT#
  117. ,t.#STUDENT_NAME#
  118. ,t.#STUDENT_CLASS#
  119. FROM #TEMP1 AS t
  120. ) AS SourceTable
  121. UNPIVOT
  122. (
  123. VALUE FOR Col IN
  124. (
  125. #CURRENT_DATE#
  126. ,#SEND_AGENT_NAME#
  127. ,#SEND_COUNTRY#
  128. ,#TRAN_ID#
  129. ,#SEND_USER#
  130. ,#PAID_USER#
  131. ,#CANCEL_USER#
  132. ,#CONTROL_NO#
  133. ,#COMPLAIN#
  134. ,#USER_NAME#
  135. ,#PAID_AGENT_NAME#
  136. ,#PAID_COUNTRY#
  137. ,#SEND_DATE#
  138. ,#PAID_DATE#
  139. ,#CANCEL_DATE#
  140. ,#SEND_AMT#
  141. ,#PAID_AMT#
  142. ,#USER_FULL_NAME#
  143. ,#AGENT_NAME#
  144. ,#BRANCH_NAME#
  145. ,#RETURN_AMT#
  146. ,#STUDENT_NAME#
  147. ,#STUDENT_CLASS#
  148. )
  149. ) AS unpvt
  150. IF @flag = 'EduPay'
  151. BEGIN
  152. IF EXISTS(
  153. SELECT 'x'
  154. FROM emailTemplate WITH(NOLOCK)
  155. WHERE templateFor = @flag
  156. AND ISNULL(replyTo, 'Both') IN ('Both', 'Admin')
  157. AND ISNULL(isEnabled, 'N') = 'Y'
  158. AND ISNULL(isDeleted, 'N') = 'N')
  159. BEGIN
  160. SELECT @adminEmail = email +';'+ ISNULL(@adminEmail, '')
  161. FROM SystemEmailSetup WITH(NOLOCK)
  162. WHERE ISNULL(isSummary, 'No') = 'Yes'
  163. AND (agent = dbo.FNAGetHOAgentId())
  164. AND ISNULL(isDeleted, 'N') = 'N'
  165. -- ## Email subject and body - admin
  166. SELECT
  167. @subject = emailSubject,
  168. @body = emailFormat,
  169. @replyTo = replyTo
  170. FROM emailTemplate WITH(NOLOCK)
  171. WHERE templateFor = @flag
  172. AND ISNULL(replyTo, 'Both') IN ('Both', 'Admin')
  173. AND ISNULL(isEnabled, 'N') = 'Y'
  174. AND ISNULL(isDeleted, 'N') = 'N'
  175. DECLARE @totalRows INT, @count INT = 1
  176. SELECT @totalRows = COUNT(*) FROM #letterKeyword
  177. WHILE(@count <= @totalRows)
  178. BEGIN
  179. SELECT
  180. @subject = REPLACE(@subject, keyword, ISNULL(VALUE, ''))
  181. ,@body = REPLACE(@body, keyword, ISNULL(VALUE, ''))
  182. ,@id = id
  183. FROM #letterKeyword WHERE id = @count
  184. SET @count = @count + 1
  185. END
  186. if @adminEmail is not NULL and @subject IS not NULL and @body is not NULL and @controlNo is not NULL
  187. BEGIN
  188. INSERT INTO dbo.SMSQueue
  189. (
  190. email ,
  191. subject ,
  192. msg ,
  193. createdDate ,
  194. createdBy ,
  195. controlNo
  196. )
  197. VALUES (
  198. @adminEmail ,
  199. @subject ,
  200. @body ,
  201. GETDATE(),
  202. @user,
  203. @controlNo
  204. )
  205. END
  206. END
  207. -- ## Email subject and body - Agent
  208. IF EXISTS(SELECT 'X' FROM emailTemplate WITH(NOLOCK)
  209. WHERE templateFor = @flag
  210. AND ISNULL(replyTo, 'Both') IN ('Both', 'Agent')
  211. AND ISNULL(isEnabled, 'N') = 'Y'
  212. AND ISNULL(isDeleted, 'N') = 'N')
  213. BEGIN
  214. SELECT
  215. @subject = emailSubject,
  216. @body = emailFormat
  217. FROM emailTemplate WITH(NOLOCK) WHERE templateFor = @flag
  218. AND ISNULL(replyTo, 'Both') IN ('Both', 'Agent')
  219. AND ISNULL(isEnabled, 'N') = 'Y' AND ISNULL(isDeleted, 'N') = 'N'
  220. SET @count = 1
  221. WHILE(@count <= @totalRows)
  222. BEGIN
  223. SELECT
  224. @subject = REPLACE(@subject, keyword, ISNULL(VALUE, ''))
  225. ,@body = REPLACE(@body, keyword, ISNULL(VALUE, ''))
  226. ,@id = id
  227. FROM #letterKeyword WHERE id = @count
  228. SET @count = @count + 1
  229. END
  230. SELECT @agentEmail = agentEmail1
  231. FROM remitTran rt WITH(NOLOCK)
  232. INNER JOIN dbo.tranReceivers rec WITH(NOLOCK) ON rt.id = rec.tranId
  233. INNER JOIN dbo.schoolMaster sm WITH(NOLOCK) ON rec.stdCollegeId = sm.rowId
  234. INNER JOIN dbo.agentMaster am WITH(NOLOCK) ON sm.agentId = am.agentId
  235. WHERE rt.controlNo = @controlNoEncrypted
  236. IF @agentEmail is not NULL
  237. BEGIN
  238. INSERT INTO dbo.SMSQueue
  239. (
  240. email ,
  241. subject ,
  242. msg ,
  243. createdDate ,
  244. createdBy ,
  245. controlNo
  246. )
  247. VALUES (
  248. @agentEmail ,
  249. @subject ,
  250. @body ,
  251. GETDATE(),
  252. @user,
  253. @controlNo
  254. )
  255. END
  256. END
  257. END
  258. GO