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.

353 lines
32 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_tranAnalysisIntlRegional] 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 procEDURE [dbo].[proc_tranAnalysisIntlRegional]
  9. @flag VARCHAR(20),
  10. @dateType VARCHAR(5) = NULL,
  11. @fromDate VARCHAR(20) = NULL,
  12. @fromTime VARCHAR(20) = NULL,
  13. @toDate VARCHAR(30) = NULL,
  14. @toTime VARCHAR(20) = NULL,
  15. @remitProduct VARCHAR(1) = NULL,
  16. @sAgentGrp VARCHAR(10) = NULL,
  17. @sCountry VARCHAR(50) = NULL,
  18. @sZone VARCHAR(50) = NULL,
  19. @sDistrict VARCHAR(50) = NULL,
  20. @sLocation VARCHAR(50) = NULL,
  21. @sAgent VARCHAR(50) = NULL,
  22. @sBranch VARCHAR(50) = NULL,
  23. @rAgentGrp VARCHAR(10) = NULL,
  24. @rCountry VARCHAR(50) = NULL,
  25. @rZone VARCHAR(50) = NULL,
  26. @rDistrict VARCHAR(50) = NULL,
  27. @rLocation VARCHAR(50) = NULL,
  28. @rAgent VARCHAR(50) = NULL,
  29. @rBranch VARCHAR(50) = NULL,
  30. @groupBy VARCHAR(50) = NULL,
  31. @id VARCHAR(50) = NULL,
  32. @reportType VARCHAR(50) = NULL,
  33. @pageSize VARCHAR(50) = NULL,
  34. @pageNumber VARCHAR(50) = NULL,
  35. @groupById VARCHAR(200)= NULL,
  36. @isExportFull VARCHAR(1) = NULL,
  37. @user VARCHAR(50) = NULL
  38. AS
  39. SET NOCOUNT ON;
  40. SET ANSI_NULLS ON;
  41. DECLARE @DateCondition VARCHAR(50),
  42. @GroupCondition VARCHAR(50),
  43. @ReportTypeCond VARCHAR(50),
  44. @SQL VARCHAR(MAX),
  45. @SQL1 VARCHAR(MAX),
  46. @GroupSelect VARCHAR(50),
  47. @GroupId VARCHAR(50),
  48. @Amt VARCHAR(50),
  49. @Date VARCHAR(50),
  50. @globalFilter VARCHAR(MAX)
  51. SET @fromDate=@fromDate+' '+@fromTime
  52. SET @toDate= @toDate+' '+@toTime
  53. SELECT @DateCondition = CASE WHEN @dateType = 's' THEN 'approvedDate'
  54. WHEN @dateType = 'p' THEN 'paidDate' END
  55. SELECT @GroupCondition = CASE
  56. WHEN @dateType='s' AND @groupBy = 'c' THEN 'sCountry'
  57. WHEN @dateType='s' AND @groupBy = 'z' THEN 'SBRANCH.agentState'
  58. WHEN @dateType='s' AND @groupBy = 'd' THEN 'SBRANCH.agentDistrict'
  59. WHEN @dateType='s' AND @groupBy = 'l' THEN 'SLOC.districtName'
  60. WHEN @dateType='s' AND @groupBy = 'a' THEN 'sAgentName'
  61. WHEN @dateType='s' AND @groupBy = 'b' THEN 'sBranchName'
  62. WHEN @dateType='p' AND @groupBy = 'c' THEN 'pCountry'
  63. WHEN @dateType='p' AND @groupBy = 'z' THEN 'pbranch.agentState'
  64. WHEN @dateType='p' AND @groupBy = 'd' THEN 'pbranch.agentDistrict'
  65. WHEN @dateType='p' AND @groupBy = 'l' THEN 'PLOC.locationName'
  66. WHEN @dateType='p' AND @groupBy = 'a' THEN 'pAgentName'
  67. WHEN @dateType='p' AND @groupBy = 'b' THEN 'pBranchName'
  68. WHEN @groupBy = 'datewise' THEN 'CONVERT(VARCHAR,MAIN.'+@DateCondition+' ,101)'
  69. END
  70. ,@Amt = CASE WHEN @dateType='s' AND @groupBy IN ('c','a','b','z','d','l','datewise') THEN 'tAmt'
  71. WHEN @dateType='p' AND @groupBy IN ('c','a','b','z','d','l','datewise') THEN 'pAmt' END
  72. ,@GroupSelect = CASE
  73. WHEN @dateType='s' AND @groupBy = 'c' THEN 'Sending Country'
  74. WHEN @dateType='s' AND @groupBy = 'z' THEN 'Sending Zone'
  75. WHEN @dateType='s' AND @groupBy = 'd' THEN 'Sending District'
  76. WHEN @dateType='s' AND @groupBy = 'l' THEN 'Sending Location'
  77. WHEN @dateType='s' AND @groupBy = 'a' THEN 'Sending Agent'
  78. WHEN @dateType='s' AND @groupBy = 'b' THEN 'Sending Branch'
  79. WHEN @dateType='p' AND @groupBy = 'c' THEN 'Receiving Country'
  80. WHEN @dateType='p' AND @groupBy = 'z' THEN 'Receiving Zone'
  81. WHEN @dateType='p' AND @groupBy = 'd' THEN 'Receiving District'
  82. WHEN @dateType='p' AND @groupBy = 'l' THEN 'Receiving Location'
  83. WHEN @dateType='p' AND @groupBy = 'a' THEN 'Receiving Agent'
  84. WHEN @dateType='p' AND @groupBy = 'b' THEN 'Receiving Branch'
  85. WHEN @groupBy = 'datewise' THEN CASE WHEN @dateType = 's' THEN 'Send Date'
  86. WHEN @dateType = 'p' THEN 'Paid Date' END
  87. WHEN @groupBy = 'detail' THEN CASE WHEN @dateType = 's' THEN 'Send Date'
  88. WHEN @dateType = 'p' THEN 'Paid Date' END
  89. END
  90. ,@GroupId = CASE
  91. WHEN @dateType='s' AND @groupBy = 'c' THEN 'sCountry'
  92. WHEN @dateType='s' AND @groupBy = 'z' THEN 'SBRANCH.agentState'
  93. WHEN @dateType='s' AND @groupBy = 'd' THEN 'SBRANCH.agentDistrict'
  94. WHEN @dateType='s' AND @groupBy = 'l' THEN 'SLOC.districtName'
  95. WHEN @dateType='s' AND @groupBy = 'a' THEN 'sAgent'
  96. WHEN @dateType='s' AND @groupBy = 'b' THEN 'sBranch'
  97. WHEN @dateType='p' AND @groupBy = 'c' THEN 'pCountry'
  98. WHEN @dateType='p' AND @groupBy = 'z' THEN 'pbranch.agentState'
  99. WHEN @dateType='p' AND @groupBy = 'd' THEN 'pbranch.agentDistrict'
  100. WHEN @dateType='p' AND @groupBy = 'l' THEN 'PLOC.locationName'
  101. WHEN @dateType='p' AND @groupBy = 'a' THEN 'pAgent'
  102. WHEN @dateType='p' AND @groupBy = 'b' THEN 'pBranch'
  103. WHEN @groupBy = 'datewise' THEN 'CONVERT(VARCHAR,MAIN.'+@DateCondition+' ,101)'
  104. END
  105. ,@ReportTypeCond = CASE
  106. WHEN @dateType='s' AND @groupBy = 'c' THEN 'sCountry'
  107. WHEN @dateType='s' AND @groupBy = 'z' THEN 'SBRANCH.agentState'
  108. WHEN @dateType='s' AND @groupBy = 'd' THEN 'SBRANCH.agentDistrict'
  109. WHEN @dateType='s' AND @groupBy = 'l' THEN 'SBRANCH.agentLocation'
  110. WHEN @dateType='s' AND @groupBy = 'a' THEN 'sAgent'
  111. WHEN @dateType='s' AND @groupBy = 'b' THEN 'sBranch'
  112. WHEN @dateType='p' AND @groupBy = 'c' THEN 'pCountry'
  113. WHEN @dateType='p' AND @groupBy = 'z' THEN 'pbranch.agentState'
  114. WHEN @dateType='p' AND @groupBy = 'd' THEN 'pbranch.agentDistrict'
  115. WHEN @dateType='p' AND @groupBy = 'l' THEN 'MAIN.pLocation'
  116. WHEN @dateType='p' AND @groupBy = 'a' THEN 'pAgent'
  117. WHEN @dateType='p' AND @groupBy = 'b' THEN 'pBranch'
  118. WHEN @dateType='p' AND @groupBy = 'datewise' THEN 'CONVERT(VARCHAR,MAIN.'+@DateCondition+' ,101)'
  119. END
  120. IF @groupById IS NOT NULL OR @groupById<>''
  121. BEGIN
  122. IF @groupBy='z' AND @dateType='s'
  123. SET @sZone = @groupById
  124. IF @groupBy='d' AND @dateType='s'
  125. SET @sDistrict = @groupById
  126. IF @groupBy='l' AND @dateType='s'
  127. SET @sLocation = @groupById
  128. IF @groupBy = 'a' AND @dateType='s'
  129. SET @sAgent = @groupById
  130. IF @groupBy='b' AND @dateType='s'
  131. SET @sBranch=@groupById
  132. IF @groupBy='z' AND @dateType='p'
  133. SET @rZone = @groupById
  134. IF @groupBy='d' AND @dateType='p'
  135. SET @rDistrict = @groupById
  136. IF @groupBy='l' AND @dateType='p'
  137. SET @rLocation=@groupById
  138. IF @groupBy='a' AND @dateType='p'
  139. SET @rAgent=@groupById
  140. IF @groupBy='b' AND @dateType='p'
  141. SET @rBranch=@groupById
  142. IF @groupBy='datewise'
  143. SET @Date=@groupById
  144. SET @groupBy='detail'
  145. SET @FLAG='main'
  146. SET @GroupSelect=
  147. CASE WHEN @dateType = 's' THEN 'Send Date'
  148. WHEN @dateType = 'p' THEN 'Paid Date' END
  149. END
  150. SET @globalFilter = ''
  151. IF @remitProduct = 'S'
  152. SET @globalFilter = @globalFilter + ' AND MAIN.tranType = ''D'' and TREC.stdCollegeId is null'
  153. IF @remitProduct = 'T'
  154. SET @globalFilter = @globalFilter + ' AND MAIN.tranType = ''B'''
  155. IF @remitProduct = 'E'
  156. SET @globalFilter = @globalFilter + ' AND MAIN.tranType = ''D'' and TREC.stdCollegeId is not null'
  157. IF @sAgent IS NOT NULL
  158. SET @globalFilter = @globalFilter + ' AND sAgent = ''' + @sAgent + ''''
  159. IF @sBranch IS NOT NULL
  160. SET @globalFilter = @globalFilter + ' AND sBranch = '''+ @sBranch +''''
  161. IF @rAgent IS NOT NULL
  162. SET @globalFilter = @globalFilter + ' AND pAgent = ''' + @rAgent + ''''
  163. IF @rBranch IS NOT NULL
  164. SET @globalFilter = @globalFilter + 'AND pBranch = '''+ @rBranch +''''
  165. IF @sLocation IS NOT NULL
  166. SET @globalFilter = @globalFilter + 'AND SBRANCH.agentLocation = '''+ @sLocation +''''
  167. IF @rLocation IS NOT NULL
  168. SET @globalFilter = @globalFilter + 'AND pLocation = '''+ @rLocation +''''
  169. IF @sZone IS NOT NULL
  170. SET @globalFilter = @globalFilter + 'AND SBRANCH.agentState = '''+ @sZone +''''
  171. IF @rZone IS NOT NULL
  172. SET @globalFilter = @globalFilter + 'AND pbranch.agentState = '''+ @rZone +''''
  173. IF @sDistrict IS NOT NULL
  174. SET @globalFilter = @globalFilter + 'AND SBRANCH.agentDistrict = '''+ @sDistrict +''''
  175. IF @rDistrict IS NOT NULL
  176. SET @globalFilter = @globalFilter + 'AND pbranch.agentDistrict = '''+ @rDistrict +''''
  177. IF @sAgentGrp IS NOT NULL
  178. SET @globalFilter =@globalFilter+ ' AND SBRANCH.agentGrp = ''' + @sAgentGrp + ''''
  179. IF @rAgentGrp IS NOT NULL
  180. SET @globalFilter =@globalFilter+ ' AND PBRANCH.agentGrp = ''' + @rAgentGrp + ''''
  181. IF @Date IS NOT NULL
  182. SET @globalFilter = @globalFilter + 'AND convert(varchar,MAIN.'+ @DATECONDITION +',101) = convert(varchar,'''+ @Date +''',101)'
  183. IF @user IS NOT NULL AND @dateType ='p'
  184. SET @globalFilter =@globalFilter+ ' AND pzm.userName = ''' + @user + ''' and pzm.isDeleted is null '
  185. IF @FLAG = 'main' AND @groupBy = 'detail'
  186. BEGIN
  187. SET @SQL ='SELECT
  188. [Control No] =''<a href = "#" onclick="OpenInNewWindow('''''+dbo.FNAGetURL()+'Remit/Transaction/Reports/SearchTransaction.aspx?commentFlag=N&showBankDetail=N&tranId=''+CAST(main.id AS VARCHAR)+'''''')">''+dbo.FNADecryptString(controlNo)+''</a>''
  189. ,['+ @GroupSelect +'] = CONVERT(VARCHAR,MAIN.'+ @DATECONDITION +',101)
  190. ,[Sending Country] = sCountry
  191. ,[Sending Location] = SLOC.districtName
  192. ,[Sending Agent] = sAgentName
  193. ,[Sending Branch] = sBranchName
  194. ,[Sending Amt] = tAmt
  195. ,[Sending Currency] = collCurr
  196. ,[Status] = MAIN.tranStatus
  197. ,[Receiving Country] = ISNULL(pCountry,''-'')
  198. ,[Receiving Location] = PLOC.locationName
  199. ,[Receiving Agent] = ISNULL(pAgentName,''-'')
  200. ,[Receiving Branch] = ISNULL(pBranchName,''-'')
  201. ,[Receiving Amt] = pAmt
  202. ,[Receiving Currency] = payoutCurr
  203. ,[Tran Type] = MAIN.paymentMethod
  204. ,[Sender Name]=TSEND.firstName + ISNULL('' '' + TSEND.middleName, '''') + ISNULL('' '' + TSEND.lastName1, '''') + ISNULL('' '' + TSEND.lastName2,'''')
  205. ,[Receiver Name]=TREC.firstName + ISNULL('' '' + TREC.middleName, '''') + ISNULL('' '' + TREC.lastName1, '''') + ISNULL('' '' + TREC.lastName2, '''')
  206. ,[Receiver Id Type] = isnull(TREC.idType2, TREC.idType)
  207. ,[Receiver Id Number] = isnull(TREC.idNumber2, TREC.idNumber)
  208. FROM remitTran MAIN WITH(NOLOCK)
  209. INNER JOIN agentMaster PBRANCH WITH(NOLOCK) ON PBRANCH.agentId=MAIN.pBranch
  210. INNER JOIN userZoneMapping pzm with(nolock) on pbranch.agentState = pzm.zoneName
  211. LEFT JOIN agentMaster SBRANCH WITH(NOLOCK) ON SBRANCH.agentId=MAIN.sBranch
  212. LEFT JOIN api_districtList SLOC WITH(NOLOCK) ON SLOC.districtCode=SBRANCH.agentLocation
  213. LEFT JOIN vwZoneDistrictLocation PLOC WITH(NOLOCK) ON PLOC.locationId=MAIN.pLocation
  214. LEFT JOIN tranSenders TSEND WITH(NOLOCK) ON MAIN.id=TSEND.tranId
  215. LEFT JOIN tranReceivers TREC WITH(NOLOCK) ON MAIN.id=TREC.tranId
  216. WHERE ISNULL(MAIN.sCountry,'''')<>''Nepal'' AND
  217. MAIN.'+ @DATECONDITION +' BETWEEN '''+ @FROMDATE +''' AND '''+ @TODATE +''''
  218. SET @SQL = @SQL + @globalFilter
  219. END
  220. IF @FLAG = 'datewise'
  221. BEGIN
  222. SET @SQL = 'SELECT
  223. '+@ReportTypeCond+' [groupBy]
  224. ,'+ @GroupCondition +' ['+ @GroupSelect +']
  225. ,COUNT(*) [Txn Count]
  226. ,SUM('+@Amt+') [Txn Amount]
  227. FROM remitTran MAIN WITH(NOLOCK)
  228. INNER JOIN agentMaster PBRANCH WITH(NOLOCK) ON PBRANCH.agentId=MAIN.pBranch
  229. INNER JOIN userZoneMapping pzm with(nolock) on pbranch.agentState = pzm.zoneName
  230. LEFT JOIN agentMaster SBRANCH WITH(NOLOCK) ON SBRANCH.agentId=MAIN.sBranch
  231. LEFT JOIN api_districtList SLOC WITH(NOLOCK) ON SLOC.districtCode=SBRANCH.agentLocation
  232. LEFT JOIN vwZoneDistrictLocation PLOC WITH(NOLOCK) ON PLOC.locationId=MAIN.pLocation
  233. LEFT JOIN tranSenders TSEND WITH(NOLOCK) ON MAIN.id=TSEND.tranId
  234. LEFT JOIN tranReceivers TREC WITH(NOLOCK) ON MAIN.id=TREC.tranId
  235. WHERE ISNULL(MAIN.sCountry,'''')<>''Nepal'' and
  236. MAIN.'+ @DATECONDITION +' BETWEEN '''+ @FROMDATE +''' AND '''+ @TODATE +''''
  237. SET @SQL = @SQL + @globalFilter
  238. SET @SQL = @SQL + ' GROUP BY '+ @GroupCondition +''
  239. END
  240. IF @FLAG = 'main' AND @groupBy <>'detail'
  241. BEGIN
  242. SET @SQL = 'SELECT
  243. '+@ReportTypeCond+' [groupBy]
  244. ,['+ @GroupSelect +'] ='+ @GroupCondition +'
  245. ,COUNT(*) [Txn Count]
  246. ,SUM('+@Amt+') [Txn Amount]
  247. FROM remitTran MAIN WITH(NOLOCK)
  248. INNER JOIN agentMaster PBRANCH WITH(NOLOCK) ON PBRANCH.agentId=MAIN.pBranch
  249. INNER JOIN userZoneMapping pzm with(nolock) on pbranch.agentState = pzm.zoneName
  250. LEFT JOIN agentMaster SBRANCH WITH(NOLOCK) ON SBRANCH.agentId=MAIN.sBranch
  251. LEFT JOIN api_districtList SLOC WITH(NOLOCK) ON SLOC.districtCode=SBRANCH.agentLocation
  252. LEFT JOIN vwZoneDistrictLocation PLOC WITH(NOLOCK) ON PLOC.locationId=MAIN.pLocation
  253. LEFT JOIN tranSenders TSEND WITH(NOLOCK) ON MAIN.id=TSEND.tranId
  254. LEFT JOIN tranReceivers TREC WITH(NOLOCK) ON MAIN.id=TREC.tranId
  255. WHERE ISNULL(MAIN.sCountry,'''')<>''Nepal'' AND
  256. MAIN.'+ @DATECONDITION +' BETWEEN '''+ @FROMDATE +''' AND '''+ @TODATE +''''
  257. SET @SQL = @SQL + @globalFilter
  258. SET @SQL = @SQL + ' GROUP BY '+ @GroupCondition +','+@ReportTypeCond+''
  259. PRINT(@SQL)
  260. END
  261. IF OBJECT_ID('tempdb..#temp_table') IS NOT NULL
  262. DROP TABLE #temp_table
  263. DECLARE @SQL2 AS VARCHAR(MAX)
  264. SET @SQL2='SELECT ROW_NUMBER() OVER (ORDER BY ['+@GroupSelect+']) AS [S.N.],*
  265. INTO #temp_table
  266. FROM
  267. (
  268. '+ @SQL +'
  269. ) AS aa ORDER BY ['+@GroupSelect+'] '
  270. IF @isExportFull = 'Y'
  271. BEGIN
  272. SET @SQL1=@SQL2+'; SELECT * FROM #temp_table'
  273. END
  274. ELSE
  275. BEGIN
  276. SET @SQL1=@SQL2+'; SELECT COUNT(''a'') AS TXNCOUNT,'+@pageSize+' PAGESIZE,'+@pageNumber+' PAGENUMBER FROM #temp_table;
  277. SELECT * FROM #temp_table WHERE [S.N.] BETWEEN (('+@pageNumber+' - 1) * '+@pageSize+' + 1) AND '+@pageNumber+' * '+@pageSize+''
  278. END
  279. PRINT(@SQL1)
  280. EXEC(@SQL1)
  281. EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
  282. SELECT 'GROUP BY' head ,@GroupSelect value
  283. UNION ALL
  284. SELECT 'DATE TYPE ' head,CASE WHEN @dateType = 'S' THEN 'Sending Date'
  285. WHEN @dateType = 'P' THEN 'Paid Date'
  286. WHEN @dateType = 'C' THEN 'Cancel Date' END value
  287. UNION ALL
  288. SELECT 'FROM DATE ' head, CONVERT(VARCHAR, @fromDate, 101) value
  289. UNION ALL
  290. SELECT 'TO DATE ' head, CONVERT(VARCHAR, @toDate, 101) value
  291. UNION ALL
  292. SELECT 'Remit Product ' head, (SELECT CASE WHEN @remitProduct ='S' THEN 'Normal Send'
  293. WHEN @remitProduct ='T' THEN 'Topup'
  294. WHEN @remitProduct ='E' THEN 'Edu Pay'
  295. ELSE 'All' END) value
  296. UNION ALL
  297. SELECT 'SENDING AGENT GROUP' head, CASE WHEN @sAgentGrp IS NULL THEN 'All' ELSE (SELECT detailTitle FROM staticdataValue WHERE valueId = @sAgentGrp) END
  298. UNION ALL
  299. SELECT 'SENDING COUNTRY' head,ISNULL(@sCountry,'All')
  300. UNION ALL
  301. SELECT 'SENDING ZONE ' head,ISNULL(@sZone,'All')
  302. UNION ALL
  303. SELECT 'SENDING DISTRICT ' head,ISNULL(@sDistrict,'All')
  304. UNION ALL
  305. SELECT 'SENDING LOCATION ' head,ISNULL((SELECT districtName FROM api_districtList WHERE districtCode=@sLocation),'All')
  306. UNION ALL
  307. SELECT 'SENDING AGENT ' head,ISNULL((SELECT agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @sAgent),'All')
  308. UNION ALL
  309. SELECT 'SENDING BRANCH ' head,ISNULL((SELECT agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @sBranch),'All')
  310. UNION ALL
  311. SELECT 'RECEIVING AGENT GROUP' head, CASE WHEN @rAgentGrp IS NULL THEN 'All' ELSE (SELECT detailTitle FROM staticdataValue WHERE valueId = @rAgentGrp) END
  312. UNION ALL
  313. SELECT 'RECEIVING COUNTRY ' head,ISNULL(@rCountry,'All')
  314. UNION ALL
  315. SELECT 'RECEIVING ZONE ' head,ISNULL(@rZone,'All')
  316. UNION ALL
  317. SELECT 'RECEIVING DISTRICT ' head,ISNULL(@rDistrict,'All')
  318. UNION ALL
  319. SELECT 'RECEIVING LOCATION ' head,ISNULL((SELECT districtName FROM api_districtList WHERE districtCode=@rLocation),'All')
  320. UNION ALL
  321. SELECT 'RECEIVING AGENT ' head,ISNULL((SELECT agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @rAgent),'All')
  322. UNION ALL
  323. SELECT 'RECEIVING BRANCH ' head,ISNULL((SELECT agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @rBranch),'All')
  324. SELECT 'TRANSACTION ANALYSIS REPORT- International ' title
  325. GO