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.

320 lines
9.3 KiB

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