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.
311 lines
16 KiB
311 lines
16 KiB
USE [FastMoneyPro_Remit]
|
|
GO
|
|
|
|
/****** Object: StoredProcedure [dbo].[proc_CustomerPromotionReport] Script Date: 1/17/2024 3:18:30 PM ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
ALTER PROC [dbo].[proc_CustomerPromotionReport] @flag VARCHAR(50)
|
|
,@rowId BIGINT = NULL
|
|
,@sourceCustomerId INT = NULL
|
|
,@user VARCHAR(50) = NULL
|
|
,@pageSize VARCHAR(50) = NULL
|
|
,@pageNumber VARCHAR(50) = NULL
|
|
,@sortBy VARCHAR(50) = NULL
|
|
,@sortOrder VARCHAR(50) = NULL
|
|
,@isActive VARCHAR(20) = NULL
|
|
,@userId VARCHAR(100) = NULL
|
|
,@fromDate VARCHAR(30) = NULL
|
|
,@toDate VARCHAR(30) = NULL
|
|
AS
|
|
SET NOCOUNT ON;
|
|
SET XACT_ABORT ON;
|
|
|
|
DECLARE @table VARCHAR(MAX)
|
|
,@select_field_list VARCHAR(MAX)
|
|
,@extra_field_list VARCHAR(MAX)
|
|
,@sql_filter VARCHAR(MAX)
|
|
,@ACC_NUM VARCHAR(30)
|
|
,@REFERRAL_CODE VARCHAR(30)
|
|
,@errorMsg VARCHAR(30)
|
|
|
|
-- -- #1526 - Post production fixes for Redeem & Earn , @FLAG = 'customer-by-referral-report'
|
|
-- #24829 change in @FLAG = 'customer-promotion-report' to get correct redeem report
|
|
|
|
IF @FLAG = 'customer-promotion-report'
|
|
BEGIN
|
|
IF OBJECT_ID(N'tempdb..#REGCOUNT') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE #REGCOUNT
|
|
END
|
|
|
|
CREATE TABLE #REGCOUNT (
|
|
sourceCustomerId INT
|
|
,customerName VARCHAR(150)
|
|
,membershipId VARCHAR(50)
|
|
,regCount INT
|
|
,totalBalance MONEY
|
|
,created_Date DATETIME
|
|
)
|
|
|
|
INSERT INTO #REGCOUNT (
|
|
sourceCustomerId
|
|
,customerName
|
|
,regCount
|
|
,membershipId
|
|
)
|
|
SELECT CM.customerId
|
|
,cm.fullName
|
|
,COUNT(destinationCustomerId)
|
|
,cm.membershipId
|
|
FROM Customer_Promotion cp(NOLOCK)
|
|
INNER JOIN CustomerMaster cm(NOLOCK) ON cm.customerId = cp.sourceCustomerId
|
|
WHERE [status] = 1 --AND codeType = 'REGISTRATION'
|
|
AND CP.approvedDate BETWEEN @fromDate
|
|
AND @toDate + ' 23:59:59'
|
|
GROUP BY cm.fullName
|
|
,cm.customerId
|
|
,cm.membershipId
|
|
|
|
-- update runningBalance
|
|
IF OBJECT_ID(N'tempdb..#RUNNINGBALANCE') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE #RUNNINGBALANCE
|
|
END
|
|
|
|
CREATE TABLE #RUNNINGBALANCE (
|
|
sourceCustomerId INT
|
|
,runningBalance MONEY
|
|
)
|
|
|
|
INSERT INTO #RUNNINGBALANCE
|
|
SELECT r.sourceCustomerId
|
|
,isnull(crAmount, 0) - isnull(drAmount, 0)
|
|
FROM #REGCOUNT r
|
|
LEFT JOIN (
|
|
SELECT cm.sourceCustomerId
|
|
,SUM(ISNULL(AMOUNT, 0)) AS drAmount
|
|
FROM Customer_Promotion(NOLOCK) cm
|
|
WHERE 1 = 1
|
|
AND tranType = 'DR'
|
|
AND [status] = 1
|
|
AND cm.approvedDate BETWEEN @fromDate
|
|
AND @toDate + ' 23:59:59'
|
|
GROUP BY sourceCustomerId
|
|
) dr ON dr.sourceCustomerId = r.sourceCustomerId
|
|
LEFT JOIN (
|
|
SELECT cm.sourceCustomerId
|
|
,SUM(ISNULL(AMOUNT, 0)) AS crAmount
|
|
FROM Customer_Promotion(NOLOCK) cm
|
|
WHERE 1 = 1
|
|
AND tranType = 'CR'
|
|
AND [status] = 1
|
|
AND cm.approvedDate BETWEEN @fromDate
|
|
AND @toDate + ' 23:59:59'
|
|
GROUP BY sourceCustomerId
|
|
) cr ON cr.sourceCustomerId = r.sourceCustomerId
|
|
|
|
--UPDATE r SET totalBalance = X.runningBalance , created_Date = X.createdDate
|
|
--FROM #REGCOUNT R
|
|
--INNER JOIN
|
|
-- (
|
|
-- SELECT cp.sourceCustomerId,createdDate, CAST(runningBalance AS VARCHAR) runningBalance
|
|
-- FROM Customer_Promotion cp
|
|
-- --INNER JOIN #REGCOUNT r ON r.sourceCustomerId = cp.sourceCustomerId
|
|
-- WHERE createdDate = (SELECT MAX(createdDate) FROM Customer_Promotion cpDate WHERE cp.sourceCustomerId = cpDate.sourceCustomerId)
|
|
-- )X ON X.sourceCustomerId = R.sourceCustomerId
|
|
UPDATE r
|
|
SET created_Date = X.createdDate
|
|
,totalBalance = RB.runningBalance
|
|
FROM #REGCOUNT R
|
|
INNER JOIN (
|
|
SELECT cp.sourceCustomerId
|
|
,createdDate
|
|
FROM Customer_Promotion cp
|
|
--INNER JOIN #REGCOUNT r ON r.sourceCustomerId = cp.sourceCustomerId
|
|
WHERE createdDate = (
|
|
SELECT MAX(createdDate)
|
|
FROM Customer_Promotion cpDate
|
|
WHERE cp.sourceCustomerId = cpDate.sourceCustomerId
|
|
)
|
|
) X ON X.sourceCustomerId = R.sourceCustomerId
|
|
INNER JOIN #RUNNINGBALANCE RB ON RB.SOURCECUSTOMERID = R.SOURCECUSTOMERID
|
|
|
|
--select * from #regcount
|
|
SELECT ROW_NUMBER() OVER (
|
|
ORDER BY CREATED_DATE ASC
|
|
) SN
|
|
,[CUSTOMER] = customerName
|
|
,[MEMBERSHIPID] = membershipId
|
|
,[REWARD POINTS] = '<a href="javascript:void(0)" onclick="OpenInNewWindow(''/RemittanceSystem/RemittanceReports/Reports.aspx?reportName=promotionsummaryreport&fromDate=' + @fromDate + '&toDate=' + @toDate + '&sourceCustomerId=' + CAST(sourceCustomerId AS VARCHAR) + ''');">' + CAST(ISNULL(totalBalance, 0) AS VARCHAR) + '</a>'
|
|
FROM #REGCOUNT
|
|
|
|
EXEC proc_errorHandler '0'
|
|
,'Report has been prepared successfully.'
|
|
,NULL
|
|
|
|
SELECT 'From Date' head
|
|
,@fromDate VALUE
|
|
|
|
UNION ALL
|
|
|
|
SELECT 'To Date' head
|
|
,@toDate VALUE
|
|
|
|
SELECT 'Customer Promotion Report' title
|
|
END
|
|
ELSE IF @FLAG = 'customer-promotion-summary'
|
|
BEGIN
|
|
IF OBJECT_ID('tempdb..#Reward') IS NOT NULL
|
|
DROP TABLE #Reward
|
|
|
|
CREATE TABLE #Reward (
|
|
DESTINATION_CUSTOMERID INT
|
|
,REWARD_TYPE VARCHAR(25)
|
|
,REWARD_AMOUNT INT
|
|
,CUSTOMER_NAME VARCHAR(200)
|
|
,CREATED_DATE VARCHAR(10)
|
|
,MEMBERSHIP_ID VARCHAR(50)
|
|
)
|
|
|
|
INSERT INTO #Reward (
|
|
DESTINATION_CUSTOMERID
|
|
,REWARD_TYPE
|
|
,REWARD_AMOUNT
|
|
,CREATED_DATE
|
|
)
|
|
SELECT destinationCustomerId
|
|
,codeType
|
|
,CASE
|
|
WHEN trantype = 'DR'
|
|
THEN - CAST(ISNULL(AMOUNT, 0) AS INT)
|
|
ELSE CAST(ISNULL(AMOUNT, 0) AS INT)
|
|
END
|
|
,CONVERT(VARCHAR(10), cp.approvedDate, 121)
|
|
FROM Customer_Promotion CP(NOLOCK)
|
|
WHERE sourceCustomerId = @sourceCustomerId
|
|
AND [STATUS] = 1
|
|
AND CP.approvedDate BETWEEN @fromDate
|
|
AND @toDate + ' 23:59:59'
|
|
|
|
UPDATE R
|
|
SET CUSTOMER_NAME = ISNULL(fullName, '')
|
|
,MEMBERSHIP_ID = cm.membershipId
|
|
FROM #Reward R
|
|
INNER JOIN customerMaster CM(NOLOCK) ON R.DESTINATION_CUSTOMERID = customerId
|
|
|
|
SELECT ROW_NUMBER() OVER (
|
|
ORDER BY CREATED_DATE ASC
|
|
) SN
|
|
,[Customer] = CUSTOMER_NAME
|
|
,[MembershipId] = MEMBERSHIP_ID
|
|
,[Created_Date] = CREATED_DATE
|
|
,[Amount] = Reward_Amount
|
|
,[Reward Type] = REWARD_TYPE
|
|
FROM #Reward
|
|
|
|
EXEC proc_errorHandler '0'
|
|
,'Report has been prepared successfully.'
|
|
,NULL
|
|
|
|
SELECT 'From Date' head
|
|
,@fromDate VALUE
|
|
|
|
UNION ALL
|
|
|
|
SELECT 'To Date' head
|
|
,@toDate VALUE
|
|
|
|
SELECT 'Customer Promotion Summary Report' title
|
|
END
|
|
ELSE IF @FLAG = 'customer-by-referral-report'
|
|
BEGIN
|
|
IF OBJECT_ID(N'tempdb..#REFERRAL') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE #REFERRAL
|
|
END
|
|
|
|
CREATE TABLE #REFERRAL (
|
|
sourceCustomerId INT
|
|
,referralName VARCHAR(150)
|
|
,membershipId VARCHAR(50)
|
|
)
|
|
|
|
INSERT INTO #REFERRAL (
|
|
sourceCustomerId
|
|
,referralName
|
|
,membershipId
|
|
)
|
|
SELECT CM.customerId
|
|
,cm.fullName
|
|
,cm.membershipId
|
|
FROM Customer_Promotion cp(NOLOCK)
|
|
INNER JOIN CustomerMaster cm(NOLOCK) ON cm.customerId = cp.sourceCustomerId
|
|
WHERE [status] = 1
|
|
AND codeType = 'REGISTRATION'
|
|
AND CP.approvedDate BETWEEN @fromDate
|
|
AND @toDate + ' 23:59:59'
|
|
GROUP BY cm.customerid
|
|
,cm.fullName
|
|
,cm.membershipId
|
|
|
|
IF OBJECT_ID(N'tempdb..#CUSTOMER') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE #CUSTOMER
|
|
END
|
|
|
|
CREATE TABLE #CUSTOMER (
|
|
destinationCustomerId INT
|
|
,customerName VARCHAR(150)
|
|
,membershipId VARCHAR(50)
|
|
,referralCode VARCHAR(50)
|
|
,isExistingCustomer CHAR(1)
|
|
,createdDate DATETIME
|
|
,mobileRegisteredDate DATETIME
|
|
)
|
|
|
|
INSERT INTO #CUSTOMER
|
|
SELECT CM.customerId
|
|
,cm.fullName
|
|
,cm.membershipId
|
|
,CM.referelCode
|
|
,isexistingcustomer
|
|
,CM.createdDate
|
|
,mobileApprovedDate
|
|
FROM Customer_Promotion cp(NOLOCK)
|
|
INNER JOIN CustomerMaster cm(NOLOCK) ON cm.customerId = cp.destinationCustomerId
|
|
WHERE [status] = 1
|
|
AND codeType = 'REGISTRATION'
|
|
AND CP.approvedDate BETWEEN @fromDate
|
|
AND @toDate + ' 23:59:59'
|
|
|
|
SELECT ROW_NUMBER() OVER (
|
|
ORDER BY mobileRegisteredDate DESC
|
|
) SN
|
|
,[Referral MembershipId] = r.membershipId
|
|
,[Referral Name] = r.referralName
|
|
,[Customer MembershipId] = c.membershipId
|
|
,[Customer Name] = c.customerName
|
|
--, [Existing Customer] = CASE WHEN ISNULL(c.isExistingCustomer , 1) = 1 THEN 'Y' ELSE 'N' END
|
|
,[Created Date] = c.createdDate
|
|
,[Mobile Registered Date] = c.mobileRegisteredDate
|
|
FROM #REFERRAL R
|
|
INNER JOIN #CUSTOMER C ON R.MEMBERSHIPID = C.referralCode
|
|
|
|
EXEC proc_errorHandler '0'
|
|
,'Report has been prepared successfully.'
|
|
,NULL
|
|
|
|
SELECT 'From Date' head
|
|
,@fromDate VALUE
|
|
|
|
UNION ALL
|
|
|
|
SELECT 'To Date' head
|
|
,@toDate VALUE
|
|
|
|
SELECT 'Redeem & Earn Report Report' title
|
|
END
|