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.

303 lines
20 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_RBA] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  9. /* EXEC proc_RBA @flag='rba',@customerId=2405263,@cAmt=20000.00 */
  10. CREATE PROC [dbo].[proc_RBA]
  11. @flag VARCHAR(10) = NULL
  12. ,@rowId INT = NULL
  13. ,@customerId BIGINT = NULL
  14. ,@cAmt MONEY = NULL
  15. ,@user VARCHAR(50) = NULL
  16. ,@countryCode INT = NULL
  17. ,@countryName VARCHAR(100) = NULL
  18. ,@isBlocked BIT = NULL
  19. ,@agentRefId VARCHAR(20) = NULL
  20. ,@sortBy VARCHAR(50) = NULL
  21. ,@sortOrder VARCHAR(5) = NULL
  22. ,@pageSize INT = NULL
  23. ,@pageNumber INT = NULL
  24. ,@noReturnMsg BIT = NULL
  25. AS
  26. BEGIN TRY
  27. DECLARE
  28. @customerRisk VARCHAR(20)
  29. ,@customerRiskValue MONEY
  30. ,@transactionRisk VARCHAR(20)
  31. ,@ECDDRequired CHAR(1)
  32. ,@ComplianceHold CHAR(1)
  33. ,@errorCode INT = 0
  34. ,@table VARCHAR(MAX)
  35. ,@select_field_list VARCHAR(MAX)
  36. ,@extra_field_list VARCHAR(MAX)
  37. ,@sql_filter VARCHAR(MAX)
  38. ,@hasRight CHAR(1)
  39. IF @flag = 'rba'
  40. BEGIN
  41. IF EXISTS(SELECT 'X' FROM dbo.RBAHighRiskCountry WITH(NOLOCK) WHERE countryName=@countryName)
  42. BEGIN
  43. SELECT @isBlocked = isBlocked FROM dbo.RBAHighRiskCountry WITH(NOLOCK) WHERE countryName = @countryName
  44. IF @isBlocked=1
  45. BEGIN
  46. EXEC proc_errorHandler 11, '<div style="color: Red !important;">Sorry, Transaction cannot be processed, As Customer is from blocked country. Please contact compliance.</div>', @rowId
  47. RETURN
  48. END
  49. ELSE
  50. BEGIN
  51. SELECT @customerRisk = 'High', @customerRiskValue = 100
  52. END
  53. END
  54. ELSE IF ISNULL(@customerId,'') = ''
  55. BEGIN
  56. SELECT @customerRisk = 'MEDIUM RISK', @customerRiskValue = 50
  57. END
  58. ELSE
  59. BEGIN
  60. DECLARE @RBAStatus VARCHAR(25)
  61. SELECT @customerRisk = [TYPE]+' RISK'
  62. ,@customerRiskValue = ISNULL(RBA,50)
  63. ,@RBAStatus = RBAStatus
  64. FROM CUSTOMERS C, RBAScoreMaster R
  65. WHERE ISNULL(RBA,50) BETWEEN rFrom AND rTo AND customerId = @customerid
  66. IF ISNULL(@RBAStatus,'')<>''
  67. SELECT @customerRisk = @RBAStatus+' RISK'
  68. ,@customerRiskValue = 100
  69. END
  70. IF OBJECT_ID(N'tempdb..#trnTemp') IS NOT NULL
  71. DROP TABLE #trnTemp
  72. CREATE TABLE #trnTemp(tranId BIGINT, cAmt MONEY)
  73. DECLARE @matchTranIds VARCHAR(MAX)
  74. IF @customerId IS NOT NULL
  75. BEGIN
  76. INSERT INTO #trnTemp(tranId, cAmt)
  77. SELECT trn.id, cAmt FROM dbo.vwRemitTran trn WITH(NOLOCK)
  78. INNER JOIN dbo.vwTranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
  79. WHERE sen.customerId = @customerId
  80. AND cancelApprovedDate IS NULL AND createdDate BETWEEN
  81. CAST(DATEPART(MONTH, GETDATE()) AS VARCHAR) + '/01/' + CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR) AND CONVERT(VARCHAR, GETDATE(), 101) + ' 23:59:59:998'
  82. SELECT @cAmt = @cAmt + ISNULL(SUM(cAmt), 0) FROM #trnTemp
  83. SELECT @matchTranIds = COALESCE(ISNULL(@matchTranIds + ',', ''), '') + CAST(tranId AS VARCHAR) FROM #trnTemp
  84. END
  85. SELECT @transactionRisk = transactionRisk
  86. ,@ECDDRequired = ECDDRequired
  87. ,@ComplianceHold = ComplianceHold
  88. FROM RBACriteriaTransaction
  89. WHERE customerRisk = @customerRisk
  90. AND @camt BETWEEN amountFrom AND amountTo
  91. IF @transactionRisk = 'High Risk' OR @transactionRisk = 'Very High Risk' OR ISNULL(@customerRisk, 'LOW') = 'HIGH' SET @errorCode = 3
  92. ELSE IF @transactionRisk = 'Medium Risk' OR ISNULL(@customerRisk,'LOW') = 'MEDIUM' SET @errorCode = 2
  93. ELSE IF @transactionRisk = 'Low Risk' AND ISNULL(@customerRisk,'LOW') = 'LOW' SET @errorCode = 0
  94. DECLARE @spanMsg VARCHAR(500) = ''
  95. IF @transactionRisk = 'Very High Risk'
  96. BEGIN
  97. SET @spanMsg = 'Please note that this transaction requires <u>Enhance Customer Due Diligence</u>, please provide an explanation
  98. below about the customer activity and source of funds. Please upload supporting documents to justify the source of funds to process this transaction. Once provided the transaction will be available for payment. Please contact C
  99. ompliance Department for further information +603 2261 4030 ext : 241'
  100. END
  101. IF ISNULL(@noReturnMsg, 0) <> 1
  102. BEGIN
  103. SELECT 'errorCode' = @errorCode
  104. ,'TransactionRisk' = @transactionRisk
  105. ,'CustomerRisk' = @customerRisk
  106. ,'customerRiskValue' = @customerRiskValue
  107. ,'ECDDRequired' = @ECDDRequired
  108. ,'ComplianceHold' = @ComplianceHold
  109. ,'spanMsg' = @spanMsg
  110. END
  111. IF @ComplianceHold = 'Y'
  112. BEGIN
  113. IF EXISTS(SELECT TOP 1 'X' FROM #trnTemp)
  114. BEGIN
  115. INSERT INTO remitTranComplianceTemp(csDetailTranId, matchTranId, agentRefId, reason)
  116. SELECT 0, @matchTranIds, @agentRefId, 'TXN under RBA parameters. Customer : ' + ISNULL(@customerRisk, '') + ', TXN : ' + ISNULL(@transactionRisk, '')
  117. END
  118. ELSE
  119. BEGIN
  120. INSERT INTO remitTranComplianceTemp(csDetailTranId, matchTranId, agentRefId, reason)
  121. SELECT 0, NULL, @agentRefId, 'TXN under RBA parameters. Customer : ' + ISNULL(@customerRisk, '') + ', TXN : ' + ISNULL(@transactionRisk, '')
  122. END
  123. END
  124. END
  125. ELSE IF @flag = 'criteria'
  126. BEGIN
  127. --TXN ASSESSMENT---
  128. SELECT 'Customer Risk' = customerRisk,'Amount From' = amountFrom,'Amount To' = amountTo,'Transaction Risk' = transactionRisk
  129. ,'ECDD Required' = CASE ECDDRequired WHEN 'M' THEN 'Mandatory' ELSE 'Optional' END
  130. ,'Compliance Hold' = CASE complianceHold WHEN 'Y' THEN 'Yes' ELSE 'No' END
  131. FROM dbo.RBACriteriaTransaction [Transaction Criteria]
  132. --PERIODIC ASSESSMENT--
  133. SELECT 'Parameter' = parameter,'Criteria' = criteria,'Score' = score FROM dbo.RBAcriteriaCustomer [Customer Criteria]
  134. --Trigger Criteria--
  135. SELECT Parameter,[From],[To],Score FROM dbo.RBAcriteriaTrigger
  136. ---RATING---
  137. SELECT rFrom [Range From], rTo [Range To] ,TYPE Rating from RBAScoreMaster [Rating]
  138. END
  139. ELSE IF @flag='i-hrc' -- INSERT High Risk Country (hrc)
  140. BEGIN
  141. IF NOT EXISTS(SELECT 'X' FROM RBAHighRiskCountry WITH(NOLOCK) WHERE countryId=@countryCode)
  142. BEGIN
  143. INSERT INTO RBAHighRiskCountry(countryId,countryName,isBlocked,createdDate,createdBy)
  144. VALUES (@countryCode,@countryName,@isBlocked,GETDATE(),@user)
  145. EXEC proc_errorHandler 0, 'Country added successfully.', @countryCode
  146. END
  147. ELSE
  148. BEGIN
  149. EXEC proc_errorHandler 1, 'Country already exists in the list.', @countryCode
  150. END
  151. END
  152. ELSE IF @flag='s-hrc'
  153. BEGIN
  154. -------
  155. SET @hasRight = dbo.FNAHasRight(@user, '20191310') --Add Edit
  156. IF @sortBy IS NULL
  157. SET @sortBy = 'countryName'
  158. IF @sortOrder IS NULL
  159. SET @sortOrder = 'ASC'
  160. SET @table = '(
  161. SELECT DISTINCT
  162. rowId
  163. ,countryId
  164. ,countryName
  165. ,blocked= CASE WHEN isBlocked=1 THEN ''Yes'' ELSE ''No'' END
  166. ,customlink =
  167. CASE WHEN '''+@hasRight+'''=''Y'' THEN
  168. ''<a href="AddHighRiskCountry.aspx?type=edit&Id=''+CAST(main.rowId AS VARCHAR)
  169. +''">Edit</a>&nbsp;|&nbsp;''
  170. +''<a onclick="return confirm(''''Are you sure you want to delete?'''');" href="AddHighRiskCountry.aspx?type=delete&Id=''+CAST(main.rowId AS VARCHAR)+''">Delete</a>&nbsp;''
  171. ELSE '''' END
  172. FROM RBAHighRiskCountry main WITH(NOLOCK)
  173. WHERE 1 = 1
  174. ) x'
  175. SET @sql_filter = ''
  176. IF @countryName IS NOT NULL
  177. BEGIN
  178. SET @sql_filter = @sql_filter + ' AND countryName LIKE '''+@countryName+'%'''
  179. END
  180. PRINT @table+' '+@sql_filter
  181. SET @select_field_list ='
  182. rowId,
  183. countryId,
  184. countryName,
  185. blocked,
  186. customlink
  187. '
  188. EXEC dbo.proc_paging
  189. @table
  190. ,@sql_filter
  191. ,@select_field_list
  192. ,@extra_field_list
  193. ,@sortBy
  194. ,@sortOrder
  195. ,@pageSize
  196. ,@pageNumber
  197. RETURN
  198. END
  199. ELSE IF @flag='s-hrc-id'
  200. BEGIN
  201. SELECT TOP 1 rowid,countryId,countryName,isBlocked FROM RBAHighRiskCountry WITH(NOLOCK) WHERE rowId=@rowId
  202. END
  203. ELSE IF @flag='u-hrc'
  204. BEGIN
  205. IF NOT EXISTS(SELECT 'X' FROM RBAHighRiskCountry WITH(NOLOCK) WHERE rowId=@rowId)
  206. BEGIN
  207. EXEC proc_errorHandler 1, 'Country not exists.', @rowId
  208. END
  209. INSERT INTO RBAHighRiskCountryHistory(rowId,countryId,countryName,isBlocked,createdDate,createdBy,modifiedDate,modifiedBy)
  210. SELECT rowId,countryId,countryName,isBlocked,createdDate,createdBy,GETDATE(),@user FROM RBAHighRiskCountry WITH(NOLOCK) WHERE rowId=@rowId
  211. UPDATE RBAHighRiskCountry SET countryId=@countryCode,countryName=@countryName,isBlocked=@isBlocked WHERE rowId=@rowId
  212. EXEC proc_errorHandler 0, 'Country updated successfully.', @rowId
  213. END
  214. ELSE IF @flag='d-hrc'
  215. BEGIN
  216. IF NOT EXISTS(SELECT 'X' FROM RBAHighRiskCountry WITH(NOLOCK) WHERE rowId=@rowId)
  217. BEGIN
  218. EXEC proc_errorHandler 1, 'Country not exists.', @rowId
  219. END
  220. INSERT INTO RBAHighRiskCountryHistory(rowId,countryId,countryName,isBlocked,createdDate,createdBy,modifiedDate,modifiedBy)
  221. SELECT rowId,countryId,countryName,isBlocked,createdDate,createdBy,GETDATE(),@user FROM RBAHighRiskCountry WITH(NOLOCK) WHERE rowId=@rowId
  222. DELETE FROM RBAHighRiskCountry WHERE rowId=@rowId
  223. EXEC proc_errorHandler 0, 'Country removed successfully from the list.', @rowId
  224. END
  225. /*
  226. ELSE IF @flag = 'updateRBA'
  227. BEGIN
  228. IF @ComplianceHold='Y'
  229. BEGIN
  230. UPDATE REMITTRANTEMP SET TRANSTATUS= CASE WHEN TRANSTATUS='HOLD' THEN 'Compliance Hold' WHEN TRANSTATUS='OFAC Hold' THEN 'OFAC/Compliance Hold' ELSE TRANSTATUS END
  231. INSERT INTO remittrancompliance ( TranId, csDetailTranId, reason)
  232. SELECT @tranId,0,'TXN under RBA parameters. Customer '+ @customerRisk + ' TXN '+@transactionRisk
  233. END
  234. ---UPDATE IN TRANSENDERS----
  235. UPDATE transenders SET
  236. RBA= CASE WHEN @transactionRisk='LOW RISK' THEN 40 WHEN @transactionRisk='MEDIUM RISK' THEN 50 WHEN @transactionRisk='HIGH RISK' THEN 51 ELSE 100 END
  237. ,customerRiskPoint=@customerRiskValue
  238. WHERE tranId=@tranId
  239. END
  240. */
  241. END TRY
  242. BEGIN CATCH
  243. SELECT 1 errorCode, ERROR_MESSAGE() msg, NULL id
  244. INSERT INTO dbErrorLog(spName, flag, errorMsg, errorLine, createdBy, createdDate)
  245. SELECT ERROR_PROCEDURE(), @flag, ERROR_MESSAGE(), ERROR_LINE(), @user, GETDATE()
  246. END CATCH
  247. GO