USE [FastMoneyPro_Remit] GO /****** Object: StoredProcedure [dbo].[INBOUND_PROC_APPROVE_HOLDED_TXN] Script Date: 9/27/2019 1:30:13 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROC [dbo].[INBOUND_PROC_APPROVE_HOLDED_TXN] ( @flag VARCHAR(50) ,@user VARCHAR(30) ,@userType VARCHAR(10) = NULL ,@branch VARCHAR(50) = NULL ,@id VARCHAR(40) = NULL ,@country VARCHAR(50) = NULL ,@sender VARCHAR(50) = NULL ,@receiver VARCHAR(50) = NULL ,@amt MONEY = NULL ,@bank VARCHAR(50) = NULL ,@voucherNo VARCHAR(50) = NULL ,@branchId INT = NULL ,@pin VARCHAR(50) = NULL ,@errorCode VARCHAR(10) = NULL ,@msg VARCHAR(500) = NULL ,@idList XML = NULL ,@txnDate VARCHAR(20) = NULL ,@txncreatedBy VARCHAR(50) = NULL ,@xml VARCHAR(MAX) = NULL ,@remarks VARCHAR(MAX) = NULL ,@settlingAgentId INT = NULL ,@ControlNo VARCHAR(50) = NULL ,@txnType VARCHAR(1) = NULL ,@sendCountry VARCHAR(50) = NULL ,@sendAgent VARCHAR(50) = NULL ,@sendBranch VARCHAR(50) = NULL ) AS BEGIN TRY DECLARE @table VARCHAR(MAX) ,@sql VARCHAR(MAX) ,@sqlSelfTxn VARCHAR(MAX) IF @flag ='OnlineTxn-waitingList' BEGIN SELECT sn = row_number() over(order by trn.sCountry) ,country = upper(trn.sCountry) ,txnCount = count('x') FROM dbo.INBOUND_REMIT_TRAN_TEMP trn WITH(NOLOCK) INNER JOIN agentMaster am WITH(NOLOCK) ON trn.sAgent = am.agentId INNER JOIN dbo.INBOUND_TRAN_SENDERS_TEMP sen WITH(NOLOCK) ON trn.id = sen.tranId INNER JOIN dbo.INBOUND_TRAN_RECEIVERS_TEMP rec WITH(NOLOCK) ON trn.id = rec.tranId WHERE trn.tranStatus IN ('Hold','Compliance Hold','OFAC Hold','OFAC/Compliance Hold') AND trn.payStatus = 'Unpaid' group by trn.sCountry End DECLARE @cdTable VARCHAR(MAX) = '' SET @cdTable = ' LEFT JOIN ( SELECT DISTINCT tranId ,cb.bankName ,cd.countryBankId FROM collectionDetails cd WITH(NOLOCK) LEFT JOIN countryBanks cb WITH(NOLOCK) ON cd.countryBankId = cb.countryBankId INNER JOIN INBOUND_REMIT_TRAN_TEMP trn WITH(NOLOCK) ON cd.tranId = trn.id AND (trn.tranStatus = ''Hold'' OR trn.tranStatus = ''Compliance Hold'' OR trn.tranStatus = ''OFAC Hold'' ) AND trn.payStatus = ''Unpaid'' ) cd ON cd.tranId = trn.id ' IF @flag = 's-admin-online' BEGIN SET @table = ' SELECT DISTINCT trn.id ,branch = am.agentName ,country = trn.pCountry ,senderId = sen.customerId ,sender = sen.firstName + ISNULL( '' '' + sen.middleName, '''') + ISNULL( '' '' + sen.lastName, '''') ,receiverId = rec.customerId ,receiver = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName, '''') ,amt = CAST(ISNULL(trn.tAmt,0) + ISNULL(trn.serviceCharge,0) AS DECIMAL(18, 2)) ,txnDate = CAST(trn.createdDate AS DATE) ,txncreatedBy = trn.createdBy ,CASE WHEN trn.pAgent=1100 OR trn.pAgent = 1043 THEN 1 ELSE 0 END isThirdPartyTran FROM INBOUND_REMIT_TRAN_TEMP trn WITH(NOLOCK) ' + @cdTable + ' INNER JOIN agentMaster am WITH(NOLOCK) ON trn.sAgent = am.agentId INNER JOIN INBOUND_TRAN_SENDERS_TEMP sen WITH(NOLOCK) ON trn.id = sen.tranId INNER JOIN INBOUND_TRAN_RECEIVERS_TEMP rec WITH(NOLOCK) ON trn.id = rec.tranId WHERE trn.tranStatus IN (''Hold'',''Compliance Hold'',''OFAC Hold'',''OFAC/Compliance Hold'') AND trn.payStatus = ''Unpaid'' ' IF @id IS NOT NULL SET @table = @table + ' AND trn.id = ''' + @id + '''' IF @branch IS NOT NULL SET @table = @table + ' AND am.agentId = ''' + @branch + '''' IF @country IS NOT NULL SET @table = @table + ' AND trn.pCountry LIKE ''' + @country + '%''' IF @sendCountry IS NOT NULL SET @table = @table + ' AND trn.sCountry LIKE ''' + @sendCountry + '%''' IF @amt IS NOT NULL SET @table = @table + ' AND trn.pAmt = ' + CAST(@amt AS VARCHAR(20))+ '' IF @txncreatedBy IS NOT NULL SET @table = @table + ' AND trn.createdBy = '''+@txncreatedBy+'''' IF @txnDate IS NOT NULL SET @table = @table + ' AND CAST(trn.createdDate AS DATE)='''+@txnDate +'''' IF @ControlNo IS NOT NULL SET @table = @table + ' AND trn.controlNo = dbo.fnaEncryptString('''+@ControlNo+''')' IF @sendAgent IS NOT NULL SET @table = @table + ' AND trn.sAgent = '''+@sendAgent+'''' IF @sendBranch IS NOT NULL SET @table = @table + ' AND trn.sBranch = '''+@sendBranch+'''' SET @sql = ' SELECT * , STUFF((SELECT '''' + US.voucherNo +'' - ''+ CONVERT(VARCHAR(11),US.voucherDate,6) +'' - ''+ CAST(US.voucherAmt AS VARCHAR)+'' || '' FROM bankCollectionVoucherDetail US WHERE US.tempTranId = x.id FOR XML PATH('''')), 1, 1, '''') [voucherDetail] FROM ( ' + @table + ' ) x WHERE 1 = 1 ' IF @sender IS NOT NULL SET @sql = @sql + ' AND sender LIKE ''' + @sender + '%''' IF @receiver IS NOT NULL SET @sql = @sql + ' AND receiver LIKE ''' + @receiver + '%''' PRINT @sql EXEC (@sql) RETURN END END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION SELECT 1 error_code, ERROR_MESSAGE() mes, NULL id END CATCH GO