USE [FastMoneyPro_Remit] GO /****** Object: StoredProcedure [dbo].[ws_int_proc_ReconcileReportSMA] Script Date: 9/27/2019 1:30:14 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /* IF EXISTS (SELECT 'x' FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ws_proc_ReconcileReport]') AND TYPE IN (N'P', N'PC')) DROP PROCEDURE [dbo].ws_proc_ReconcileReport GO */ /* EXEC ws_int_proc_ReconcileReportSMA @AGENT_CODE='IMEARE01' ,@USER_ID='testapi' ,@PASSWORD='ime@12345' ,@AGENT_SESSION_ID='112121212' ,@REPORT_TYPE='A' ,@FROM_DATE='2011-07-17' ,@TO_DATE='2013-07-19' ,@SHOW_INCREMENTAL='N' */ CREATE proc [dbo].[ws_int_proc_ReconcileReportSMA] ( @AGENT_CODE VARCHAR(50), @USER_ID VARCHAR(50), @PASSWORD VARCHAR(50), @AGENT_SESSION_ID VARCHAR(150), @REPORT_TYPE CHAR(1), @FROM_DATE VARCHAR(50), @TO_DATE VARCHAR(50), @SHOW_INCREMENTAL CHAR(1) ) AS SET NOCOUNT ON SET XACT_ABORT ON BEGIN TRY DECLARE @apiRequestId BIGINT INSERT INTO requestApiLogOther( AGENT_CODE ,USER_ID ,PASSWORD ,AGENT_SESSION_ID ,REPORT_TYPE ,FROM_DATE ,TO_DATE ,SHOW_INCREMENTAL ,METHOD_NAME ,REQUEST_DATE ) SELECT @AGENT_CODE ,@USER_ID ,@PASSWORD ,@AGENT_SESSION_ID ,@REPORT_TYPE ,@FROM_DATE ,@TO_DATE ,@SHOW_INCREMENTAL ,'ws_int_proc_ReconcileReportSMA' ,GETDATE() SET @apiRequestId = SCOPE_IDENTITY() SET @TO_DATE = CONVERT(VARCHAR, CAST(@TO_DATE AS DATETIME), 101) DECLARE @errCode INT DECLARE @autMsg VARCHAR(500) EXEC ws_int_proc_checkAuthntication @USER_ID,@PASSWORD,@AGENT_CODE,@errCode OUT,@autMsg OUT DECLARE @errorTable TABLE(AGENT_NAME VARCHAR(100),AGENT_BRANCH VARCHAR(100),TRANSACTION_STATUS VARCHAR(20),PINNO VARCHAR(50),SENDER_NAME VARCHAR(100) ,RECEIVER_NAME VARCHAR(100),RECEIVER_COUNTRY VARCHAR(50),PAYOUT_AMT MONEY,PAYOUT_CCY VARCHAR(3),TRANSACTION_DATE DATETIME ,STATUS VARCHAR(30) ,PAID_DATE DATETIME,PAYOUT_AGENT VARCHAR(100),CANCEL_DATE DATETIME,AGENT_TXN_REF_ID VARCHAR(150)) INSERT INTO @errorTable(AGENT_TXN_REF_ID) SELECT @AGENT_SESSION_ID IF (@errCode=1 ) BEGIN SELECT 1002 CODE, ISNULL(@autMsg,'Authentication Fail') MESSAGE ,* FROM @errorTable RETURN END IF EXISTS(SELECT 'A' FROM applicationUsers WITH (NOLOCK) WHERE userName = @USER_ID AND forceChangePwd = 'Y') BEGIN SELECT 1002 CODE , 'You logged on first time,must first change your password and try again!' MESSAGE ,* FROM @errorTable RETURN END ------------------VALIDATION------------------------------- IF @AGENT_SESSION_ID IS NULL BEGIN SELECT 1001 CODE,'AGENT SESSION ID Field is Empty' MESSAGE ,* FROM @errorTable RETURN; END IF @REPORT_TYPE IS NULL BEGIN SELECT 1001 CODE,'REPORT TYPE Field is Empty' MESSAGE ,* FROM @errorTable RETURN; END IF @FROM_DATE IS NULL BEGIN SELECT 1001 CODE,'FROM DATE Field is Empty' MESSAGE ,* FROM @errorTable RETURN; END IF ISDATE(@FROM_DATE) = 0 AND @FROM_DATE IS NOT NULL BEGIN SELECT 9001 CODE ,'Technical Error: FROM DATE must be date' MESSAGE ,* FROM @errorTable RETURN; END IF @TO_DATE IS NULL BEGIN SELECT 1001 CODE,'TO DATE Field is Empty' MESSAGE ,* FROM @errorTable RETURN; END IF ISDATE(@TO_DATE) = 0 AND @TO_DATE IS NOT NULL BEGIN SELECT 9001 CODE ,'Technical Error: TO DATE must be date' MESSAGE ,* FROM @errorTable RETURN; END IF @REPORT_TYPE NOT IN ('A','S','P','C','U') BEGIN SELECT 1004 CODE,'Invalid Parameter' MESSAGE ,* FROM @errorTable RETURN; END DECLARE @dateType VARCHAR(30),@SQL VARCHAR(MAX) DECLARE @sCountryId INT, @sAgent INT, @sBranch INT -- PICK AGENTID ,COUNTRY FROM USER SELECT @sCountryId=countryId, @sBranch = agentId FROM applicationUsers WHERE userName=@USER_ID SELECT @sAgent = parentId FROM agentMaster WHERE agentId = @sBranch AND ISNULL(isActive,'Y')='Y' SET @dateType = CASE WHEN @REPORT_TYPE IN ('A','S','U') THEN 'RT.createdDate' WHEN @REPORT_TYPE='P' THEN 'RT.paidDate' WHEN @REPORT_TYPE='C' THEN 'RT.cancelApprovedDate' END CREATE TABLE #outputList ( ID BIGINT ,CODE VARCHAR(20) ,[MESSAGE] VARCHAR(200) ,AGENT_TXN_REF_ID VARCHAR(50) ,AGENT_NAME VARCHAR(200) ,AGENT_BRANCH VARCHAR(200) ,TRANSACTION_STATUS VARCHAR(50) ,PINNO VARCHAR(50) ,SENDER_NAME VARCHAR(200) ,RECEIVER_NAME VARCHAR(200) ,RECEIVER_COUNTRY VARCHAR(200) ,PAYOUT_AMT MONEY ,PAYOUT_CCY VARCHAR(20) ,TRANSACTION_DATE DATETIME ,[STATUS] VARCHAR(50) ,PAID_DATE DATETIME ,PAYOUT_AGENT VARCHAR(200) ,CANCEL_DATE DATETIME ,isCancelled CHAR(1) ) SET @SQL =' SELECT * FROM ( SELECT ID = rt.Id, CODE = 0 , MESSAGE = ''Success'', AGENT_TXN_REF_ID = dbo.FNADecryptString(controlNo2), AGENT_NAME = sAgentName, AGENT_BRANCH = sBranchName , TRANSACTION_STATUS = CASE WHEN tranStatus=''Hold'' THEN ''Send'' ELSE tranStatus END, PINNO = DBO.FNADecryptString(controlNo) , SENDER_NAME = RT.senderName , RECEIVER_NAME = RT.receiverName, RECEIVER_COUNTRY = TR.country, PAYOUT_AMT = pAmt, PAYOUT_CCY = payoutCurr, TRANSACTION_DATE = createdDate, STATUS = CASE WHEN tranStatus=''Payment'' THEN ''Un-Paid'' ELSE tranStatus END, PAID_DATE = paidDateLocal, PAYOUT_AGENT = pAgentName, CANCEL_DATE = cancelApprovedDate, isCancelled = ''N'' FROM remitTran RT WITH (NOLOCK) INNER JOIN tranReceivers TR WITH (NOLOCK) ON RT.id = TR.tranId WHERE '+@dateType+' BETWEEN '''+@FROM_DATE+''' AND '''+@TO_DATE+' 23:59:59'' AND RT.sBranch = '''+CAST(@sBranch AS VARCHAR)+'''' + CASE WHEN @SHOW_INCREMENTAL = 'Y' THEN ' AND (RT.incrRpt IS NULL OR RT.incrRpt = ''N'')' ELSE '' END IF @REPORT_TYPE = 'S' SET @SQL = @SQL +' AND RT.cancelApprovedDate IS NULL ' IF @REPORT_TYPE = 'U' SET @SQL = @SQL +' AND RT.paystatus =''Unpaid'' AND RT.cancelApprovedDate IS NULL ' IF @REPORT_TYPE IN ('A','C') BEGIN -------------------------for cancel txn SET @SQL = @SQL + ' UNION ALL SELECT ID = rt.Id, CODE = 0 , MESSAGE = ''Success'' , AGENT_TXN_REF_ID = dbo.FNADecryptString(controlNo2), AGENT_NAME = sAgentName, AGENT_BRANCH = sBranchName , TRANSACTION_STATUS = CASE WHEN tranStatus=''Hold'' THEN ''Send'' ELSE tranStatus END , PINNO = DBO.FNADecryptString(controlNo) , SENDER_NAME = RT.senderName , RECEIVER_NAME = RT.receiverName, RECEIVER_COUNTRY = TR.country, PAYOUT_AMT = pAmt , PAYOUT_CCY = payoutCurr , TRANSACTION_DATE = createdDate, STATUS = CASE WHEN tranStatus=''Payment'' THEN ''Un-Paid'' ELSE tranStatus END, PAID_DATE = paidDateLocal , PAYOUT_AGENT = pAgentName, CANCEL_DATE = cancelApprovedDate, isCancelled = ''Y'' FROM cancelTranHistory RT WITH (NOLOCK) INNER JOIN tranReceivers TR WITH (NOLOCK) ON RT.id = TR.tranId WHERE '+@dateType+' BETWEEN '''+@FROM_DATE+''' AND '''+@TO_DATE+' 23:59:59'' AND RT.sBranch = '''+CAST(@sBranch AS VARCHAR)+'''' + CASE WHEN @SHOW_INCREMENTAL = 'Y' THEN ' AND (RT.incrRpt IS NULL OR RT.incrRpt = ''N'')' ELSE '' END END SET @SQL = @SQL +' ) X ' IF @REPORT_TYPE IN('A','P') AND @SHOW_INCREMENTAL = 'Y' SET @SQL = @SQL +' ORDER BY X.TRANSACTION_DATE ' PRINT @SQL INSERT INTO #outputList EXEC(@SQL) IF NOT EXISTS(SELECT 'x' FROM #outputList) BEGIN INSERT #outputList(CODE, [MESSAGE], AGENT_TXN_REF_ID) SELECT '3013', 'NO Record Found', @AGENT_SESSION_ID END ELSE BEGIN UPDATE r SET r.incrRpt = 'Y' FROM remitTran r INNER JOIN #outputList ol ON r.id = ol.id AND ol.isCancelled = 'N' UPDATE r SET r.incrRpt = 'Y' FROM cancelTranHistory r INNER JOIN #outputList ol ON r.id = ol.id AND ol.isCancelled = 'Y' END SELECT * FROM #outputList UPDATE requestApiLogOther SET errorCode = '0' ,errorMsg = 'Success' WHERE rowId = @apiRequestId END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK TRAN SELECT '9001' CODE, 'Technical Error : ' + ERROR_MESSAGE() MESSAGE, * FROM @errorTable INSERT INTO Logs (errorPage, errorMsg, errorDetails, createdBy, createdDate) SELECT 'API SP Error', 'Technical Error : ' + ERROR_MESSAGE() MESSAGE, 'ws_int_proc_ReconcileReportSMA', @USER_ID, GETDATE() END CATCH GO