USE [FastMoneyPro_Remit] GO /****** Object: StoredProcedure [dbo].[proc_amlTopCustomer] Script Date: 7/4/2019 11:35:48 AM ******/ DROP PROCEDURE [dbo].[proc_amlTopCustomer] GO /****** Object: StoredProcedure [dbo].[proc_amlTopCustomer] Script Date: 7/4/2019 11:35:48 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE proc [dbo].[proc_amlTopCustomer] @flag VARCHAR(10) ,@user VARCHAR(30) ------------------------------------------- ,@sCountry VARCHAR(50) = NULL ,@rCountry VARCHAR(50) = NULL ,@sAgent VARCHAR(50) = NULL ,@rAgent VARCHAR(50) = NULL ,@rMode VARCHAR(50) = NULL ,@dateType VARCHAR(10) = NULL ,@frmDate VARCHAR(50) = NULL ,@toDate VARCHAR(50) = NULL ------------------------------------------- ,@rptBy VARCHAR(50) = NULL ,@rptFor VARCHAR(50) = NULL ,@tcNo VARCHAR(50) = NULL ------------------------------------------- ,@pageNumber INT = 1 ,@pageSize INT = 50 ,@isExportFull VARCHAR(1) = NULL ,@reportType VARCHAR(50) = NULL AS SET NOCOUNT ON BEGIN TRY DECLARE @table VARCHAR(MAX) DECLARE @sql VARCHAR(MAX) DECLARE @globalFilter VARCHAR(MAX) = '' DECLARE @URL VARCHAR(MAX) = '' DECLARE @reportHead VARCHAR(100) = '' SET @rMode = REPLACE(@rMode,'__',' ') DECLARE @FilterList TABLE(head VARCHAR(50), value VARCHAR(5000)) SET @pageNumber = ISNULL(@pageNumber, 1) SET @pageSize = ISNULL(@pageSize, 100) SET @globalFilter = ' AND rt.tranStatus <> ''Cancel''' IF @sCountry is not null BEGIN INSERT @FilterList SELECT 'Sender Country', @sCountry SET @globalFilter = @globalFilter + ' AND rt.sCountry = ''' + @sCountry + '''' END IF @rCountry is not null BEGIN INSERT @FilterList SELECT 'Receiver Country', @rCountry SET @globalFilter = @globalFilter + ' AND rt.pCountry = ''' + @rCountry + '''' END IF @sAgent IS NOT NULL BEGIN INSERT @FilterList SELECT 'Sender Agent', am.agentName FROM agentMaster am WITH(NOLOCK) WHERE agentId = @sAgent SET @globalFilter = @globalFilter + ' AND rt.sAgent = ''' + @sAgent + '''' END IF @rAgent IS NOT NULL BEGIN INSERT @FilterList SELECT 'Receiver Agent', am.agentName FROM agentMaster am WITH(NOLOCK) WHERE agentId = @rAgent SET @globalFilter = @globalFilter + ' AND rt.pAgent = ''' + @rAgent + '''' END IF @rMode IS NOT NULL BEGIN INSERT @FilterList SELECT 'Receiving Mode', @rMode SET @globalFilter = @globalFilter + ' AND rt.paymentMethod = ''' + @rMode + '''' END --IF @tranType IS NOT NULL --BEGIN -- INSERT @FilterList -- SELECT 'Tran Type', @tranType -- SET @globalFilter = @globalFilter + ' AND rt.tranType = ''' + @tranType + '''' --END INSERT @FilterList SELECT 'Date Type', case when @dateType = 'txnDate' then 'TXN Date' when @dateType = 'confirmDate' then 'Confirm Date' when @dateType = 'paidDate' then 'Paid Date' end IF @dateType = 'txnDate' BEGIN INSERT @FilterList SELECT 'From Date', @frmDate SET @globalFilter = @globalFilter + ' AND rt.createdDate >= ''' + @frmDate + '''' INSERT @FilterList SELECT 'To Date', @toDate SET @globalFilter = @globalFilter + ' AND rt.createdDate <= ''' + @toDate + ' 23:59:59''' END IF @dateType = 'confirmDate' BEGIN INSERT @FilterList SELECT 'From Date', @frmDate SET @globalFilter = @globalFilter + ' AND rt.approvedDate >= ''' + @frmDate + '''' INSERT @FilterList SELECT 'To Date', @toDate SET @globalFilter = @globalFilter + ' AND rt.approvedDate <= ''' + @toDate + ' 23:59:59''' END IF @dateType = 'paidDate' BEGIN INSERT @FilterList SELECT 'From Date', @frmDate SET @globalFilter = @globalFilter + ' AND rt.paidDate >= ''' + @frmDate + '''' INSERT @FilterList SELECT 'To Date', @toDate SET @globalFilter = @globalFilter + ' AND rt.paidDate <= ''' + @toDate + ' 23:59:59''' END IF @flag = 'tc' BEGIN SET @reportHead ='Top Customer' IF @rptFor = 'Sender' SET @URL='"Reports.aspx?dateType='+@dateType+'&frmDate='+@frmDate+'&toDate='+@toDate+'&sCountry=' +isnull(replace(@sCountry,' ','__'),'')+'&sAgent='+isnull(@sAgent,'') +'&rMode='+ISNULL(REPLACE(@rMode,' ','__'),'')+'&rCountry=' +isnull(replace(@rCountry,' ','__'),'')+'&rAgent='+ISNULL(@rAgent,'') +'&rptBy='+@rptBy+'&rptFor='+ISNULL(@rptFor,'')+'&reportName=amlddlreport&recName=' + CASE WHEN @rptFor = 'Sender' THEN '''+REPLACE(rt.senderName,'' '',''__'')+''' ELSE '''+REPLACE(rt.receiverName,'' '',''__'')+''' END + '&flag=tc_ddl&country=''+REPLACE(ISNULL(ts.nativeCountry,''''),'' '',''__'') +''&membershipId=''+ISNULL(ts.membershipId,'''') +''&idType=''+ISNULL(ts.idType,'''') +''&idNumber=''+ISNULL(ts.idNumber,'''') +''&company=''+REPLACE(ISNULL(ts.companyName,''''),'' '',''__'')+''"' ELSE SET @URL='"Reports.aspx?dateType='+@dateType+'&frmDate='+@frmDate+'&toDate='+@toDate+'&sCountry='+isnull(replace(@sCountry,' ','__'),'') +'&sAgent='+isnull(@sAgent,'')+'&rMode='+ISNULL(REPLACE(@rMode,' ','__'),'') +'&rCountry='+isnull(replace(@rCountry,' ','__'),'')+'&rAgent='+ISNULL(@rAgent,'') +'&rptBy='+@rptBy+'&rptFor='+ISNULL(@rptFor,'')+'&reportName=amlddlreport&recName=' + CASE WHEN @rptFor = 'Sender' THEN '''+REPLACE(rt.senderName,'' '',''__'')+''' ELSE '''+REPLACE(rt.receiverName,'' '',''__'')+''' END + '&flag=tc_ddl&country=''+REPLACE(ISNULL(ts.nativeCountry,''''),'' '',''__'')+''&membershipId=''+ISNULL(ts.membershipId,'''') +''&pCountry=''+REPLACE(ISNULL(rt.pCountry,''''),'' '',''__'')+''"' SET @table = ' SELECT [Membership ID] = ISNULL(ts.mobile,''-'') ,[Name] = '''' + ISNULL(' + CASE WHEN @rptFor = 'Sender' THEN 'rt.senderName' ELSE 'rt.receiverName' END + ',''-'') + '''' ,[Nationality] = ISNULL(ts.nativeCountry,''-'') ' + CASE WHEN @rptFor = 'Sender' THEN ' ,[Id type] = ts.idType ,[ID Number] = ts.idNumber ,[Company] = ts.companyName ' ELSE ' ' END + ' ,[Number of TXN] = COUNT(1) ' + CASE WHEN @rptFor = 'Sender' THEN ' ,[Collection_USD AMT] = SUM(ISNULL(rt.cAmt / (NULLIF(rt.sCurrCostRate, 0)+ISNULL(RT.scurrhomargin,0)), 0)) ,[Collection_Currency] = rt.collCurr ,[Collection_Amount] = ROUND(SUM(rt.cAmt), 2, 0) ' ELSE ' ,[Payout_USD AMT] = ROUND(SUM(ISNULL(rt.tAmt / NULLIF(rt.sCurrCostRate, 0), 0)), 2, 0) ,[Payout_Currency] = rt.payoutCurr ,[Payout_Amount] = ROUND(SUM(rt.pAmt), 2, 0) ,[Payout_Country] = rt.pCountry ' END + ' FROM vwremitTran rt WITH(NOLOCK) LEFT JOIN ' + CASE WHEN @rptFor = 'Sender' THEN 'vwtranSenders' ELSE 'vwtranReceivers' END + ' ts WITH(NOLOCK) ON rt.id = ts.tranId WHERE 1 = 1 and rt.tranStatus <>''cancel'' AND rt.senderName IS NOT NULL ' SET @table = @table + @globalFilter + ' GROUP BY ts.membershipId ,' + CASE WHEN @rptFor = 'Sender' THEN 'rt.senderName ,ts.idType ,ts.idNumber ,ts.mobile ,ts.companyName' ELSE 'rt.receiverName ,ts.mobile' END + ' ,ts.nativeCountry ' + CASE WHEN @rptFor = 'Sender' THEN ',rt.collCurr ' ELSE ' ,rt.collCurr ,rt.payoutCurr ,rt.pCountry ' END DECLARE @srColumn AS VARCHAR(50) IF @rptFor = 'Sender' BEGIN SET @srColumn = 'Sender''''s' END ELSE BEGIN SET @srColumn = 'Receiver''''s' END SET @sql = 'SELECT ' + ' [SN] = ROW_NUMBER() OVER(ORDER BY ' + CASE WHEN @rptFor = 'Sender' THEN CASE WHEN @rptBy = 'Amount' THEN '[Collection_USD AMT] DESC, [Number of TXN] DESC' ELSE '[Number of TXN] DESC, [Collection_USD AMT] DESC' END WHEN @rptFor = 'Receiver' THEN CASE WHEN @rptBy = 'Amount' THEN '[Payout_USD AMT] DESC, [Number of TXN] DESC' ELSE '[Number of TXN] DESC, [Payout_USD AMT] DESC' END END + ' ) ' + CASE WHEN @rptFor = 'Sender' THEN REPLACE(' ,[Membership ID] [@Mobile No] ,[Name] [@Name] ,[Nationality] [@Nationality] ,[Id type] [@Id type] ,[ID Number] [@ID Number] ,[Company] [@Company] ,[Number of TXN]' ,'@' ,'Sender''s_') ELSE REPLACE(' ,[Membership ID] [@Mobile No] ,[Name] [@Name] ,[Nationality] [@Nationality] ,[Number of TXN]' ,'@' ,'Receiver''s_') END + CASE WHEN @rptFor = 'Sender' THEN ' ,[Collection_USD AMT] ,[Collection_Currency] ,[Collection_Amount] ' ELSE ' ,[Payout_USD AMT] ,[Payout_Currency] ,[Payout_Amount] ,[Payout_Country] ' END + ' FROM (' + @table + ') x ' IF @rptBy IS NOT NULL BEGIN INSERT @FilterList SELECT 'Report By', @rptBy END IF @rptFor IS NOT NULL BEGIN INSERT @FilterList SELECT 'Report For', @rptFor END IF @tcNo IS NOT NULL BEGIN INSERT @FilterList SELECT 'TOP No', @tcNo END --PRINT ('SELECT * FROM (' + @sql + ') x WHERE [SN] <= ' + @tcNo ) return EXEC ('SELECT * FROM (' + @sql + ') x WHERE [SN] <= ' + @tcNo ) END EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL SELECT * FROM @FilterList SELECT 'AML Reports : '+@reportHead title END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION DECLARE @errorMessage VARCHAR(MAX) SET @errorMessage = ERROR_MESSAGE() EXEC proc_errorHandler 1, @errorMessage ,NULL END CATCH GO