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.

301 lines
17 KiB

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