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.

291 lines
24 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_RBAEvaluatedCustomers] 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_RBAEvaluatedCustomers]
  9. @flag VARCHAR(30) = NULL
  10. ,@assessement VARCHAR(30) = NULL
  11. ,@customerId VARCHAR(50) = NULL
  12. ,@RBAStatus VARCHAR(15) = NULL
  13. ,@pendingTxnGE30 VARCHAR(10) = NULL -- GreaterThanOrEqual to 30
  14. ,@pendingTxnL30 VARCHAR(10) = NULL -- LessThan 30
  15. ,@remarks VARCHAR(100) = NULL
  16. ,@user VARCHAR(50) = NULL
  17. ,@sortBy VARCHAR(50) = NULL
  18. ,@sortOrder VARCHAR(5) = NULL
  19. ,@pageSize INT = NULL
  20. ,@pageNumber INT = NULL
  21. AS
  22. SET NOCOUNT ON
  23. SET XACT_ABORT ON
  24. BEGIN TRY
  25. SET @pageNumber = ISNULL(@pageNumber, 1)
  26. SET @pageSize = ISNULL(@pageSize, 100)
  27. DECLARE
  28. @sql VARCHAR(MAX)
  29. ,@oldValue VARCHAR(MAX)
  30. ,@newValue VARCHAR(MAX)
  31. ,@module VARCHAR(10)
  32. ,@tableAlias VARCHAR(100)
  33. ,@logIdentifier VARCHAR(50)
  34. ,@logParamMod VARCHAR(100)
  35. ,@logParamMain VARCHAR(100)
  36. ,@table VARCHAR(MAX)
  37. ,@select_field_list VARCHAR(MAX)
  38. ,@extra_field_list VARCHAR(MAX)
  39. ,@sql_filter VARCHAR(MAX)
  40. ,@modType VARCHAR(6)
  41. ,@errorMsg VARCHAR(MAX)
  42. IF(@flag='rba-ec')
  43. BEGIN
  44. DECLARE
  45. @LOWrFrom MONEY
  46. ,@LOWrTo MONEY
  47. ,@MEDIUMrFrom MONEY
  48. ,@MEDIUMrTo MONEY
  49. ,@HIGHrFrom MONEY
  50. ,@HIGHrTo MONEY
  51. SELECT @LOWrFrom=rFrom ,@LOWrTo=rTo FROM RBAScoreMaster WHERE TYPE='LOW'
  52. SELECT @MEDIUMrFrom=rFrom ,@MEDIUMrTo=rTo FROM RBAScoreMaster WHERE TYPE='MEDIUM'
  53. SELECT @HIGHrFrom=rFrom ,@HIGHrTo=rTo FROM RBAScoreMaster WHERE TYPE='HIGH'
  54. SELECT
  55. ASSESSMENT = '<a onClick="showReport(''as'','''+x.ASSESSMENT+''','''')" class="contentlink">'+ x.ASSESSMENT+'</a>',
  56. CLEARED = '<a onClick="showReport(''rs'',''CLEARED'','''+x.ASSESSMENT+''')" class="contentlink">'+ CAST(x.CLEARED AS VARCHAR)+'</a>',
  57. PENDING_GE_30 = '<a onClick="showReport(''pge30'',''PENDING_GE_30'','''+x.ASSESSMENT+''')" class="contentlink">'+ CAST(x.PENDING_GE_30 AS VARCHAR)+'</a>',
  58. PENDING_L_30 = '<a onClick="showReport(''pl30'',''PENDING_L_30'','''+x.ASSESSMENT+''')" class="contentlink">'+ CAST(x.PENDING_L_30 AS VARCHAR)+'</a>',
  59. BLOCKED = '<a onClick="showReport(''rs'',''BLOCKED'','''+x.ASSESSMENT+''')" class="contentlink">'+ CAST(x.BLOCKED AS VARCHAR)+'</a>',
  60. x.TOTAL FROM (
  61. SELECT 'HIGH' ASSESSMENT
  62. , CLEARED = SUM(CASE WHEN RBA BETWEEN @HIGHrFrom AND @HIGHrTo AND RBASTATUS='CLEARED' THEN 1 ELSE 0 END )
  63. , PENDING_GE_30 = SUM( CASE WHEN RBA BETWEEN @HIGHrFrom AND @HIGHrTo AND RBASTATUS IS NULL AND DATEDIFF(D,LASTTXNDATE,GETDATE()) >=30 THEN 1 ELSE 0 END )
  64. , PENDING_L_30 = SUM( CASE WHEN RBA BETWEEN @HIGHrFrom AND @HIGHrTo AND RBASTATUS IS NULL AND DATEDIFF(D,LASTTXNDATE,GETDATE()) <30 THEN 1 ELSE 0 END )
  65. , BLOCKED = SUM( CASE WHEN RBA BETWEEN @HIGHrFrom AND @HIGHrTo AND RBASTATUS='BLOCKED' THEN 1 ELSE 0 END )
  66. , TOTAL = SUM( CASE WHEN RBA BETWEEN @HIGHrFrom AND @HIGHrTo THEN 1 ELSE 0 END )
  67. FROM CUSTOMERS WITH (NOLOCK) WHERE RBA IS NOT NULL
  68. UNION ALL
  69. SELECT 'MEDIUM' ASSESSMENT
  70. , CLEARED = SUM( CASE WHEN RBA BETWEEN @MEDIUMrFrom AND @MEDIUMrTo AND RBASTATUS='CLEARED' THEN 1 ELSE 0 END )
  71. , PENDING_GE_30 = SUM( CASE WHEN RBA BETWEEN @MEDIUMrFrom AND @MEDIUMrTo AND RBASTATUS IS NULL AND DATEDIFF(D,LASTTXNDATE,GETDATE()) >=30 THEN 1 ELSE 0 END )
  72. , PENDING_L_30 = SUM( CASE WHEN RBA BETWEEN @MEDIUMrFrom AND @MEDIUMrTo AND RBASTATUS IS NULL AND DATEDIFF(D,LASTTXNDATE,GETDATE()) <30 THEN 1 ELSE 0 END )
  73. , BLOCKED = SUM( CASE WHEN RBA BETWEEN @MEDIUMrFrom AND @MEDIUMrTo AND RBASTATUS='BLOCKED' THEN 1 ELSE 0 END )
  74. , TOTAL = SUM( CASE WHEN RBA BETWEEN @MEDIUMrFrom AND @MEDIUMrTo THEN 1 ELSE 0 END )
  75. FROM CUSTOMERS WITH (NOLOCK) WHERE RBA IS NOT NULL
  76. UNION ALL
  77. SELECT 'LOW' ASSESSMENT
  78. , CLEARED = SUM( CASE WHEN RBA BETWEEN @LOWrFrom AND @LOWrTo AND RBASTATUS='CLEARED' THEN 1 ELSE 0 END )
  79. , PENDING_GE_30 = SUM( CASE WHEN RBA BETWEEN @LOWrFrom AND @LOWrTo AND RBASTATUS IS NULL AND DATEDIFF(D,LASTTXNDATE,GETDATE()) >=30 THEN 1 ELSE 0 END )
  80. , PENDING_L_30 = SUM( CASE WHEN RBA BETWEEN @LOWrFrom AND @LOWrTo AND RBASTATUS IS NULL AND DATEDIFF(D,LASTTXNDATE,GETDATE()) <30 THEN 1 ELSE 0 END )
  81. , BLOCKED = SUM( CASE WHEN RBA BETWEEN @LOWrFrom AND @LOWrTo AND RBASTATUS='BLOCKED' THEN 1 ELSE 0 END )
  82. , TOTAL = SUM( CASE WHEN RBA BETWEEN @LOWrFrom AND @LOWrTo THEN 1 ELSE 0 END )
  83. FROM CUSTOMERS WITH (NOLOCK) WHERE RBA IS NOT NULL
  84. )x
  85. END
  86. IF(@flag='rba-ec-dl')
  87. BEGIN
  88. DECLARE
  89. @rFrom MONEY
  90. ,@rTo MONEY
  91. SELECT @rFrom=rFrom ,@rTo=rTo FROM RBAScoreMaster WHERE TYPE=@assessement
  92. DECLARE @cusRBALink VARCHAR(5000)
  93. SET @cusRBALink='<a href="#" onclick="OpenInNewWindow(''''/Remit/RiskBaseAnalysis/cusRBACalcDetails.aspx?'
  94. SET @table = '
  95. SELECT
  96. customerId
  97. ,[Name] = UPPER(fullname)
  98. ,mobile
  99. ,idType = sd.detailTitle
  100. ,idNumber
  101. ,country = cm.countryName
  102. ,RBA = ''' + @cusRBALink + 'customerId=''+ CAST(customerId AS VARCHAR)+''&dt=''+ (SELECT MAX(dt) FROM PERIODICRBA WITH(NOLOCK) WHERE customerId = customerId) +'''''')">'' + CONVERT(VARCHAR, RBA, 2) + ''</a>''
  103. --,RBA
  104. ,lastTxnDate
  105. ,[Status]=RBASTATUS
  106. ,pendingRemarks
  107. ,''Action''= CASE RBASTATUS WHEN ''CLEARED'' THEN ''<a class="link" onclick="ShowRemarks(this,''''BLOCKED'''',''''''+ CAST(customerId AS VARCHAR)+'''''')"> BLOCK </a>''
  108. WHEN ''BLOCKED'' THEN ''<a class="link" onclick="ShowRemarks(this,''''CLEARED'''',''''''+ CAST(customerId AS VARCHAR)+'''''')"> CLEAR </a>''
  109. ELSE ''<a class="link" onclick="ShowRemarks(this,''''CLEARED'''',''''''+ CAST(customerId AS VARCHAR)+'''''')"> CLEAR </a> | <a class="link" onclick="ShowRemarks(this,''''BLOCKED'''',''''''+ CAST(customerId AS VARCHAR)+'''''')"> BLOCK </a> | <a class="link" onclick="ShowRemarks(this,''''PENDINGRELEASE'''',''''''+ CAST(customerId AS VARCHAR)+'''''')"> PENDING RELEASE REMARKS </a>''
  110. END
  111. , ''Links''= ''<a class="link" onclick="OpenInNewWindow(''''../../Remit/Administration/CustomerSetup/CustomerDocument/DocumentView.aspx?customerId=''+CAST(customerId AS VARCHAR)+'''''');"><img alt = "Documents" title = "Documents" src="../../Images/uploadIdImage.gif" height="16" widht="16" /></a>&nbsp;''
  112. +''<a class="link" onclick="OpenInNewWindow(''''../../Remit/Administration/CustomerSetup/TranHistory.aspx?customerId=''+CAST(customerId AS VARCHAR)+''&idNumber=''+CAST(customerId AS VARCHAR)+'''''');"><img alt = "History" title = "History" src="../../Images/view-detail-icon.png" /></a>&nbsp;''
  113. +''<a class="link" onclick="OpenInNewWindow(''''../../Remit/Administration/CustomerSetup/CustomerLimit/ListCustomerLimit.aspx?customerId=''+CAST(customerId AS VARCHAR)+'''''');"><img alt = "Limit" title = "Limit" src="../../Images/limit.png" /></a>''
  114. FROM CUSTOMERS cu WITH (NOLOCK)
  115. LEFT JOIN countryMaster cm WITH(NOLOCK) ON cu.country = cm.countryId
  116. LEFT JOIN staticDataValue sd WITH(NOLOCK) ON sd.valueId = cu.idType
  117. LEFT JOIN (
  118. SELECT cid = RP.customerId, RP.pendingRemarks FROM RBApendingRemarks RP
  119. INNER JOIN (
  120. SELECT rowId = MAX(rowId),customerId FROM RBApendingRemarks WITH(NOLOCK) GROUP BY customerId
  121. )Y ON Y.customerId = RP.customerId
  122. )rpr on CU.customerId = rpr.cid
  123. WHERE RBA IS NOT NULL
  124. '
  125. IF ISNULL(@assessement,'') <> ''
  126. BEGIN
  127. SET @table=@table + ' AND RBA BETWEEN ' + CAST(@rFrom AS VARCHAR) + ' AND ' + CAST(@rTo AS VARCHAR) + ''
  128. END
  129. IF ISNULL(@RBAStatus,'') <> ''
  130. SET @table=@table+' AND RBASTATUS = ''' + @RBAStatus + ''' '
  131. IF ISNULL(@pendingTxnGE30,'') <> ''
  132. SET @table=@table+' AND DATEDIFF(D,LASTTXNDATE,GETDATE()) >= 30 AND RBASTATUS IS NULL '
  133. IF ISNULL(@pendingTxnL30,'') <> ''
  134. SET @table=@table+' AND DATEDIFF(D,LASTTXNDATE,GETDATE()) < 30 AND RBASTATUS IS NULL '
  135. SET @sql = 'SELECT
  136. COUNT(*) AS TXNCOUNT
  137. ,' + CAST(@pageSize AS VARCHAR) + ' PAGESIZE
  138. ,' + CAST(@pageNumber AS VARCHAR) + ' PAGENUMBER
  139. FROM (' + @table + ') x'
  140. PRINT @sql
  141. EXEC (@sql)
  142. SET @sql = '
  143. SELECT
  144. [Customer Id] = customerId
  145. ,[Customer Name] = Name
  146. ,[Mobile No.] = mobile
  147. ,[ID Type] = idType
  148. ,[ID No.] = idNumber
  149. ,[Country] = country
  150. ,[RBA] = RBA
  151. ,[Last Txn Date] = lastTxnDate
  152. ,[Status] = Status
  153. ,[Pending Release Remarks] = pendingRemarks
  154. ,[Action] = Action
  155. ,Links
  156. FROM (
  157. SELECT
  158. ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS [S.N],*
  159. FROM (' + @table + ') x
  160. ) AS tmp WHERE tmp.[S.N] BETWEEN ' + CAST(((@pageNumber - 1) * @pageSize + 1) AS VARCHAR) + ' AND ' + CAST(@pageNumber * @pageSize AS VARCHAR)
  161. PRINT @sql
  162. EXEC (@sql)
  163. EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
  164. --DECLARE @filterQuery VARCHAR(MAX)
  165. --SET @filterQuery='
  166. --SELECT ''ASSESSMENT'' head, '+@assessement+' VALUE '
  167. --IF ISNULL(@RBAStatus,'') <> ''
  168. -- SET @filterQuery=@filterQuery+' UNION ALL SELECT ''RBA STATUS'' head, ' + @RBAStatus + ' VALUE '
  169. --IF ISNULL(@pendingTxnGE30,'') <> ''
  170. -- SET @filterQuery=@filterQuery+' UNION ALL SELECT ''PENDING'' head, ''Last TXN date>=30 Days'' VALUE '
  171. --IF ISNULL(@pendingTxnL30,'') <> ''
  172. --SET @filterQuery=@filterQuery+' UNION ALL SELECT ''PENDING'' head, ''Last TXN date<30 Days'' VALUE '
  173. SELECT 'ASSESSMENT' head, UPPER(@assessement) VALUE
  174. UNION ALL
  175. SELECT 'RBA STATUS' head, ISNULL(UPPER(@RBAStatus),'ALL') VALUE
  176. UNION ALL
  177. SELECT 'PENDING' head, CASE WHEN @pendingTxnGE30 IS NULL AND @pendingTxnL30 IS NULL THEN 'ALL' ELSE
  178. CASE WHEN @pendingTxnGE30 IS NULL THEN 'LAST TXN DATE <30 DAYS' ELSE 'LAST TXN DATE>=30 DAYS' END END VALUE
  179. SELECT 'RBA Customer Report' title
  180. END
  181. IF @flag = 'reviewstatus'
  182. BEGIN
  183. DECLARE @oldStatus VARCHAR(15)
  184. SELECT @oldStatus = rbaStatus FROM dbo.customers WITH(NOLOCK) WHERE customerId = @customerId
  185. BEGIN TRAN
  186. INSERT INTO RBAreviewhistory(customerid,oldStatus,newStatus,remarks,reviewedBy,reviewedDate)
  187. SELECT @customerId, @oldStatus, @RBAStatus, @remarks, @user, GETDATE()
  188. UPDATE customers SET RBASTATUS = @RBAStatus WHERE customerId = @customerId
  189. COMMIT TRAN
  190. EXEC proc_errorHandler '0', 'success', @customerId
  191. END
  192. IF @flag = 'pendingRemarks'
  193. BEGIN
  194. INSERT INTO RBApendingRemarks(customerid,pendingRemarks,createdBy,createdDate)
  195. SELECT @customerId, @remarks, @user, GETDATE()
  196. EXEC proc_errorHandler '0', 'success', @customerId
  197. END
  198. IF @flag='calculationDetail'
  199. BEGIN
  200. DECLARE @RBA MONEY,@type VARCHAR(20)
  201. SELECT @RBA = RBA FROM customers WITH(NOLOCK) WHERE customerId = @customerId
  202. SELECT @type = TYPE FROM RBAScoreMaster where @RBA BETWEEN rFrom AND rTo
  203. SELECT
  204. c.fullName
  205. ,dob = CONVERT(varchar,dob,101)
  206. ,gender
  207. ,nativeCountry = cm.countryName
  208. ,country = cm1.countryName
  209. ,idType = sdv.detailTitle
  210. ,idNumber
  211. ,state
  212. ,city
  213. ,address
  214. ,mobile
  215. ,email
  216. ,rba = cast(@RBA as decimal(10,2))
  217. ,[type] = @type
  218. FROM customers c WITH(NOLOCK)
  219. INNER JOIN countryMaster cm WITH(NOLOCK) ON c.nativeCountry = cm.countryId
  220. INNER JOIN countryMaster cm1 WITH(NOLOCK) ON c.country = cm1.countryId
  221. INNER JOIN staticDataValue sdv WITH(NOLOCK) ON sdv.valueId = c.idType
  222. WHERE customerId = @customerId
  223. ---RBA Calculation Summary---
  224. SELECT [taRating] = 20 , [taWeight] = 10,[paRating] = 80 , [paWeight] = 10
  225. --RBA Calculation Summary-Transaction Assesement---
  226. SELECT Criteria,remarks Description, isnull(rangefrom,1) [Range From], ISNULL(rangeto,100) [Range To], ISNULL(rating,100) Rating, ISNULL(Weight,100) Weight
  227. FROM rbacriteria WHERE assessmenttype='Transaction'
  228. --RBA Calculation Summary-Periodic Assesement--
  229. SELECT Criteria,ISNULL(remarks,criteria) Description, isnull(rangefrom,1) [Range From], ISNULL(rangeto,100) [Range To], ISNULL(rating,100) Rating, ISNULL(Weight,100) Weight
  230. FROM rbacriteria WHERE assessmenttype='Periodic'
  231. RETURN
  232. END
  233. END TRY
  234. BEGIN CATCH
  235. IF @@TRANCOUNT > 0
  236. ROLLBACK TRANSACTION
  237. DECLARE @errorMessage VARCHAR(MAX)
  238. SET @errorMessage = ERROR_MESSAGE()
  239. EXEC proc_errorHandler 1, @errorMessage, @customerId
  240. END CATCH
  241. GO