USE [FastMoneyPro_Remit] GO /****** Object: StoredProcedure [dbo].[Proc_StatementOfACDrilldown] Script Date: 7/4/2019 11:35:48 AM ******/ DROP PROCEDURE [dbo].[Proc_StatementOfACDrilldown] GO /****** Object: StoredProcedure [dbo].[Proc_StatementOfACDrilldown] Script Date: 7/4/2019 11:35:48 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO --EXEC Proc_StatementOfACDrilldown @REPORTTYPE = 's', @FROMDATE = '05/27/2012', @TODATE = '05/27/2012', @agentId = '9', @VOUCHERTYPE = 's' CREATE procEDURE [dbo].[Proc_StatementOfACDrilldown] @REPORTTYPE CHAR(10), @FROMDATE VARCHAR(20), @TODATE VARCHAR(30), @AGENTID INT = NULL, @VOUCHERTYPE VARCHAR(10), @pageSize INT = NULL, @pageNumber INT = NULL AS SET NOCOUNT ON; SET ANSI_NULLS ON; DECLARE @NUM INT ,@ROWNUM INT ,@CLOSEAMT MONEY ,@REPORTHEAD VARCHAR(40) ,@SQL VARCHAR(1000) ,@EXESQL VARCHAR(MAX) ,@AGENTNAME VARCHAR(200) ,@COMM_RATE MONEY SET @pageSize = ISNULL(@pageSize,500) SET @pageNumber = ISNULL(@pageNumber,1) SELECT @COMM_RATE=commRate FROM enrollCommSetup WHERE agentId is null IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[#TEMPSOADETAIL]') AND type in (N'U')) DROP TABLE [dbo].[#TEMPSOADETAIL] CREATE TABLE #TEMPSOADETAIL ( ROWID int identity(1,1), TRAN_TYPE CHAR(2),id INT,TXNID VARCHAR(30), txndate DATETIME,remarks VARCHAR(200) ,dr_principal MONEY,dr_comm MONEY,cr_principal MONEY,cr_comm MONEY ,TOTAL money, CLOSING money , [DR/CR] CHAR(3) ) --# SEND TRANSACTION IF @VOUCHERTYPE ='S' BEGIN SET @SQL = ' SELECT [TRAN_TYPE] = NULL ,id ,dbo.FNADecryptString(controlNo) controlNo ,CAST(approvedDate AS DATE) approvedDate ,[remarks] = ''SEND'' ,[dr_principal] = ISNULL(tAmt,0) ,[dr_comm] = ISNULL(CAMT,0) - ISNULL(tAmt,0) ,[cr_principal] = 0 ,[cr_comm] = 0 FROM remitTran T WITH(NOLOCK) WHERE CAST(approvedDate AS DATE) BETWEEN ''' + @FROMDATE + ''' AND ''' + @TODATE + ''' AND ISNULL(sAgent,0) =ISNULL('''+CAST(@AGENTID AS VARCHAR)+''' ,ISNULL(sAgent,0))' SET @REPORTHEAD = 'Sending Detail Report' END --# CANCEL TRANSACTION IF @VOUCHERTYPE ='C' BEGIN SET @SQL = 'SELECT NULL [TRAN_TYPE] ,id ,dbo.FNADecryptString(controlNo) controlNo ,CAST(cancelApprovedDate AS DATE) cancelApprovedDate ,''CANCEL'' [Particulars] ,0 [dr_principal],0 [dr_comm] ,ISNULL(tAmt,0) [cr_principal] ,CASE WHEN CAST(approvedDate AS DATE)= CAST(cancelApprovedDate AS DATE) THEN ISNULL(CAMT,0)-ISNULL(tAmt,0) ELSE 0 END[cr_comm] FROM remitTran T WITH(NOLOCK) WHERE CAST(cancelApprovedDate AS DATE) BETWEEN '''+@FROMDATE+''' AND '''+@TODATE+''' AND ISNULL(sAgent,0) =ISNULL('''+CAST(@AGENTID AS VARCHAR)+''' ,ISNULL(sAgent,0))' SET @REPORTHEAD = 'Cancel Detail Report' END --# DOMESTIC PAID TRANSACTION IF @VOUCHERTYPE ='DP' BEGIN SET @SQL = 'SELECT NULL [TRAN_TYPE] ,id,dbo.FNADecryptString(controlNo) controlNo ,CAST(paidDate AS DATE) paidDate ,''DOMESTIC PAID'' [Particulars] ,0 [dr_principal] ,0 [dr_comm] ,ISNULL(pAmt,0)[cr_principal] ,ISNULL(pAgentComm,0) [cr_comm] FROM remitTran T WITH(NOLOCK) WHERE CAST(paidDate AS DATE) BETWEEN '''+@FROMDATE+''' AND '''+@TODATE+''' AND ISNULL(pAgent,0) =ISNULL('''+CAST(@AGENTID AS VARCHAR)+''' ,ISNULL(sAgent,0)) AND sCountry = ''NEPAL''' SET @REPORTHEAD = 'Domestic Paid Detail Report' END --# INTERNATIONAL PAID TRANSACTION IF @VOUCHERTYPE ='IP' BEGIN SET @SQL = 'SELECT NULL [TRAN_TYPE] ,id ,dbo.FNADecryptString(controlNo) controlNo ,CAST(paidDate AS DATE) paidDate ,''INTERNATIONAL PAID'' [Particulars] ,0 [dr_principal] ,0 [dr_comm] ,ISNULL(pAmt,0)[cr_principal] ,ISNULL(pAgentComm,0) [cr_comm] FROM remitTran T WITH(NOLOCK) WHERE CAST(paidDate AS DATE) BETWEEN '''+@FROMDATE+''' AND '''+@TODATE+''' AND ISNULL(pAgent,0) =ISNULL('''+CAST(@AGENTID AS VARCHAR)+''' ,ISNULL(sAgent,0)) AND sCountry <> ''NEPAL''' SET @REPORTHEAD = 'International Paid Detail Report' END --# PAID ORDER TRANSACTION IF @VOUCHERTYPE ='PO' BEGIN SET @SQL = ' SELECT NULL [TRAN_TYPE] ,RT.id ,dbo.FNADecryptString(RT.controlNo) controlNo ,CAST(T.createdDate AS DATE) createdDate ,''PAY ORDER'' [Particulars] ,0 [dr_principal] ,0 [dr_comm] ,ISNULL(T.tranAmount,0) [cr_principal] ,ISNULL(T.pAgentComm,0) [cr_comm] FROM errPaidTran T WITH(NOLOCK) INNER JOIN remitTran RT WITH (NOLOCK) ON T.controlNo = RT.controlNo WHERE CAST(T.createdDate AS DATE) BETWEEN '''+@FROMDATE+''' AND '''+@TODATE+''' AND ISNULL(T.newPAgentId,0) =ISNULL('''+CAST(@AGENTID AS VARCHAR)+''' ,ISNULL(T.newPAgentId,0))' SET @REPORTHEAD = 'Pay Order Detail Report' END --# ERRONEOUSLY PAID TRANSACTION IF @VOUCHERTYPE ='EP' BEGIN SET @SQL = ' SELECT NULL [TRAN_TYPE] ,RT.id ,dbo.FNADecryptString(RT.controlNo) controlNo ,CAST(T.createdDate AS DATE) createdDate ,''ERRONEOUSLY PAID'' [Particulars] ,ISNULL(T.tranAmount,0) [dr_principal] ,ISNULL(T.pAgentComm,0) [dr_comm] ,0 [cr_principal] ,0 [cr_comm] FROM errPaidTran T WITH(NOLOCK) INNER JOIN remitTran RT WITH (NOLOCK) ON T.controlNo = RT.controlNo WHERE CAST(T.createdDate AS DATE) BETWEEN '''+@FROMDATE+''' AND '''+@TODATE+''' AND ISNULL(T.oldPAgentId,0) =ISNULL('''+CAST(@AGENTID AS VARCHAR)+''' ,ISNULL(T.oldPAgentId,0))' SET @REPORTHEAD = 'Erroneously Paid Detail Report' END IF @VOUCHERTYPE ='CR' BEGIN SET @SQL = 'SELECT T.tran_type ,T.ref_num [ID] ,T.ref_num ,CAST(T.tran_date AS DATE) tran_date ,TD.tran_particular [REMARKS] ,0 [dr_principal] ,0 [dr_comm] ,T.tran_amt [cr_principal] ,0 [cr_comm] FROM ac_master A WITH(NOLOCK) INNER JOIN tran_master T WITH(NOLOCK) ON T.acc_num=A.acct_num INNER JOIN tran_masterDetail TD WITH(NOLOCK) ON T.ref_num =TD.ref_num WHERE CAST(tran_date AS DATE) BETWEEN '''+@FROMDATE+''' AND '''+@TODATE+''' AND A.agent_id=ISNULL('''+CAST(@AGENTID AS VARCHAR)+''' ,ISNULL(A.agent_id,0)) and A.acct_rpt_code=''22'' AND (T.RPT_CODE IS NULL OR T.RPT_CODE=''FUND DEPOSIT'') AND T.part_tran_type=''CR''' END IF @VOUCHERTYPE ='DR' BEGIN SET @SQL = 'SELECT T.tran_type ,T.ref_num [ID] ,T.ref_num ,CAST(T.tran_date AS DATE) tran_date ,TD.tran_particular [REMARKS] ,0 [dr_principal] ,0 [dr_comm] ,T.tran_amt [cr_principal] ,0 [cr_comm] FROM ac_master A WITH(NOLOCK) INNER JOIN tran_master T WITH(NOLOCK) ON T.acc_num=A.acct_num INNER JOIN tran_masterDetail TD WITH(NOLOCK) ON T.ref_num =TD.ref_num WHERE CAST(tran_date AS DATE) BETWEEN '''+@FROMDATE+''' AND '''+@TODATE+''' AND A.agent_id=ISNULL('''+CAST(@AGENTID AS VARCHAR)+''' ,ISNULL(A.agent_id,0)) and A.acct_rpt_code=''22'' AND T.RPT_CODE IS NULL AND T.part_tran_type=''DR''' END --IF @VOUCHERTYPE = 'ME' --BEGIN -- SET @SQL =' SELECT -- [TRAN_TYPE] = NULL -- ,[ID] = A.customerId -- , A.customerId -- ,CAST(A.createdDate AS DATE) [TRANDATE] -- ,[Particulars] = ''MEMBERSHIP ENROLLMENT'' -- ,[dr_principal] = 0 -- ,[dr_comm] = 0 -- ,[cr_principal] = SUM(ISNULL(D.commRate,ISNULL(@COMM_RATE,0))) -- ,[cr_comm] = 0 -- FROM customers A WITH(NOLOCK) -- INNER JOIN applicationUsers b WITH(NOLOCK) ON a.createdBy=b.userName -- INNER JOIN agentMaster c WITH(NOLOCK) ON c.agentId=b.agentId -- LEFT JOIN enrollCommSetup d WITH(NOLOCK) ON d.agentId=c.agentId -- WHERE A.createdDate BETWEEN @fromDate AND @toDate AND ISNULL(C.agentId,0) = ISNULL(@agentId,ISNULL(C.agentId,0)) -- AND ISNULL(C.isDeleted,'''')<>''Y'' ' --END --# PAID TRANSACTION IF @VOUCHERTYPE ='P' BEGIN SET @SQL = 'SELECT NULL [TRAN_TYPE] ,id,dbo.FNADecryptString(controlNo) controlNo ,CAST(paidDate AS DATE) paidDate ,''PAID'' [Particulars] ,0 [dr_principal] ,0 [dr_comm] ,ISNULL(pAmt,0)[cr_principal] ,ISNULL(pAgentComm,0) [cr_comm] FROM remitTran T WITH(NOLOCK) WHERE CAST(paidDate AS DATE) BETWEEN '''+@FROMDATE+''' AND '''+@TODATE+''' AND ISNULL(pAgent,0) =ISNULL('''+CAST(@AGENTID AS VARCHAR)+''' ,ISNULL(sAgent,0)) ' SET @REPORTHEAD = 'Paid Detail Report' END BEGIN SET @EXESQL = 'SELECT Y.* ,ISNULL(Y.dr_principal,0)+ISNULL(Y.dr_comm,0)-ISNULL(Y.cr_principal,0)-ISNULL(Y.cr_comm,0)[TOTAL],0 [CLOSING] , NULL[DR/CR] FROM ( '+@SQL+' ) Y' --PRINT @EXESQL INSERT INTO #TEMPSOADETAIL EXEC(@EXESQL) SET @NUM =1 --ALTER TABLE #TEMPSOADETAIL --ADD ROWID INT IDENTITY(1,1) SELECT @ROWNUM=COUNT(*) FROM #TEMPSOADETAIL WHILE @NUM<=@ROWNUM BEGIN SELECT @CLOSEAMT = CLOSING FROM #TEMPSOADETAIL WHERE ROWID =@NUM-1 IF @NUM = 1 BEGIN SELECT @CLOSEAMT = TOTAL FROM #TEMPSOADETAIL WHERE ROWID =@NUM UPDATE #TEMPSOADETAIL SET CLOSING = @CLOSEAMT, [DR/CR] =CASE WHEN @CLOSEAMT>0 THEN 0 ELSE 1 END WHERE ROWID = 1 SET @NUM = @NUM +1 END UPDATE #TEMPSOADETAIL SET CLOSING = @CLOSEAMT+TOTAL ,[DR/CR] = CASE WHEN CAST(@CLOSEAMT+TOTAL AS MONEY)>0 THEN 0 ELSE 1 END WHERE ROWID = @NUM SET @NUM = @NUM +1 END --SELECT * FROM #TEMPSOADETAIL SELECT TXNCOUNT = COUNT('A'), PAGESIZE = @pageSize, PAGENUMBER = @pageNumber FROM #TEMPSOADETAIL SELECT [Txn Date] = CONVERT(VARCHAR, txnDate, 101) ,[Txn No] = ''+ (TXNID) +'' ,[Particulars] = remarks , DR_Principal ,[DR_Commission]= DR_Comm ,CR_Principal ,[CR_Commission]= CR_Comm ,[Closing] = CASE WHEN Closing >0 THEN Closing ELSE Closing *-1 END ,CASE WHEN [DR/CR] =0 THEN 'DR' ELSE 'CR' END as ' ' FROM #TEMPSOADETAIL WHERE ROWID BETWEEN ((@PageNumber - 1) * @PageSize + 1) AND @pageSize * @pageNumber --SET @REPORTHEAD = 'Sending Detail Report' DROP TABLE #TEMPSOADETAIL END SELECT @AGENTNAME=agentName FROM agentMaster WHERE agentId = @AGENTID print @SQL EXEC proc_errorHandler '0', 'Report has been prepared successfully.', @agentId SELECT 'Agent Name' head, @AGENTNAME value UNION ALL SELECT 'From Date' head, CONVERT(VARCHAR, CAST(@fromDate AS DATE), 101) value UNION ALL SELECT 'To Date' head, CONVERT(VARCHAR, CAST(@toDate AS DATE), 101) value SELECT 'Statement Of Account '+@REPORTHEAD title GO