USE [FastMoneyPro_Remit] GO /****** Object: StoredProcedure [dbo].[PROC_GET_DASHBOARD_DATA_V2] Script Date: 11/17/2023 12:09:28 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO --EXEC PROC_GET_DASHBOARD_DATA_V2 @Flag = 'Dashboard' ALTER PROC [dbo].[PROC_GET_DASHBOARD_DATA_V2] ( @Flag VARCHAR(20) ,@User VARCHAR(80) = NULL ,@fromDate VARCHAR(20) = NULL ,@toDate VARCHAR(20) = NULL ) AS -- #9697 - Registered Customer Count Tally -- #13162 - Tran Count Tally -- #18970 - changes to show compliance txn on dashboard on the basis of kyc status -- selected kyc details to show on dashboard ; SET NOCOUNT ON; SET XACT_ABORT ON; BEGIN --SET @fromDate= CONVERT(varchar(10),DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0),121); SET @fromDate = CONVERT(VARCHAR(10), DATEADD(M, - 6, GETDATE()), 121); SET @toDate = CONVERT(VARCHAR(10), GETDATE(), 121) + ' 23:59:59'; --set @fromDate = convert(varchar(10) , @fromDate , 121) --set @toDate = convert(varchar(10) , @toDate , 121) DECLARE @StartDatePrevious DATETIME ,@EndDatePrevious DATETIME SET @StartDatePrevious = dateadd(mm, - 1, getdate()) SET @StartDatePrevious = dateadd(dd, datepart(dd, getdate()) * - 1, @StartDatePrevious) SET @EndDatePrevious = dateadd(mm, 1, @StartDatePrevious) IF @Flag = 'Dashboard' BEGIN SELECT TOP 50000 CONVERT(VARCHAR(30), RT.approvedDate, 110) createdDate ,RT.approvedDate AS createdDate1 ,sAgent ,sAgentName = AM.agentName ,pCountry ,tranType ,tranStatus ,payStatus ,CONVERT(VARCHAR(30), paidDate, 110) paidDate ,CONVERT(VARCHAR(30), cancelApprovedDate, 110) cancelApprovedDate ,LEFT(DATENAME(MONTH, RT.approvedDate), 3) monthNameTxn ,DATEPART(MONTH, RT.approvedDate) MonthId ,id ,ISNULL(AM.actAsBranch, 'N') actAsBranch ,ISNULL(RT.createdBy, 'N/A') createdBy INTO #TXN_TABLE FROM remitTran RT(NOLOCK) INNER JOIN agentMaster AM(NOLOCK) ON AM.agentId = RT.sAgent WHERE RT.approvedDate BETWEEN @fromDate AND @toDate AND RT.tranStatus <> 'cancel' ORDER BY RT.id DESC SELECT * FROM #TXN_TABLE RT WHERE createdDate1 BETWEEN CONVERT(VARCHAR(10), DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0), 121) AND @toDate ORDER BY MonthId ASC --OFAC and Compliance Data --SELECT [Head] = CASE -- WHEN TRANTYPE = 'I' -- THEN 'OFAC/Compliance/Cash Limit Hold : International' -- ELSE 'OFAC/Compliance/Cash Limit Hold : Mobile' -- END -- ,[Count] = COUNT('x') --CASE WHEN COUNT('x') > 0 THEN ''+CAST(COUNT('x') AS VARCHAR) +'' ELSE '-' END --FROM remitTranTemp b WITH (NOLOCK) --WHERE B.tranStatus IN ( -- 'Compliance Hold' -- ,'OFAC Hold' -- ,'OFAC/Compliance Hold' -- ,'Cash Limit Hold' -- ,'Cash Limit/OFAC/Compliance Hold' -- ,'Cash Limit/OFAC Hold' -- ,'Cash Limit/Compliance Hold' -- ) --GROUP BY TRANTYPE --UNION ALL SELECT [Head] = CASE WHEN TRANTYPE = 'I' THEN 'OFAC/Compliance/Cash Limit Hold : International' --ELSE 'OFAC/Compliance/Cash Limit Hold : Mobile (KYC Later)' ELSE 'OFAC/Compliance/Cash Limit Hold : Mobile/Web Online' END ,[Count] = COUNT('x') -- CASE WHEN COUNT('x') > 0 THEN '' + CAST(COUNT('x') AS VARCHAR) + '' ELSE '-' END FROM remitTranTemp b WITH (NOLOCK) LEFT JOIN transenderstemp tst(NOLOCK) ON b.id = tst.tranId LEFT JOIN customerMaster cm(NOLOCK) ON tst.customerId = cm.customerId WHERE --cm.LawsonCardNo = 'KYC_LATER' --AND B.tranStatus IN ( 'Compliance Hold' ,'OFAC Hold' ,'OFAC/Compliance Hold' ,'Cash Limit Hold' ,'Cash Limit/OFAC/Compliance Hold' ,'Cash Limit/OFAC Hold' ,'Cash Limit/Compliance Hold' ) GROUP BY TRANTYPE --,cm.LawsonCardNo UNION ALL --SELECT [Head] = CASE -- WHEN TRANTYPE = 'I' -- THEN 'OFAC/Compliance/Cash Limit Hold : International' -- ELSE 'OFAC/Compliance/Cash Limit Hold : Mobile (KYC Now)' -- END -- ,[Count] = COUNT('x') --CASE WHEN COUNT('x') > 0 THEN '' + CAST(COUNT('x') AS VARCHAR) + '' ELSE '-' END --FROM remitTranTemp b WITH (NOLOCK) --LEFT JOIN transenderstemp tst(NOLOCK) ON b.id = tst.tranId --LEFT JOIN customerMaster cm(NOLOCK) ON tst.customerId = cm.customerId --WHERE cm.LawsonCardNo = 'KYC_NOW' -- AND B.tranStatus IN ( -- 'Compliance Hold' -- ,'OFAC Hold' -- ,'OFAC/Compliance Hold' -- ,'Cash Limit Hold' -- ,'Cash Limit/OFAC/Compliance Hold' -- ,'Cash Limit/OFAC Hold' -- ,'Cash Limit/Compliance Hold' -- ) --GROUP BY TRANTYPE -- ,cm.LawsonCardNo --UNION ALL SELECT [Head] = 'OFAC Pay' ,[Count] = COUNT('x') --CASE WHEN COUNT('x') > 0 THEN ''+CAST(COUNT('x') AS VARCHAR) +'' ELSE '-' END FROM tranPayOfac rto WITH (NOLOCK) LEFT JOIN dbo.agentMaster am WITH (NOLOCK) ON rto.pBranch = am.agentId WHERE rto.approvedDate IS NULL UNION ALL SELECT [Head] = 'Compliance Pay' ,[Count] = COUNT('x') --CASE WHEN COUNT('x') > 0 THEN ''+CAST(COUNT('x') AS VARCHAR) +'' ELSE '-' END FROM tranPayCompliance rtc WITH (NOLOCK) LEFT JOIN dbo.agentMaster am WITH (NOLOCK) ON rtc.pBranch = am.agentId WHERE rtc.approvedDate IS NULL DECLARE @totalmobileCustomer INT; DECLARE @todayMobileRegistration INT; DECLARE @todayMobileActivation INT; SELECT @totalmobileCustomer = COUNT(cm.CUSTOMERID) ,@todayMobileRegistration = SUM(CASE WHEN ( CAST(mobileApprovedDate AS DATE) = CAST(GETDATE() AS DATE) AND ISNULL(cm.customerStatus, '') <> 'OTC' ) THEN 1 ELSE 0 END) FROM CUSTOMERMASTER cm INNER JOIN mobile_userRegistration mu(NOLOCK) ON mu.username = cm.email AND cm.customerId = mu.customerId WHERE cm.mobileApprovedDate IS NOT NULL --and CAST(mobileApprovedDate AS DATE) = CAST(GETDATE() AS DATE) SELECT @todayMobileActivation = COUNT(cm.customerId) FROM CUSTOMERMASTER cm INNER JOIN mobile_userRegistration mu(NOLOCK) ON mu.username = cm.email AND cm.customerId = mu.customerId WHERE ISNULL(cm.customerStatus, '') = 'OTC' AND CAST(mobileApprovedDate AS DATE) = CAST(GETDATE() AS DATE) AND cm.serviceusedfor = 'CM' SELECT TotalCustomers = COUNT('X') ,MobileCustomers = @totalmobileCustomer ,TodaysMobileRegistration = @todayMobileRegistration ,TodayMobileActivation = ISNULL(@todayMobileActivation, 0) ,TodaysRegistration = SUM(CASE WHEN CAST(approvedDate AS DATE) = CAST(GETDATE() AS DATE) THEN 1 ELSE 0 END) FROM customerMaster(NOLOCK) WHERE approveddate IS NOT NULL --Lawson summary DROP TABLE IF EXISTS #TEMP_SUMMARY CREATE TABLE #TEMP_SUMMARY ( SN INT ,lDescription VARCHAR(100) ,lCount INT ) DROP TABLE IF EXISTS #TEMP_PIN SELECT DISTINCT PIN_NUMBER INTO #TEMP_PIN FROM TBL_UNTRANSACTED_TXN(NOLOCK) WHERE RECORD_TYPE = 'LC' INSERT INTO #TEMP_SUMMARY ( SN ,lDescription ,lCount ) SELECT 1 ,'Laswon Cards Issued Today' ,COUNT(cardNumber) FROM LawsonCard(NOLOCK) l INNER JOIN customerMaster(NOLOCK) CM ON CM.LawsonCardNo = L.cardNumber WHERE isUsed = 'Y' AND CONVERT(VARCHAR, assignedDate, 23) = CONVERT(VARCHAR, GETDATE(), 23) INSERT INTO #TEMP_SUMMARY ( SN ,lDescription ,lCount ) SELECT 2 ,'Total Lawson Cards Issued' ,COUNT(cardNumber) FROM LawsonCard(NOLOCK) L INNER JOIN customerMaster(NOLOCK) CM ON CM.LawsonCardNo = L.cardNumber WHERE isUsed = 'Y' --and CONVERT(VARCHAR, assignedDate, 23) BETWEEN @fromDate AND @toDate INSERT INTO #TEMP_SUMMARY ( SN ,lDescription ,lCount ) SELECT 3 ,'Total Cards with at least 1 Deposit' ,COUNT(x.particulars) FROM ( SELECT particulars ,COUNT(particulars) AS depositCount FROM LAWSON_DEPOSIT_LOGS(NOLOCK) DL INNER JOIN LawsonCard(NOLOCK) l ON l.cardNumber = DL.particulars --AND CONVERT(VARCHAR, DL.tranDate, 23) BETWEEN @fromDate AND @toDate WHERE L.isUsed = 'Y' GROUP BY particulars HAVING COUNT(particulars) > 1 ) x INSERT INTO #TEMP_SUMMARY ( SN ,lDescription ,lCount ) SELECT 4 ,'Total Cards with more than 3 transactions' ,count(totalCount) FROM ( SELECT DISTINCT CUSTOMER ,COUNT(T.PIN_NUMBER) AS totalCount FROM TBL_UNTRANSACTED U(NOLOCK) INNER JOIN TBL_UNTRANSACTED_TXN UT(NOLOCK) ON UT.TRAN_ID = U.TRAN_ID INNER JOIN #TEMP_PIN T ON T.PIN_NUMBER = UT.PIN_NUMBER WHERE U.RECORD_TYPE = 'LC' --AND ut.TXN_DATE BETWEEN @fromDate AND @toDate GROUP BY U.CUSTOMER HAVING COUNT(T.PIN_NUMBER) > 3 ) y SELECT * FROM #TEMP_SUMMARY SELECT * FROM ( SELECT count(*) RegCount ,[Day] = CONVERT(VARCHAR(10), approveddate, 121) ,'C' CustomerType FROM customerMaster(NOLOCK) WHERE approveddate IS NOT NULL AND ISNULL(approveddate, mobileApprovedDate) BETWEEN DATEADD(D, - 15, GETDATE()) AND GETDATE() GROUP BY CONVERT(VARCHAR(10), approveddate, 121) UNION ALL SELECT count(*) RegCount ,[Day] = CONVERT(VARCHAR(10), mobileApprovedDate, 121) ,'M' CustomerType FROM customerMaster cm INNER JOIN mobile_userRegistration mu(NOLOCK) ON mu.username = cm.email AND cm.customerId = mu.customerId WHERE mobileApprovedDate IS NOT NULL AND mobileApprovedDate BETWEEN DATEADD(D, - 15, GETDATE()) AND GETDATE() AND ISNULL(cm.customerStatus, '') <> 'OTC' GROUP BY CONVERT(VARCHAR(10), mobileApprovedDate, 121) UNION ALL SELECT count(*) RegCount ,[Day] = CONVERT(VARCHAR(10), mobileApprovedDate, 121) ,'A' CustomerType FROM CUSTOMERMASTER cm INNER JOIN mobile_userRegistration mu(NOLOCK) ON mu.username = cm.email AND cm.customerId = mu.customerId WHERE ISNULL(cm.customerStatus, '') = 'OTC' AND mobileApprovedDate BETWEEN DATEADD(D, - 15, GETDATE()) AND GETDATE() AND cm.serviceusedfor = 'CM' GROUP BY CONVERT(VARCHAR(10), mobileApprovedDate, 121) ) x SELECT * FROM ( SELECT DATEPART(YEAR, RT.createdDate) YearId ,LEFT(DATENAME(MONTH, RT.createdDate), 3) month_name ,DATEPART(MONTH, RT.createdDate) MonthId ,count(*) [Month_count] FROM #TXN_TABLE RT GROUP BY DATEPART(YEAR, RT.createdDate) ,LEFT(DATENAME(MONTH, RT.createdDate), 3) ,DATEPART(MONTH, RT.createdDate) ) x ORDER BY YearId ,MonthId ASC SELECT ISNULL(A.sAgentName, B.sAgentName) sAgentName ,ISNULL(A.CurrentMonth, 0) CurrentMonth ,ISNULL(B.PreviousMonth, 0) PreviousMonth FROM ( SELECT count(c.sAgent) CurrentMonth ,c.sAgentName FROM #TXN_TABLE c WHERE ISNULL(c.actAsBranch, '') = 'N' AND c.tranStatus <> 'Cancel' AND C.createdDate1 BETWEEN CONVERT(VARCHAR(10), DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0), 121) AND @toDate GROUP BY sAgentName ) A LEFT JOIN ( SELECT count(p.sAgent) PreviousMonth ,p.sAgentName FROM #TXN_TABLE p WHERE ISNULL(p.actAsBranch, '') = 'N' AND p.tranStatus <> 'Cancel' AND p.createdDate1 BETWEEN @StartDatePrevious AND @EndDatePrevious GROUP BY sAgentName ) B ON a.sAgentName = B.sAgentName ORDER BY CurrentMonth DESC --KYC status SELECT [Head] = CASE WHEN cm.verificationCode IS NULL OR cm.verificationCode = 'NOT_COMPLETED' THEN 'NOT_COMPLETED' ELSE cm.verificationCode END ,[Count] = COUNT('x') --CASE WHEN COUNT('x') > 0 THEN '' + CAST(COUNT('x') AS VARCHAR) + '' ELSE '-' END FROM customerMaster cm WITH (NOLOCK) WHERE cm.verificationCode IS NULL OR cm.verificationCode = 'NOT_COMPLETED' --AND DATEDIFF(DAY, cm.createdDate, GETDATE()) <= 7 GROUP BY CASE WHEN cm.verificationCode IS NULL OR cm.verificationCode = 'NOT_COMPLETED' THEN 'NOT_COMPLETED' ELSE cm.verificationCode END UNION ALL SELECT [Head] = verificationCode ,[Count] = COUNT('x') --CASE WHEN COUNT('x') > 0 THEN '' + CAST(COUNT('x') AS VARCHAR) + '' ELSE '-' END FROM customerMaster cm WITH (NOLOCK) WHERE cm.verificationCode = 'PROCESSING' --AND DATEDIFF(DAY, cm.createdDate, GETDATE()) <= 7 GROUP BY verificationCode UNION ALL SELECT [Head] = verificationCode ,[Count] = COUNT('x') --CASE WHEN COUNT('x') > 0 THEN '' + CAST(COUNT('x') AS VARCHAR) + '' ELSE '-' END FROM customerMaster cm WITH (NOLOCK) WHERE cm.verificationCode = 'COMPLETED' --AND DATEDIFF(DAY, cm.createdDate, GETDATE()) <= 7 GROUP BY verificationCode END END