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.

176 lines
13 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_PromotionalCampaignVoucher] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. --EXEC proc_PromotionalCampaignVoucher @flag = 'Report',@sDate ='2018-08-01',@tDate ='2018-08-31',@referalCode='9424010802601'
  9. --EXEC proc_PromotionalCampaignVoucher @flag = 'Report_Old',@sDate ='2018-06-01',@tDate ='2018-06-30',@referalCode='9424010758109'
  10. CREATE proc [dbo].[proc_PromotionalCampaignVoucher]
  11. @flag varchar(10),
  12. @sDate varchar(10) = NULL,
  13. @tDate varchar(20) = NULL,
  14. @referalCode varchar(20) = null,
  15. @User varchar(50) = NULL
  16. as
  17. set nocount on;
  18. if @flag = 'Report'
  19. begin
  20. declare @schemeDate date
  21. SET @schemeDate = '2018-05-01'
  22. select customerId,referelCode,SchemeStartDate INTO #REFERALCUSTOMER from customerMaster c(nolock)
  23. where referelCode is not null
  24. and len(referelCode) = 13 and left(referelCode,5) = '94240'
  25. and approvedDate between '2018-04-20' and @tDate+' 23:59:59'
  26. --and SchemeStartDate between @sDate and @tDate
  27. --DELETE FROM #REFERALCUSTOMER WHERE SchemeStartDate NOT BETWEEN @sDate and @tDate+' 23:59:59'
  28. delete r from #REFERALCUSTOMER r
  29. LEFT join VirtualAccountMapping v(nolock) on v.virtualAccNumber = r.referelCode
  30. WHERE V.virtualAccNumber IS NULL
  31. delete from #REFERALCUSTOMER where referelCode = '9424010921362'
  32. SELECT Y.*,R.referelCode into #transaction
  33. FROM (
  34. select distinct customerId,referelCode FROM #REFERALCUSTOMER) R
  35. INNER JOIN(
  36. select s.tranId,t.approvedDate,s.customerId
  37. from tranSenders s(nolock)
  38. inner join remittran t(nolock) on t.id = s.tranId
  39. WHERE T.approvedDate between @sDate and @tDate+' 23:59:59'
  40. and t.transtatus <> 'Cancel'
  41. )Y ON R.customerId = Y.customerId
  42. ---- for first transaction
  43. SELECT min(tranId) tranId,r.customerId into #firstTxn FROM #REFERALCUSTOMER R
  44. INNER JOIN #transaction y ON R.customerId = Y.customerId
  45. where y.approvedDate between @sDate and @tDate+' 23:59:59'
  46. group by r.customerId
  47. if exists(select 'a' from #firstTxn group by customerId having count(1)>1)
  48. begin
  49. exec proc_errorHandler '1','First Txn count can not be duplicate',null
  50. return
  51. end
  52. ALTER TABLE #transaction ADD IsFirstTxn bit
  53. --SELECT * FROM #transaction T
  54. --INNER JOIN #firstTxn F ON F.id = T.id
  55. update t set t.IsFirstTxn = 1 from #transaction T
  56. INNER JOIN #firstTxn F ON F.tranId = T.tranId
  57. delete from #transaction WHERE IsFirstTxn IS NULL
  58. delete t from #transaction t
  59. inner join PromotionalCampaignTxn p(nolock) on p.CustomerId = t.CustomerId
  60. WHERE P.IsFirstTxn = 1
  61. INSERT INTO PromotionalCampaignTxn(TranId,ApprovedDate,CustomerId,referelCode,IsFirstTxn,FirstTxnPay,RestTxnPay,SchemeType,RegdCustomer)
  62. SELECT TranId,ApprovedDate,CustomerId,T.referelCode,IsFirstTxn
  63. ,FirstTxnPay = case when IsFirstTxn = 1 then 10000 else 0 end
  64. ,RestTxnPay = 0,'N',R.CNT
  65. from #transaction T
  66. INNER JOIN (SELECT COUNT(1) CNT,referelCode FROM #REFERALCUSTOMER GROUP BY referelCode) R ON R.referelCode = T.referelCode
  67. select m.firstName [ReferalName],m.idNumber,c.referelCode,m.SchemeStartDate,m.city
  68. ,RegdCustomer = (C.RegdCustomer)
  69. ,[FirstTxn] = SUM(case when IsFirstTxn=1 then 1 else 0 end)
  70. --,[RestTxn] = SUM(case when IsFirstTxn IS NULL then 1 else 0 end)
  71. ,[RestTxn] = 0
  72. ,[NetPayable] = sum(FirstTxnPay),errorCode = 0
  73. ,Country = (select countryName from countryMaster(nolock) where countryId = m.nativeCountry)
  74. from PromotionalCampaignTxn c(nolock)
  75. INNER JOIN customerMaster m(nolock) on m.walletAccountNo = c.referelCode
  76. where
  77. c.ApprovedDate between @sDate and DATEADD(D,1,@tDate)
  78. and c.referelCode = isnull(@referalCode,c.referelCode)
  79. and isfirsttxn = 1 and SchemeType = 'N'
  80. GROUP BY m.firstName,m.idNumber,c.referelCode,m.SchemeStartDate,m.city,m.nativeCountry,C.RegdCustomer
  81. ORDER BY 1
  82. end
  83. if @flag = 'Report_Old'
  84. begin
  85. select customerId,referelCode INTO #REFERALCUSTOMER_OLD from customerMaster c(nolock)
  86. where referelCode is not null
  87. and len(referelCode) = 13 and left(referelCode,5) = '94240'
  88. and approvedDate between '2018-04-01' and '2018-04-30 23:59:59'
  89. delete r from #REFERALCUSTOMER_OLD r
  90. LEFT join VirtualAccountMapping v(nolock) on v.virtualAccNumber = r.referelCode
  91. WHERE V.virtualAccNumber IS NULL
  92. delete from #REFERALCUSTOMER_OLD where referelCode = '9424010921362'
  93. SELECT Y.*,R.referelCode into #transaction_OLD FROM #REFERALCUSTOMER_OLD R
  94. INNER JOIN(
  95. select s.tranId,t.approvedDate,s.customerId
  96. from tranSenders s(nolock)
  97. inner join remittran t(nolock) on t.id = s.tranId
  98. WHERE T.approvedDate between @sDate and @tDate+' 23:59:59'
  99. and t.transtatus <> 'Cancel'
  100. )Y ON R.customerId = Y.customerId
  101. ---- for first transaction
  102. SELECT min(tranId) tranId,r.customerId into #firstTxn_OLD FROM #REFERALCUSTOMER_OLD R
  103. INNER JOIN #transaction_OLD y ON R.customerId = Y.customerId
  104. where y.approvedDate between @sDate and @tDate+' 23:59:59'
  105. group by r.customerId
  106. if exists(select 'a' from #firstTxn_OLD group by customerId having count(1)>1)
  107. begin
  108. exec proc_errorHandler '1','First Txn count can not be duplicate',null
  109. return
  110. end
  111. ALTER TABLE #transaction_OLD ADD IsFirstTxn bit
  112. --SELECT * FROM #transaction T
  113. --INNER JOIN #firstTxn F ON F.id = T.id
  114. update t set t.IsFirstTxn = 1 from #transaction_OLD T
  115. INNER JOIN #firstTxn_OLD F ON F.tranId = T.tranId
  116. delete t from #transaction_OLD t
  117. inner join PromotionalCampaignTxn p(nolock) on p.CustomerId = t.CustomerId
  118. WHERE P.IsFirstTxn = 1
  119. DELETE FROM #transaction_OLD WHERE IsFirstTxn IS NULL
  120. INSERT INTO PromotionalCampaignTxn(TranId,ApprovedDate,CustomerId,referelCode,IsFirstTxn,FirstTxnPay,RestTxnPay,SchemeType,RegdCustomer)
  121. SELECT TranId,ApprovedDate,CustomerId,T.referelCode,IsFirstTxn
  122. ,FirstTxnPay = case when IsFirstTxn = 1 then 10000 else 0 end
  123. ,RestTxnPay = 0,'O',R.CNT
  124. from #transaction_OLD T
  125. INNER JOIN (SELECT COUNT(1) CNT,referelCode FROM #REFERALCUSTOMER_OLD GROUP BY referelCode) R ON R.referelCode = T.referelCode
  126. select m.firstName [ReferalName],m.idNumber,c.referelCode,m.SchemeStartDate,m.city
  127. ,RegdCustomer = (C.RegdCustomer)
  128. ,[FirstTxn] = SUM(case when IsFirstTxn=1 then 1 else 0 end)
  129. --,[RestTxn] = SUM(case when IsFirstTxn IS NULL then 1 else 0 end)
  130. ,[RestTxn] = 0
  131. ,[NetPayable] = sum(FirstTxnPay),errorCode = 0
  132. ,Country = (select countryName from countryMaster(nolock) where countryId = m.nativeCountry)
  133. from PromotionalCampaignTxn c(nolock)
  134. INNER JOIN customerMaster m(nolock) on m.walletAccountNo = c.referelCode
  135. where
  136. c.ApprovedDate between @sDate and DATEADD(D,1,@tDate)
  137. and c.referelCode = isnull(@referalCode,c.referelCode)
  138. and isfirsttxn = 1 and SchemeType = 'O'
  139. GROUP BY m.firstName,m.idNumber,c.referelCode,m.SchemeStartDate,m.city,m.nativeCountry,C.RegdCustomer
  140. ORDER BY 1
  141. end
  142. GO