USE [FastMoneyPro_Remit] GO /****** Object: StoredProcedure [dbo].[proc_CustomerPromotionReport] Script Date: 2/15/2024 3:05:29 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' 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 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 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] = '' + CAST(ISNULL(totalBalance, 0) AS VARCHAR) + '' 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