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.

322 lines
9.2 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_amlTopCustomer] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_amlTopCustomer]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_amlTopCustomer] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. CREATE proc [dbo].[proc_amlTopCustomer]
  12. @flag VARCHAR(10)
  13. ,@user VARCHAR(30)
  14. -------------------------------------------
  15. ,@sCountry VARCHAR(50) = NULL
  16. ,@rCountry VARCHAR(50) = NULL
  17. ,@sAgent VARCHAR(50) = NULL
  18. ,@rAgent VARCHAR(50) = NULL
  19. ,@rMode VARCHAR(50) = NULL
  20. ,@dateType VARCHAR(10) = NULL
  21. ,@frmDate VARCHAR(50) = NULL
  22. ,@toDate VARCHAR(50) = NULL
  23. -------------------------------------------
  24. ,@rptBy VARCHAR(50) = NULL
  25. ,@rptFor VARCHAR(50) = NULL
  26. ,@tcNo VARCHAR(50) = NULL
  27. -------------------------------------------
  28. ,@pageNumber INT = 1
  29. ,@pageSize INT = 50
  30. ,@isExportFull VARCHAR(1) = NULL
  31. ,@reportType VARCHAR(50) = NULL
  32. AS
  33. SET NOCOUNT ON
  34. BEGIN TRY
  35. DECLARE @table VARCHAR(MAX)
  36. DECLARE @sql VARCHAR(MAX)
  37. DECLARE @globalFilter VARCHAR(MAX) = ''
  38. DECLARE @URL VARCHAR(MAX) = ''
  39. DECLARE @reportHead VARCHAR(100) = ''
  40. SET @rMode = REPLACE(@rMode,'__',' ')
  41. DECLARE @FilterList TABLE(head VARCHAR(50), value VARCHAR(5000))
  42. SET @pageNumber = ISNULL(@pageNumber, 1)
  43. SET @pageSize = ISNULL(@pageSize, 100)
  44. SET @globalFilter = ' AND rt.tranStatus <> ''Cancel'''
  45. IF @sCountry is not null
  46. BEGIN
  47. INSERT @FilterList
  48. SELECT 'Sender Country', @sCountry
  49. SET @globalFilter = @globalFilter + ' AND rt.sCountry = ''' + @sCountry + ''''
  50. END
  51. IF @rCountry is not null
  52. BEGIN
  53. INSERT @FilterList
  54. SELECT 'Receiver Country', @rCountry
  55. SET @globalFilter = @globalFilter + ' AND rt.pCountry = ''' + @rCountry + ''''
  56. END
  57. IF @sAgent IS NOT NULL
  58. BEGIN
  59. INSERT @FilterList
  60. SELECT 'Sender Agent', am.agentName
  61. FROM agentMaster am WITH(NOLOCK) WHERE agentId = @sAgent
  62. SET @globalFilter = @globalFilter + ' AND rt.sAgent = ''' + @sAgent + ''''
  63. END
  64. IF @rAgent IS NOT NULL
  65. BEGIN
  66. INSERT @FilterList
  67. SELECT 'Receiver Agent', am.agentName
  68. FROM agentMaster am WITH(NOLOCK) WHERE agentId = @rAgent
  69. SET @globalFilter = @globalFilter + ' AND rt.pAgent = ''' + @rAgent + ''''
  70. END
  71. IF @rMode IS NOT NULL
  72. BEGIN
  73. INSERT @FilterList
  74. SELECT 'Receiving Mode', @rMode
  75. SET @globalFilter = @globalFilter + ' AND rt.paymentMethod = ''' + @rMode + ''''
  76. END
  77. --IF @tranType IS NOT NULL
  78. --BEGIN
  79. -- INSERT @FilterList
  80. -- SELECT 'Tran Type', @tranType
  81. -- SET @globalFilter = @globalFilter + ' AND rt.tranType = ''' + @tranType + ''''
  82. --END
  83. INSERT @FilterList
  84. SELECT 'Date Type',
  85. case when @dateType = 'txnDate' then 'TXN Date'
  86. when @dateType = 'confirmDate' then 'Confirm Date'
  87. when @dateType = 'paidDate' then 'Paid Date' end
  88. IF @dateType = 'txnDate'
  89. BEGIN
  90. INSERT @FilterList
  91. SELECT 'From Date', @frmDate
  92. SET @globalFilter = @globalFilter + ' AND rt.createdDate >= ''' + @frmDate + ''''
  93. INSERT @FilterList
  94. SELECT 'To Date', @toDate
  95. SET @globalFilter = @globalFilter + ' AND rt.createdDate <= ''' + @toDate + ' 23:59:59'''
  96. END
  97. IF @dateType = 'confirmDate'
  98. BEGIN
  99. INSERT @FilterList
  100. SELECT 'From Date', @frmDate
  101. SET @globalFilter = @globalFilter + ' AND rt.approvedDate >= ''' + @frmDate + ''''
  102. INSERT @FilterList
  103. SELECT 'To Date', @toDate
  104. SET @globalFilter = @globalFilter + ' AND rt.approvedDate <= ''' + @toDate + ' 23:59:59'''
  105. END
  106. IF @dateType = 'paidDate'
  107. BEGIN
  108. INSERT @FilterList
  109. SELECT 'From Date', @frmDate
  110. SET @globalFilter = @globalFilter + ' AND rt.paidDate >= ''' + @frmDate + ''''
  111. INSERT @FilterList
  112. SELECT 'To Date', @toDate
  113. SET @globalFilter = @globalFilter + ' AND rt.paidDate <= ''' + @toDate + ' 23:59:59'''
  114. END
  115. IF @flag = 'tc'
  116. BEGIN
  117. SET @reportHead ='Top Customer'
  118. IF @rptFor = 'Sender'
  119. SET @URL='"Reports.aspx?dateType='+@dateType+'&frmDate='+@frmDate+'&toDate='+@toDate+'&sCountry='
  120. +isnull(replace(@sCountry,' ','__'),'')+'&sAgent='+isnull(@sAgent,'')
  121. +'&rMode='+ISNULL(REPLACE(@rMode,' ','__'),'')+'&rCountry='
  122. +isnull(replace(@rCountry,' ','__'),'')+'&rAgent='+ISNULL(@rAgent,'')
  123. +'&rptBy='+@rptBy+'&rptFor='+ISNULL(@rptFor,'')+'&reportName=amlddlreport&recName='
  124. + CASE WHEN @rptFor = 'Sender' THEN '''+REPLACE(rt.senderName,'' '',''__'')+''' ELSE '''+REPLACE(rt.receiverName,'' '',''__'')+''' END
  125. + '&flag=tc_ddl&country=''+REPLACE(ISNULL(ts.nativeCountry,''''),'' '',''__'') +''&membershipId=''+ISNULL(ts.membershipId,'''') +''&idType=''+ISNULL(ts.idType,'''') +''&idNumber=''+ISNULL(ts.idNumber,'''') +''&company=''+REPLACE(ISNULL(ts.companyName,''''),'' '',''__'')+''"'
  126. ELSE
  127. SET @URL='"Reports.aspx?dateType='+@dateType+'&frmDate='+@frmDate+'&toDate='+@toDate+'&sCountry='+isnull(replace(@sCountry,' ','__'),'')
  128. +'&sAgent='+isnull(@sAgent,'')+'&rMode='+ISNULL(REPLACE(@rMode,' ','__'),'')
  129. +'&rCountry='+isnull(replace(@rCountry,' ','__'),'')+'&rAgent='+ISNULL(@rAgent,'')
  130. +'&rptBy='+@rptBy+'&rptFor='+ISNULL(@rptFor,'')+'&reportName=amlddlreport&recName=' + CASE WHEN @rptFor = 'Sender'
  131. THEN '''+REPLACE(rt.senderName,'' '',''__'')+''' ELSE '''+REPLACE(rt.receiverName,'' '',''__'')+''' END
  132. + '&flag=tc_ddl&country=''+REPLACE(ISNULL(ts.nativeCountry,''''),'' '',''__'')+''&membershipId=''+ISNULL(ts.membershipId,'''') +''&pCountry=''+REPLACE(ISNULL(rt.pCountry,''''),'' '',''__'')+''"'
  133. SET @table = '
  134. SELECT
  135. [Membership ID] = ISNULL(ts.mobile,''-'')
  136. ,[Name] = ''<span class = "link" onclick =ViewAMLDDLReport('+@URL+');>'' + ISNULL(' + CASE WHEN @rptFor = 'Sender' THEN 'rt.senderName' ELSE 'rt.receiverName' END + ',''-'') + ''</span>''
  137. ,[Nationality] = ISNULL(ts.nativeCountry,''-'')
  138. ' +
  139. CASE
  140. WHEN @rptFor = 'Sender' THEN '
  141. ,[Id type] = ts.idType
  142. ,[ID Number] = ts.idNumber
  143. ,[Company] = ts.companyName
  144. '
  145. ELSE
  146. '
  147. '
  148. END +
  149. '
  150. ,[Number of TXN] = COUNT(1)
  151. ' +
  152. CASE
  153. WHEN @rptFor = 'Sender' THEN '
  154. ,[Collection_USD AMT] = SUM(ISNULL(rt.cAmt / (NULLIF(rt.sCurrCostRate, 0)+ISNULL(RT.scurrhomargin,0)), 0))
  155. ,[Collection_Currency] = rt.collCurr
  156. ,[Collection_Amount] = ROUND(SUM(rt.cAmt), 2, 0)
  157. '
  158. ELSE
  159. '
  160. ,[Payout_USD AMT] = ROUND(SUM(ISNULL(rt.tAmt / NULLIF(rt.sCurrCostRate, 0), 0)), 2, 0)
  161. ,[Payout_Currency] = rt.payoutCurr
  162. ,[Payout_Amount] = ROUND(SUM(rt.pAmt), 2, 0)
  163. ,[Payout_Country] = rt.pCountry
  164. '
  165. END +
  166. '
  167. FROM vwremitTran rt WITH(NOLOCK)
  168. LEFT JOIN ' + CASE WHEN @rptFor = 'Sender' THEN 'vwtranSenders' ELSE 'vwtranReceivers' END + ' ts WITH(NOLOCK) ON rt.id = ts.tranId
  169. WHERE 1 = 1 and rt.tranStatus <>''cancel'' AND rt.senderName IS NOT NULL
  170. '
  171. SET @table = @table + @globalFilter + '
  172. GROUP BY
  173. ts.membershipId
  174. ,' +
  175. CASE
  176. WHEN @rptFor = 'Sender'
  177. THEN
  178. 'rt.senderName
  179. ,ts.idType
  180. ,ts.idNumber
  181. ,ts.mobile
  182. ,ts.companyName'
  183. ELSE
  184. 'rt.receiverName
  185. ,ts.mobile'
  186. END + '
  187. ,ts.nativeCountry
  188. '
  189. +
  190. CASE
  191. WHEN @rptFor = 'Sender' THEN
  192. ',rt.collCurr '
  193. ELSE '
  194. ,rt.collCurr
  195. ,rt.payoutCurr
  196. ,rt.pCountry
  197. '
  198. END
  199. DECLARE @srColumn AS VARCHAR(50)
  200. IF @rptFor = 'Sender'
  201. BEGIN
  202. SET @srColumn = 'Sender''''s'
  203. END
  204. ELSE
  205. BEGIN
  206. SET @srColumn = 'Receiver''''s'
  207. END
  208. SET @sql = 'SELECT '
  209. +
  210. '
  211. [SN] = ROW_NUMBER() OVER(ORDER BY ' +
  212. CASE
  213. WHEN @rptFor = 'Sender' THEN
  214. CASE WHEN @rptBy = 'Amount' THEN '[Collection_USD AMT] DESC, [Number of TXN] DESC' ELSE '[Number of TXN] DESC, [Collection_USD AMT] DESC' END
  215. WHEN @rptFor = 'Receiver' THEN
  216. CASE WHEN @rptBy = 'Amount' THEN '[Payout_USD AMT] DESC, [Number of TXN] DESC' ELSE '[Number of TXN] DESC, [Payout_USD AMT] DESC' END
  217. END
  218. + ' )
  219. '
  220. +
  221. CASE WHEN @rptFor = 'Sender' THEN
  222. REPLACE('
  223. ,[Membership ID] [@Mobile No]
  224. ,[Name] [@Name]
  225. ,[Nationality] [@Nationality]
  226. ,[Id type] [@Id type]
  227. ,[ID Number] [@ID Number]
  228. ,[Company] [@Company]
  229. ,[Number of TXN]' ,'@' ,'Sender''s_')
  230. ELSE
  231. REPLACE('
  232. ,[Membership ID] [@Mobile No]
  233. ,[Name] [@Name]
  234. ,[Nationality] [@Nationality]
  235. ,[Number of TXN]' ,'@' ,'Receiver''s_')
  236. END
  237. +
  238. CASE
  239. WHEN @rptFor = 'Sender'
  240. THEN '
  241. ,[Collection_USD AMT]
  242. ,[Collection_Currency]
  243. ,[Collection_Amount]
  244. '
  245. ELSE
  246. '
  247. ,[Payout_USD AMT]
  248. ,[Payout_Currency]
  249. ,[Payout_Amount]
  250. ,[Payout_Country]
  251. '
  252. END
  253. +
  254. '
  255. FROM (' + @table + ') x '
  256. IF @rptBy IS NOT NULL
  257. BEGIN
  258. INSERT @FilterList
  259. SELECT 'Report By', @rptBy
  260. END
  261. IF @rptFor IS NOT NULL
  262. BEGIN
  263. INSERT @FilterList
  264. SELECT 'Report For', @rptFor
  265. END
  266. IF @tcNo IS NOT NULL
  267. BEGIN
  268. INSERT @FilterList
  269. SELECT 'TOP No', @tcNo
  270. END
  271. --PRINT ('SELECT * FROM (' + @sql + ') x WHERE [SN] <= ' + @tcNo ) return
  272. EXEC ('SELECT * FROM (' + @sql + ') x WHERE [SN] <= ' + @tcNo )
  273. END
  274. EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
  275. SELECT * FROM @FilterList
  276. SELECT 'AML Reports : '+@reportHead title
  277. END TRY
  278. BEGIN CATCH
  279. IF @@TRANCOUNT > 0
  280. ROLLBACK TRANSACTION
  281. DECLARE @errorMessage VARCHAR(MAX)
  282. SET @errorMessage = ERROR_MESSAGE()
  283. EXEC proc_errorHandler 1, @errorMessage ,NULL
  284. END CATCH
  285. GO