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.

264 lines
16 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_idRuleDetail] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE proc [dbo].[proc_idRuleDetail]
  9. @user VARCHAR(50) = NULL
  10. ,@tranId BIGINT = NULL
  11. ,@tAmt MONEY = NULL
  12. ,@senId INT = NULL
  13. ,@masterId INT = NULL
  14. ,@paymentMethod INT = NULL
  15. ,@checkingFor CHAR(1) = NULL
  16. ,@agentRefId VARCHAR(50) = NULL
  17. ,@senderId VARCHAR(50) = NULL
  18. ,@senderMemId VARCHAR(30) = NULL
  19. ,@senderName VARCHAR(200) = NULL
  20. ,@senderMobile VARCHAR(50) = NULL
  21. ,@isOnlineTxn CHAR(1) = NULL
  22. ,@collMode VARCHAR(50) = NULL
  23. ,@result VARCHAR(MAX) = NULL OUTPUT
  24. AS
  25. SET NOCOUNT ON
  26. BEGIN TRY
  27. DECLARE
  28. @sHub INT
  29. ,@sCountry INT
  30. ,@sAgent INT
  31. ,@sZip INT
  32. ,@sCustType INT
  33. ,@sState INT
  34. ,@sGroup INT
  35. ,@rHub INT
  36. ,@rAgent INT
  37. ,@rZip INT
  38. ,@rCustType INT
  39. ,@rGroup INT
  40. IF @senderId IS NULL AND @senderMobile IS NULL
  41. BEGIN
  42. RETURN
  43. END
  44. IF ISNULL(@masterId, 0) = 0
  45. RETURN
  46. CREATE TABLE #tempcisTran(id BIGINT, sBranch INT, tAmt MONEY, sIdNumber VARCHAR(50), senderName VARCHAR(200), sMobile VARCHAR(50),
  47. approvedDate DATETIME, createdDate DATETIME, tranStatus VARCHAR(20), collMode VARCHAR(50))
  48. --IF @senId IS NOT NULL
  49. -- SELECT @sCustType = customerType FROM customers WITH(NOLOCK) WHERE customerId = @senId
  50. DECLARE
  51. @amount MONEY
  52. ,@tranCount INT
  53. ,@period INT
  54. ,@nextAction CHAR(1)
  55. ,@txnAction CHAR(1)
  56. ,@denyTxn CHAR(1)
  57. -->>Get Sender and Receiver Detail
  58. IF @senId IS NOT NULL
  59. BEGIN
  60. SELECT
  61. @senderId = cust.citizenshipNo
  62. ,@senderMemId = membershipId
  63. ,@senderName = firstName + ISNULL(' ' + middleName, '') + ISNULL(' ' + LastName, '')
  64. ,@senderMobile = mobile
  65. FROM customerMaster cust WITH(NOLOCK)
  66. WHERE cust.customerId = @senId
  67. END
  68. DECLARE
  69. @sql VARCHAR(MAX)
  70. ,@sqlSen VARCHAR(MAX) = ''
  71. ,@sqlSenTran VARCHAR(MAX) = ''
  72. ,@sqlTrn VARCHAR(MAX) = ''
  73. CREATE TABLE #tempcisCriteria(rowId INT IDENTITY(1,1), criteria INT)
  74. INSERT #tempcisCriteria(criteria)
  75. SELECT '5000' UNION
  76. SELECT '5001' UNION
  77. SELECT '5002'
  78. --SELECT DISTINCT criteria FROM cisDetailRec cdr WHERE cdr.cisMasterId = @masterId AND (paymentMode = @paymentMethod OR paymentMode IS NULL) AND ISNULL(isEnable, 'N') = 'Y'
  79. --3. Construct String Query
  80. DECLARE @totalRows INT, @count INT, @criteria INT
  81. SET @count = 1
  82. SELECT @totalRows = COUNT(*) FROM #tempcisCriteria
  83. SET @sqlSen = ' AND ('
  84. SET @sqlSenTran = ' AND ('
  85. WHILE(@count <= @totalRows)
  86. BEGIN
  87. SELECT @criteria = criteria FROM #tempcisCriteria WHERE rowId = @count
  88. IF((@criteria = 5000) AND ISNULL(@senderId,'') <> '')
  89. BEGIN
  90. SET @sqlSen = @sqlSen + ' idNumber = ''' + ISNULL(@senderId, '-') + ''' OR'
  91. SET @sqlSenTran = @sqlSenTran + ' sIdNumber = ''' + ISNULL(@senderId, '-') + ''' OR'
  92. END
  93. --ELSE IF((@criteria = 5001) AND ISNULL(@senderName, '') <> '')
  94. -- SET @sqlTrn = @sqlTrn + ' AND trn.senderName = ''' + ISNULL(@senderName, '') + ''''
  95. ELSE IF((@criteria = 5002) AND ISNULL(@senderMobile, '') <> '')
  96. BEGIN
  97. SET @sqlSen = @sqlSen + ' mobile = ''' + ISNULL(@senderMobile, '') + ''' OR'
  98. SET @sqlSenTran = @sqlSenTran + ' sMobile = ''' + ISNULL(@senderMobile, '') + ''' OR'
  99. END
  100. SET @count = @count + 1
  101. END
  102. SET @sqlSen = LEFT(@sqlSen, LEN(@sqlSen) - 2) + ')'
  103. SET @sqlSenTran = LEFT(@sqlSenTran, LEN(@sqlSenTran) - 2) + ')'
  104. DECLARE @cutOffDate VARCHAR(10) = CONVERT(VARCHAR, DATEADD(Day,-45, GETDATE()), 101)
  105. SET @sql = '
  106. SELECT
  107. trn.id
  108. ,trn.sBranch
  109. ,trn.tAmt
  110. ,T.sIdNumber
  111. ,trn.senderName
  112. ,T.sMobile
  113. ,trn.approvedDate
  114. ,trn.createdDate
  115. ,trn.tranStatus
  116. ,trn.collMode
  117. FROM vwRemitTran trn WITH(NOLOCK)
  118. INNER JOIN
  119. (
  120. SELECT
  121. tranId
  122. ,sIdNumber = idNumber
  123. ,sMobile = mobile
  124. FROM vwTranSenders WITH(NOLOCK)
  125. WHERE 1=1 '
  126. + @sqlSen +
  127. '
  128. )T ON trn.id = T.tranId
  129. WHERE tranStatus NOT LIKE ''Cancel%''
  130. AND ControlNo Not Like ''OIII%'' ' + @sqlTrn + ' '+ @sqlSenTran +'
  131. AND ISNULL(approvedDate, createdDate) > '' ' + @cutOffDate + ''''
  132. --PRINT @SQL
  133. INSERT INTO #tempcisTran
  134. EXEC (@sql)
  135. SET @sql = ''
  136. IF @checkingFor = 'v'
  137. BEGIN
  138. DECLARE @sBranch INT
  139. SELECT @sBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
  140. INSERT INTO #tempcisTran(id, sBranch, tAmt, sIdNumber, senderName, sMobile, createdDate, tranStatus, collMode)
  141. SELECT 0, @sBranch, @tAmt, @senderId, @senderName, @senderMobile, dbo.FNADateFormatTZ(GETDATE(), @user), 'Payment', @collMode
  142. END
  143. DECLARE @today DATETIME = CAST(CONVERT(VARCHAR,GETDATE(),101) AS DATETIME)
  144. CREATE TABLE #tempcisQuery(rowId INT IDENTITY(1,1), cisDetailId INT, query VARCHAR(MAX))
  145. INSERT #tempcisQuery(cisDetailId, query)
  146. SELECT
  147. cisDetailId
  148. ,query = 'SELECT ' + CAST(cisDetailId AS VARCHAR)+ ', SUM(ISNULL(tAmt,0)) ' +
  149. CASE
  150. WHEN ISNULL(condition,4600) = 4600 THEN ' ,COUNT(trn.id)' --4600 - Aggregate Rule
  151. WHEN condition = 4602 THEN ' ,COUNT(DISTINCT trn.sIdNumber)' --4602 - Multiple Beneficiary(Same Sender)
  152. END
  153. +','+ CAST(criteria AS VARCHAR) +'AS criteria'+
  154. ' FROM #tempcisTran trn WITH(NOLOCK)
  155. WHERE tranStatus NOT LIKE ''%Cancel%'' AND ISNULL(approvedDate, createdDate) BETWEEN
  156. '''
  157. +
  158. CASE WHEN ISNULL(period,0) = 0 THEN '1900-01-01' ELSE CONVERT(VARCHAR, DATEADD(D, -(period-1), @today), 101) END
  159. + ''' AND '''
  160. + CASE WHEN ISNULL(period,0) = 0 THEN '2100-12-31' ELSE CONVERT(VARCHAR, GETDATE(), 101) + ' 23:59:59:998' END
  161. + ''''
  162. +
  163. CASE WHEN collModeDesc IS NOT NULL THEN ' AND trn.collMode = ''' + collModeDesc + '''' ELSE '' END
  164. +
  165. CASE
  166. WHEN criteria = 5000 THEN ' AND trn.sIdNumber = ''' + ISNULL(@senderId, '') + ''' GROUP BY trn.sIdNumber'
  167. WHEN criteria = 5001 THEN ' AND trn.senderName = ''' + ISNULL(@senderName, '') + ''' GROUP BY trn.senderName'
  168. WHEN criteria = 5002 THEN ' AND trn.sMobile = ''' + ISNULL(@senderMobile, '') + ''' GROUP BY trn.sMobile'
  169. END
  170. +
  171. ' HAVING (ISNULL(SUM(tAmt), 0)) >='+CAST(ISNULL(amount,0) AS VARCHAR)
  172. +
  173. CASE
  174. WHEN ISNULL(condition,4600) = 4600 THEN ' AND COUNT(trn.id) >= ' + CAST(tranCount AS VARCHAR)
  175. WHEN condition = 4602 THEN ' AND COUNT(DISTINCT trn.sIdNumber) >= ' + CAST(tranCount AS VARCHAR)
  176. ELSE ' '
  177. END
  178. +
  179. ' UNION ALL'
  180. FROM
  181. (
  182. SELECT
  183. cisDetailId
  184. ,cisMasterId
  185. ,condition
  186. ,collMode
  187. ,collModeDesc = sdv.detailTitle
  188. ,paymentMode
  189. ,ISNULL(tranCount,0) tranCount
  190. ,amount
  191. ,period
  192. ,criteria
  193. FROM cisDetail cdr WITH(NOLOCK)
  194. LEFT JOIN dbo.staticDataValue sdv WITH(NOLOCK) ON cdr.collMode = sdv.valueId
  195. ,#tempcisCriteria
  196. WHERE cisMasterId = @masterId
  197. AND (paymentMode = @paymentMethod OR paymentMode IS NULL)
  198. AND ISNULL(isEnable, 'N') = 'Y'
  199. ) X
  200. SELECT @totalRows = COUNT(*) FROM #tempcisQuery
  201. UPDATE #tempcisQuery
  202. SET query = LEFT(query, LEN(query) - 9)
  203. WHERE rowId = @totalRows
  204. SELECT @sql = COALESCE(@sql + ' ', '') + query FROM #tempcisQuery
  205. --4. String Query Execution-----------------------------------------------------------------------------------------------------
  206. CREATE TABLE #tempcisResult(rowId INT IDENTITY(1,1), cisDetailId INT, Amount MONEY,TxnCount INT,criteria VARCHAR(25))
  207. INSERT #tempcisResult(cisDetailId, Amount,TxnCount,criteria)
  208. EXEC (@sql)
  209. --------------------------------------------------------------------------------------------------------------------------------
  210. --SELECT * FROM #tempcisResult
  211. SELECT @result = ISNULL(@result+',','') + CAST(cisDetailId AS VARCHAR(20)) FROM #tempcisResult
  212. END TRY
  213. BEGIN CATCH
  214. SELECT @result = ERROR_MESSAGE()
  215. END CATCH
  216. GO