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.

310 lines
17 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[ws_int_proc_ReconcileReportSMA] 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. IF EXISTS (SELECT 'x' FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ws_proc_ReconcileReport]') AND TYPE IN (N'P', N'PC'))
  10. DROP PROCEDURE [dbo].ws_proc_ReconcileReport
  11. GO
  12. */
  13. /*
  14. EXEC ws_int_proc_ReconcileReportSMA
  15. @AGENT_CODE='IMEARE01'
  16. ,@USER_ID='testapi'
  17. ,@PASSWORD='ime@12345'
  18. ,@AGENT_SESSION_ID='112121212'
  19. ,@REPORT_TYPE='A'
  20. ,@FROM_DATE='2011-07-17'
  21. ,@TO_DATE='2013-07-19'
  22. ,@SHOW_INCREMENTAL='N'
  23. */
  24. CREATE proc [dbo].[ws_int_proc_ReconcileReportSMA] (
  25. @AGENT_CODE VARCHAR(50),
  26. @USER_ID VARCHAR(50),
  27. @PASSWORD VARCHAR(50),
  28. @AGENT_SESSION_ID VARCHAR(150),
  29. @REPORT_TYPE CHAR(1),
  30. @FROM_DATE VARCHAR(50),
  31. @TO_DATE VARCHAR(50),
  32. @SHOW_INCREMENTAL CHAR(1)
  33. )
  34. AS
  35. SET NOCOUNT ON
  36. SET XACT_ABORT ON
  37. BEGIN TRY
  38. DECLARE @apiRequestId BIGINT
  39. INSERT INTO requestApiLogOther(
  40. AGENT_CODE
  41. ,USER_ID
  42. ,PASSWORD
  43. ,AGENT_SESSION_ID
  44. ,REPORT_TYPE
  45. ,FROM_DATE
  46. ,TO_DATE
  47. ,SHOW_INCREMENTAL
  48. ,METHOD_NAME
  49. ,REQUEST_DATE
  50. )
  51. SELECT
  52. @AGENT_CODE
  53. ,@USER_ID
  54. ,@PASSWORD
  55. ,@AGENT_SESSION_ID
  56. ,@REPORT_TYPE
  57. ,@FROM_DATE
  58. ,@TO_DATE
  59. ,@SHOW_INCREMENTAL
  60. ,'ws_int_proc_ReconcileReportSMA'
  61. ,GETDATE()
  62. SET @apiRequestId = SCOPE_IDENTITY()
  63. SET @TO_DATE = CONVERT(VARCHAR, CAST(@TO_DATE AS DATETIME), 101)
  64. DECLARE @errCode INT
  65. DECLARE @autMsg VARCHAR(500)
  66. EXEC ws_int_proc_checkAuthntication @USER_ID,@PASSWORD,@AGENT_CODE,@errCode OUT,@autMsg OUT
  67. DECLARE @errorTable TABLE(AGENT_NAME VARCHAR(100),AGENT_BRANCH VARCHAR(100),TRANSACTION_STATUS VARCHAR(20),PINNO VARCHAR(50),SENDER_NAME VARCHAR(100)
  68. ,RECEIVER_NAME VARCHAR(100),RECEIVER_COUNTRY VARCHAR(50),PAYOUT_AMT MONEY,PAYOUT_CCY VARCHAR(3),TRANSACTION_DATE DATETIME ,STATUS VARCHAR(30)
  69. ,PAID_DATE DATETIME,PAYOUT_AGENT VARCHAR(100),CANCEL_DATE DATETIME,AGENT_TXN_REF_ID VARCHAR(150))
  70. INSERT INTO @errorTable(AGENT_TXN_REF_ID) SELECT @AGENT_SESSION_ID
  71. IF (@errCode=1 )
  72. BEGIN
  73. SELECT 1002 CODE, ISNULL(@autMsg,'Authentication Fail') MESSAGE
  74. ,* FROM @errorTable
  75. RETURN
  76. END
  77. IF EXISTS(SELECT 'A' FROM applicationUsers WITH (NOLOCK) WHERE
  78. userName = @USER_ID AND forceChangePwd = 'Y')
  79. BEGIN
  80. SELECT 1002 CODE
  81. , 'You logged on first time,must first change your password and try again!' MESSAGE
  82. ,* FROM @errorTable
  83. RETURN
  84. END
  85. ------------------VALIDATION-------------------------------
  86. IF @AGENT_SESSION_ID IS NULL
  87. BEGIN
  88. SELECT 1001 CODE,'AGENT SESSION ID Field is Empty' MESSAGE
  89. ,* FROM @errorTable
  90. RETURN;
  91. END
  92. IF @REPORT_TYPE IS NULL
  93. BEGIN
  94. SELECT 1001 CODE,'REPORT TYPE Field is Empty' MESSAGE
  95. ,* FROM @errorTable
  96. RETURN;
  97. END
  98. IF @FROM_DATE IS NULL
  99. BEGIN
  100. SELECT 1001 CODE,'FROM DATE Field is Empty' MESSAGE
  101. ,* FROM @errorTable
  102. RETURN;
  103. END
  104. IF ISDATE(@FROM_DATE) = 0 AND @FROM_DATE IS NOT NULL
  105. BEGIN
  106. SELECT 9001 CODE
  107. ,'Technical Error: FROM DATE must be date' MESSAGE
  108. ,* FROM @errorTable
  109. RETURN;
  110. END
  111. IF @TO_DATE IS NULL
  112. BEGIN
  113. SELECT 1001 CODE,'TO DATE Field is Empty' MESSAGE
  114. ,* FROM @errorTable
  115. RETURN;
  116. END
  117. IF ISDATE(@TO_DATE) = 0 AND @TO_DATE IS NOT NULL
  118. BEGIN
  119. SELECT 9001 CODE
  120. ,'Technical Error: TO DATE must be date' MESSAGE
  121. ,* FROM @errorTable
  122. RETURN;
  123. END
  124. IF @REPORT_TYPE NOT IN ('A','S','P','C','U')
  125. BEGIN
  126. SELECT 1004 CODE,'Invalid Parameter' MESSAGE
  127. ,* FROM @errorTable
  128. RETURN;
  129. END
  130. DECLARE @dateType VARCHAR(30),@SQL VARCHAR(MAX)
  131. DECLARE @sCountryId INT,
  132. @sAgent INT,
  133. @sBranch INT
  134. -- PICK AGENTID ,COUNTRY FROM USER
  135. SELECT @sCountryId=countryId,
  136. @sBranch = agentId
  137. FROM applicationUsers WHERE userName=@USER_ID
  138. SELECT @sAgent = parentId FROM agentMaster WHERE agentId = @sBranch AND ISNULL(isActive,'Y')='Y'
  139. SET @dateType = CASE WHEN @REPORT_TYPE IN ('A','S','U') THEN 'RT.createdDate'
  140. WHEN @REPORT_TYPE='P' THEN 'RT.paidDate'
  141. WHEN @REPORT_TYPE='C' THEN 'RT.cancelApprovedDate' END
  142. CREATE TABLE #outputList (
  143. ID BIGINT
  144. ,CODE VARCHAR(20)
  145. ,[MESSAGE] VARCHAR(200)
  146. ,AGENT_TXN_REF_ID VARCHAR(50)
  147. ,AGENT_NAME VARCHAR(200)
  148. ,AGENT_BRANCH VARCHAR(200)
  149. ,TRANSACTION_STATUS VARCHAR(50)
  150. ,PINNO VARCHAR(50)
  151. ,SENDER_NAME VARCHAR(200)
  152. ,RECEIVER_NAME VARCHAR(200)
  153. ,RECEIVER_COUNTRY VARCHAR(200)
  154. ,PAYOUT_AMT MONEY
  155. ,PAYOUT_CCY VARCHAR(20)
  156. ,TRANSACTION_DATE DATETIME
  157. ,[STATUS] VARCHAR(50)
  158. ,PAID_DATE DATETIME
  159. ,PAYOUT_AGENT VARCHAR(200)
  160. ,CANCEL_DATE DATETIME
  161. ,isCancelled CHAR(1)
  162. )
  163. SET @SQL =' SELECT * FROM (
  164. SELECT
  165. ID = rt.Id,
  166. CODE = 0 ,
  167. MESSAGE = ''Success'',
  168. AGENT_TXN_REF_ID = dbo.FNADecryptString(controlNo2),
  169. AGENT_NAME = sAgentName,
  170. AGENT_BRANCH = sBranchName ,
  171. TRANSACTION_STATUS = CASE WHEN tranStatus=''Hold'' THEN ''Send'' ELSE tranStatus END,
  172. PINNO = DBO.FNADecryptString(controlNo) ,
  173. SENDER_NAME = RT.senderName ,
  174. RECEIVER_NAME = RT.receiverName,
  175. RECEIVER_COUNTRY = TR.country,
  176. PAYOUT_AMT = pAmt,
  177. PAYOUT_CCY = payoutCurr,
  178. TRANSACTION_DATE = createdDate,
  179. STATUS = CASE WHEN tranStatus=''Payment'' THEN ''Un-Paid'' ELSE tranStatus END,
  180. PAID_DATE = paidDateLocal,
  181. PAYOUT_AGENT = pAgentName,
  182. CANCEL_DATE = cancelApprovedDate,
  183. isCancelled = ''N''
  184. FROM remitTran RT WITH (NOLOCK)
  185. INNER JOIN tranReceivers TR WITH (NOLOCK) ON RT.id = TR.tranId
  186. WHERE '+@dateType+' BETWEEN '''+@FROM_DATE+''' AND '''+@TO_DATE+' 23:59:59''
  187. AND RT.sBranch = '''+CAST(@sBranch AS VARCHAR)+'''' +
  188. CASE WHEN @SHOW_INCREMENTAL = 'Y' THEN ' AND (RT.incrRpt IS NULL OR RT.incrRpt = ''N'')' ELSE '' END
  189. IF @REPORT_TYPE = 'S'
  190. SET @SQL = @SQL +' AND RT.cancelApprovedDate IS NULL '
  191. IF @REPORT_TYPE = 'U'
  192. SET @SQL = @SQL +' AND RT.paystatus =''Unpaid'' AND RT.cancelApprovedDate IS NULL '
  193. IF @REPORT_TYPE IN ('A','C')
  194. BEGIN
  195. -------------------------for cancel txn
  196. SET @SQL = @SQL + ' UNION ALL
  197. SELECT
  198. ID = rt.Id,
  199. CODE = 0 ,
  200. MESSAGE = ''Success'' ,
  201. AGENT_TXN_REF_ID = dbo.FNADecryptString(controlNo2),
  202. AGENT_NAME = sAgentName,
  203. AGENT_BRANCH = sBranchName ,
  204. TRANSACTION_STATUS = CASE WHEN tranStatus=''Hold'' THEN ''Send'' ELSE tranStatus END ,
  205. PINNO = DBO.FNADecryptString(controlNo) ,
  206. SENDER_NAME = RT.senderName ,
  207. RECEIVER_NAME = RT.receiverName,
  208. RECEIVER_COUNTRY = TR.country,
  209. PAYOUT_AMT = pAmt ,
  210. PAYOUT_CCY = payoutCurr ,
  211. TRANSACTION_DATE = createdDate,
  212. STATUS = CASE WHEN tranStatus=''Payment'' THEN ''Un-Paid'' ELSE tranStatus END,
  213. PAID_DATE = paidDateLocal ,
  214. PAYOUT_AGENT = pAgentName,
  215. CANCEL_DATE = cancelApprovedDate,
  216. isCancelled = ''Y''
  217. FROM cancelTranHistory RT WITH (NOLOCK)
  218. INNER JOIN tranReceivers TR WITH (NOLOCK) ON RT.id = TR.tranId
  219. WHERE '+@dateType+' BETWEEN '''+@FROM_DATE+''' AND '''+@TO_DATE+' 23:59:59''
  220. AND RT.sBranch = '''+CAST(@sBranch AS VARCHAR)+''''
  221. + CASE WHEN @SHOW_INCREMENTAL = 'Y' THEN ' AND (RT.incrRpt IS NULL OR RT.incrRpt = ''N'')' ELSE '' END
  222. END
  223. SET @SQL = @SQL +' ) X '
  224. IF @REPORT_TYPE IN('A','P') AND @SHOW_INCREMENTAL = 'Y'
  225. SET @SQL = @SQL +' ORDER BY X.TRANSACTION_DATE '
  226. PRINT @SQL
  227. INSERT INTO #outputList
  228. EXEC(@SQL)
  229. IF NOT EXISTS(SELECT 'x' FROM #outputList)
  230. BEGIN
  231. INSERT #outputList(CODE, [MESSAGE], AGENT_TXN_REF_ID)
  232. SELECT '3013', 'NO Record Found', @AGENT_SESSION_ID
  233. END
  234. ELSE
  235. BEGIN
  236. UPDATE r SET
  237. r.incrRpt = 'Y'
  238. FROM remitTran r
  239. INNER JOIN #outputList ol ON r.id = ol.id AND ol.isCancelled = 'N'
  240. UPDATE r SET
  241. r.incrRpt = 'Y'
  242. FROM cancelTranHistory r
  243. INNER JOIN #outputList ol ON r.id = ol.id AND ol.isCancelled = 'Y'
  244. END
  245. SELECT * FROM #outputList
  246. UPDATE requestApiLogOther SET
  247. errorCode = '0'
  248. ,errorMsg = 'Success'
  249. WHERE rowId = @apiRequestId
  250. END TRY
  251. BEGIN CATCH
  252. IF @@TRANCOUNT > 0
  253. ROLLBACK TRAN
  254. SELECT '9001' CODE, 'Technical Error : ' + ERROR_MESSAGE() MESSAGE, * FROM @errorTable
  255. INSERT INTO Logs (errorPage, errorMsg, errorDetails, createdBy, createdDate)
  256. SELECT 'API SP Error', 'Technical Error : ' + ERROR_MESSAGE() MESSAGE, 'ws_int_proc_ReconcileReportSMA', @USER_ID, GETDATE()
  257. END CATCH
  258. GO