You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

391 lines
25 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[PROC_GET_DASHBOARD_DATA_V2] Script Date: 12/5/2023 10:21:17 AM ******/
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 '<a href="List.aspx?tranType='+TRANTYPE+'">'+CAST(COUNT('x') AS VARCHAR) +'</a>' 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 * FROM(
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 '<a href="List.aspx?tranType='' + TRANTYPE + ''&kycstatus='' + cm.LawsonCardNo + ''">' + CAST(COUNT('x') AS VARCHAR) + '</a>' 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 '<a href="List.aspx?tranType='' + TRANTYPE + ''&kycstatus='' + cm.LawsonCardNo + ''">' + CAST(COUNT('x') AS VARCHAR) + '</a>' 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 '<a href="PayTranOfacList.aspx">'+CAST(COUNT('x') AS VARCHAR) +'</a>' 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 '<a href="PayTranComplianceList.aspx">'+CAST(COUNT('x') AS VARCHAR) +'</a>' ELSE '-' END
--FROM tranPayCompliance rtc WITH (NOLOCK)
--LEFT JOIN dbo.agentMaster am WITH (NOLOCK) ON rtc.pBranch = am.agentId
--WHERE rtc.approvedDate IS NULL
)x order by x.Head ASC
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
DECLARE @kycNotCompleted INT;
DECLARE @kycProcessing INT;
DECLARE @kycCompleted INT;
SELECT @kycNotCompleted = COUNT('x')
FROM customerMaster cm WITH (NOLOCK)
WHERE
cm.verificationCode IS NULL OR cm.verificationCode = 'NOT_COMPLETED'
GROUP BY
CASE
WHEN cm.verificationCode IS NULL OR cm.verificationCode = 'NOT_COMPLETED' THEN 'NOT_COMPLETED'
ELSE cm.verificationCode
END
SELECT @kycProcessing = COUNT('x')
FROM customerMaster cm WITH (NOLOCK)
WHERE cm.verificationCode = 'PROCESSING'
GROUP BY verificationCode
SELECT @kycCompleted = COUNT('x')
FROM customerMaster cm WITH (NOLOCK)
WHERE cm.verificationCode = 'COMPLETED'
GROUP BY verificationCode
SELECT kycNotCompleted = ISNULL(@kycNotCompleted,0)
,kycProcessing = ISNULL(@kycProcessing,0)
,kycCompleted = ISNULL(@kycCompleted,0)
END
END