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.

306 lines
16 KiB

  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_CustomerPromotionReport] Script Date: 2/15/2024 3:05:29 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER PROC [dbo].[proc_CustomerPromotionReport] @flag VARCHAR(50)
  9. ,@rowId BIGINT = NULL
  10. ,@sourceCustomerId INT = NULL
  11. ,@user VARCHAR(50) = NULL
  12. ,@pageSize VARCHAR(50) = NULL
  13. ,@pageNumber VARCHAR(50) = NULL
  14. ,@sortBy VARCHAR(50) = NULL
  15. ,@sortOrder VARCHAR(50) = NULL
  16. ,@isActive VARCHAR(20) = NULL
  17. ,@userId VARCHAR(100) = NULL
  18. ,@fromDate VARCHAR(30) = NULL
  19. ,@toDate VARCHAR(30) = NULL
  20. AS
  21. SET NOCOUNT ON;
  22. SET XACT_ABORT ON;
  23. DECLARE @table VARCHAR(MAX)
  24. ,@select_field_list VARCHAR(MAX)
  25. ,@extra_field_list VARCHAR(MAX)
  26. ,@sql_filter VARCHAR(MAX)
  27. ,@ACC_NUM VARCHAR(30)
  28. ,@REFERRAL_CODE VARCHAR(30)
  29. ,@errorMsg VARCHAR(30)
  30. -- -- #1526 - Post production fixes for Redeem & Earn , @FLAG = 'customer-by-referral-report'
  31. IF @FLAG = 'customer-promotion-report'
  32. BEGIN
  33. IF OBJECT_ID(N'tempdb..#REGCOUNT') IS NOT NULL
  34. BEGIN
  35. DROP TABLE #REGCOUNT
  36. END
  37. CREATE TABLE #REGCOUNT (
  38. sourceCustomerId INT
  39. ,customerName VARCHAR(150)
  40. ,membershipId VARCHAR(50)
  41. ,regCount INT
  42. ,totalBalance MONEY
  43. ,created_Date DATETIME
  44. )
  45. INSERT INTO #REGCOUNT (
  46. sourceCustomerId
  47. ,customerName
  48. ,regCount
  49. ,membershipId
  50. )
  51. SELECT CM.customerId
  52. ,cm.fullName
  53. ,COUNT(destinationCustomerId)
  54. ,cm.membershipId
  55. FROM Customer_Promotion cp(NOLOCK)
  56. INNER JOIN CustomerMaster cm(NOLOCK) ON cm.customerId = cp.sourceCustomerId
  57. WHERE [status] = 1
  58. AND codeType = 'REGISTRATION'
  59. AND CP.approvedDate BETWEEN @fromDate
  60. AND @toDate + ' 23:59:59'
  61. GROUP BY cm.fullName
  62. ,cm.customerId
  63. ,cm.membershipId
  64. -- update runningBalance
  65. IF OBJECT_ID(N'tempdb..#RUNNINGBALANCE') IS NOT NULL
  66. BEGIN
  67. DROP TABLE #RUNNINGBALANCE
  68. END
  69. CREATE TABLE #RUNNINGBALANCE (
  70. sourceCustomerId INT
  71. ,runningBalance MONEY
  72. )
  73. INSERT INTO #RUNNINGBALANCE
  74. SELECT r.sourceCustomerId
  75. ,isnull(crAmount, 0) - isnull(drAmount, 0)
  76. FROM #REGCOUNT r
  77. LEFT JOIN (
  78. SELECT cm.sourceCustomerId
  79. ,SUM(ISNULL(AMOUNT, 0)) AS drAmount
  80. FROM Customer_Promotion(NOLOCK) cm
  81. WHERE 1 = 1
  82. AND tranType = 'DR'
  83. AND [status] = 1
  84. GROUP BY sourceCustomerId
  85. ) dr ON dr.sourceCustomerId = r.sourceCustomerId
  86. LEFT JOIN (
  87. SELECT cm.sourceCustomerId
  88. ,SUM(ISNULL(AMOUNT, 0)) AS crAmount
  89. FROM Customer_Promotion(NOLOCK) cm
  90. WHERE 1 = 1
  91. AND tranType = 'CR'
  92. AND [status] = 1
  93. GROUP BY sourceCustomerId
  94. ) cr ON cr.sourceCustomerId = r.sourceCustomerId
  95. --UPDATE r SET totalBalance = X.runningBalance , created_Date = X.createdDate
  96. --FROM #REGCOUNT R
  97. --INNER JOIN
  98. -- (
  99. -- SELECT cp.sourceCustomerId,createdDate, CAST(runningBalance AS VARCHAR) runningBalance
  100. -- FROM Customer_Promotion cp
  101. -- --INNER JOIN #REGCOUNT r ON r.sourceCustomerId = cp.sourceCustomerId
  102. -- WHERE createdDate = (SELECT MAX(createdDate) FROM Customer_Promotion cpDate WHERE cp.sourceCustomerId = cpDate.sourceCustomerId)
  103. -- )X ON X.sourceCustomerId = R.sourceCustomerId
  104. UPDATE r
  105. SET created_Date = X.createdDate
  106. ,totalBalance = RB.runningBalance
  107. FROM #REGCOUNT R
  108. INNER JOIN (
  109. SELECT cp.sourceCustomerId
  110. ,createdDate
  111. FROM Customer_Promotion cp
  112. --INNER JOIN #REGCOUNT r ON r.sourceCustomerId = cp.sourceCustomerId
  113. WHERE createdDate = (
  114. SELECT MAX(createdDate)
  115. FROM Customer_Promotion cpDate
  116. WHERE cp.sourceCustomerId = cpDate.sourceCustomerId
  117. )
  118. ) X ON X.sourceCustomerId = R.sourceCustomerId
  119. INNER JOIN #RUNNINGBALANCE RB ON RB.SOURCECUSTOMERID = R.SOURCECUSTOMERID
  120. --select * from #regcount
  121. SELECT ROW_NUMBER() OVER (
  122. ORDER BY CREATED_DATE ASC
  123. ) SN
  124. ,[CUSTOMER] = customerName
  125. ,[MEMBERSHIPID] = membershipId
  126. ,[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>'
  127. FROM #REGCOUNT
  128. EXEC proc_errorHandler '0'
  129. ,'Report has been prepared successfully.'
  130. ,NULL
  131. SELECT 'From Date' head
  132. ,@fromDate VALUE
  133. UNION ALL
  134. SELECT 'To Date' head
  135. ,@toDate VALUE
  136. SELECT 'Customer Promotion Report' title
  137. END
  138. ELSE IF @FLAG = 'customer-promotion-summary'
  139. BEGIN
  140. IF OBJECT_ID('tempdb..#Reward') IS NOT NULL
  141. DROP TABLE #Reward
  142. CREATE TABLE #Reward (
  143. DESTINATION_CUSTOMERID INT
  144. ,REWARD_TYPE VARCHAR(25)
  145. ,REWARD_AMOUNT INT
  146. ,CUSTOMER_NAME VARCHAR(200)
  147. ,CREATED_DATE VARCHAR(10)
  148. ,MEMBERSHIP_ID VARCHAR(50)
  149. )
  150. INSERT INTO #Reward (
  151. DESTINATION_CUSTOMERID
  152. ,REWARD_TYPE
  153. ,REWARD_AMOUNT
  154. ,CREATED_DATE
  155. )
  156. SELECT destinationCustomerId
  157. ,codeType
  158. ,CASE
  159. WHEN trantype = 'DR'
  160. THEN - CAST(ISNULL(AMOUNT, 0) AS INT)
  161. ELSE CAST(ISNULL(AMOUNT, 0) AS INT)
  162. END
  163. ,CONVERT(VARCHAR(10), cp.approvedDate, 121)
  164. FROM Customer_Promotion CP(NOLOCK)
  165. WHERE sourceCustomerId = @sourceCustomerId
  166. AND [STATUS] = 1
  167. AND CP.approvedDate BETWEEN @fromDate
  168. AND @toDate + ' 23:59:59'
  169. UPDATE R
  170. SET CUSTOMER_NAME = ISNULL(fullName, '')
  171. ,MEMBERSHIP_ID = cm.membershipId
  172. FROM #Reward R
  173. INNER JOIN customerMaster CM(NOLOCK) ON R.DESTINATION_CUSTOMERID = customerId
  174. SELECT ROW_NUMBER() OVER (
  175. ORDER BY CREATED_DATE ASC
  176. ) SN
  177. ,[Customer] = CUSTOMER_NAME
  178. ,[MembershipId] = MEMBERSHIP_ID
  179. ,[Created_Date] = CREATED_DATE
  180. ,[Amount] = Reward_Amount
  181. ,[Reward Type] = REWARD_TYPE
  182. FROM #Reward
  183. EXEC proc_errorHandler '0'
  184. ,'Report has been prepared successfully.'
  185. ,NULL
  186. SELECT 'From Date' head
  187. ,@fromDate VALUE
  188. UNION ALL
  189. SELECT 'To Date' head
  190. ,@toDate VALUE
  191. SELECT 'Customer Promotion Summary Report' title
  192. END
  193. ELSE IF @FLAG = 'customer-by-referral-report'
  194. BEGIN
  195. IF OBJECT_ID(N'tempdb..#REFERRAL') IS NOT NULL
  196. BEGIN
  197. DROP TABLE #REFERRAL
  198. END
  199. CREATE TABLE #REFERRAL (
  200. sourceCustomerId INT
  201. ,referralName VARCHAR(150)
  202. ,membershipId VARCHAR(50)
  203. )
  204. INSERT INTO #REFERRAL (
  205. sourceCustomerId
  206. ,referralName
  207. ,membershipId
  208. )
  209. SELECT CM.customerId
  210. ,cm.fullName
  211. ,cm.membershipId
  212. FROM Customer_Promotion cp(NOLOCK)
  213. INNER JOIN CustomerMaster cm(NOLOCK) ON cm.customerId = cp.sourceCustomerId
  214. WHERE [status] = 1
  215. AND codeType = 'REGISTRATION'
  216. AND CP.approvedDate BETWEEN @fromDate
  217. AND @toDate + ' 23:59:59'
  218. GROUP BY cm.customerid
  219. ,cm.fullName
  220. ,cm.membershipId
  221. IF OBJECT_ID(N'tempdb..#CUSTOMER') IS NOT NULL
  222. BEGIN
  223. DROP TABLE #CUSTOMER
  224. END
  225. CREATE TABLE #CUSTOMER (
  226. destinationCustomerId INT
  227. ,customerName VARCHAR(150)
  228. ,membershipId VARCHAR(50)
  229. ,referralCode VARCHAR(50)
  230. ,isExistingCustomer CHAR(1)
  231. ,createdDate DATETIME
  232. ,mobileRegisteredDate DATETIME
  233. )
  234. INSERT INTO #CUSTOMER
  235. SELECT CM.customerId
  236. ,cm.fullName
  237. ,cm.membershipId
  238. ,CM.referelCode
  239. ,isexistingcustomer
  240. ,CM.createdDate
  241. ,mobileApprovedDate
  242. FROM Customer_Promotion cp(NOLOCK)
  243. INNER JOIN CustomerMaster cm(NOLOCK) ON cm.customerId = cp.destinationCustomerId
  244. WHERE [status] = 1
  245. AND codeType = 'REGISTRATION'
  246. AND CP.approvedDate BETWEEN @fromDate
  247. AND @toDate + ' 23:59:59'
  248. SELECT ROW_NUMBER() OVER (
  249. ORDER BY mobileRegisteredDate DESC
  250. ) SN
  251. ,[Referral MembershipId] = r.membershipId
  252. ,[Referral Name] = r.referralName
  253. ,[Customer MembershipId] = c.membershipId
  254. ,[Customer Name] = c.customerName
  255. --, [Existing Customer] = CASE WHEN ISNULL(c.isExistingCustomer , 1) = 1 THEN 'Y' ELSE 'N' END
  256. ,[Created Date] = c.createdDate
  257. ,[Mobile Registered Date] = c.mobileRegisteredDate
  258. FROM #REFERRAL R
  259. INNER JOIN #CUSTOMER C ON R.MEMBERSHIPID = C.referralCode
  260. EXEC proc_errorHandler '0'
  261. ,'Report has been prepared successfully.'
  262. ,NULL
  263. SELECT 'From Date' head
  264. ,@fromDate VALUE
  265. UNION ALL
  266. SELECT 'To Date' head
  267. ,@toDate VALUE
  268. SELECT 'Redeem & Earn Report Report' title
  269. END