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

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