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.

256 lines
9.3 KiB

1 year ago
  1. USE [FastMoneyPro_remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_online_SendApprove] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_online_SendApprove]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_online_SendApprove] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. alter PROC [dbo].[proc_online_SendApprove] (
  12. @flag VARCHAR(50)
  13. ,@user VARCHAR(30) = NULL
  14. ,@controlNo VARCHAR(50) = NULL
  15. --,@mrn VARCHAR(50) = NULL
  16. ,@id VARCHAR(50) = NULL
  17. ,@detailVal VARCHAR(max) = NULL
  18. ,@strPaymentType VARCHAR(50) = NULL
  19. ,@fltAmount VARCHAR(50) = NULL
  20. ,@intStatus VARCHAR(200) = NULL
  21. ,@rfName VARCHAR(100) = NULL
  22. ,@sIdType VARCHAR(100) =NULL
  23. ,@sIdNo VARCHAR(100) =NULL
  24. ,@sMobile VARCHAR(50) = NULL
  25. ,@sCountry VARCHAR(100) = NULL
  26. --,@statusSofort VARCHAR(200) = NULL
  27. --,@statusReason VARCHAR(200) = NULL
  28. --,@merchantSig VARCHAR(200) = NULL
  29. --,@SofoTxnId VARCHAR(50) = NULL
  30. ,@BankName VARCHAR(200) = NULL
  31. ,@tranId varchar(50) = NULL
  32. ,@senderRealName VARCHAR(200) = NULL
  33. ,@agentRefId VARCHAR(50) = NULL
  34. ,@postCodeResponse VARCHAR(50) = NULL
  35. ,@addressResponse VARCHAR(50) = NULL
  36. ,@voucherDetails xml = null
  37. )
  38. AS
  39. BEGIN TRY
  40. SET NOCOUNT ON;
  41. SET XACT_ABORT ON;
  42. DECLARE
  43. @pinEncrypted VARCHAR(50) = dbo.FNAEncryptString(@controlNo)
  44. ,@createdBy VARCHAR(50)
  45. ,@customerStatus VARCHAR(20)
  46. DECLARE @pCountry varchar(50),@deliveryMethod VARCHAR(30), @cAmt MONEY, @pBank INT, @pBankName varchar(100), @pAgent INT, @pAgentName varchar(100)
  47. DECLARE @txnUser VARCHAR(50) = 'onlineuser'
  48. DECLARE @controlNoEncrypted VARCHAR(20)
  49. declare @tranStatus varchar(20)
  50. DECLARE @receiverOfacRes VARCHAR(MAX),@ofacRes VARCHAR(MAX),@ofacReason VARCHAR(MAX), @senderName VARCHAR(200), @receiverName VARCHAR(200),
  51. @senderId BIGINT, @receiverId BIGINT, @sBranch INT, @pBranch INT, @sCountryId INT, @pCountryId INT, @deliveryMethodId INT, @tAmt MONEY,
  52. @accountNo VARCHAR(100), @rMobile VARCHAR(50), @agentSessionId VARCHAR(100)
  53. DECLARE @result VARCHAR(MAX),@sAgent int
  54. DECLARE @csMasterId INT, @complianceRes VARCHAR(20), @totalRows INT, @count INT, @compFinalRes VARCHAR(20)
  55. DECLARE @csMasterRec TABLE (rowId INT IDENTITY(1,1), masterId INT)
  56. IF @flag = 'updateOnlineTxn'
  57. BEGIN
  58. SELECT
  59. @customerStatus = CASE WHEN ISNULL(customerStatus, 'P') = 'P' THEN 'PendingUser' ELSE 'VerifiedUser' END
  60. ,@pCountry = r.pCountry
  61. ,@deliveryMethod = paymentMethod, @pBank = pBank, @pBankName = pBankName
  62. ,@cAmt = r.cAmt
  63. ,@senderId = c.customerId
  64. FROM dbo.customerMaster c WITH(NOLOCK)
  65. INNER JOIN remitTranTempOnline r ON r.createdBy = c.email AND ISNULL(c.onlineUser,'N')='Y'
  66. WHERE r.id = @id
  67. IF @intStatus = '1'
  68. BEGIN
  69. -->>Start:OFAC/Compliance Checking
  70. SELECT
  71. @controlNoEncrypted = controlNo
  72. ,@controlNo = dbo.FNADecryptString(controlNo)
  73. ,@senderName = senderName, @receiverName = receiverName, @sBranch = sBranch, @pBranch = pBranch
  74. ,@sCountryId = (SELECT countryId FROM countryMaster WITH(NOLOCK) WHERE countryName = sCountry)
  75. ,@pCountryId = (SELECT countryId FROM countryMaster WITH(NOLOCK) WHERE countryName = pCountry)
  76. ,@deliveryMethodId = (SELECT serviceTypeId FROM serviceTypeMaster WITH(NOLOCK) WHERE typeTitle = paymentMethod)
  77. ,@tAmt = tAmt
  78. ,@accountNo = accountNo
  79. ,@sAgent = sAgent
  80. ,@agentRefId = promotionCode
  81. FROM remitTranTempOnline WITH(NOLOCK)
  82. WHERE id = @id
  83. SELECT @senderId = customerId FROM tranSendersTempOnline WITH(NOLOCK) WHERE tranId = @id
  84. SELECT @receiverId = customerId, @rMobile = mobile FROM tranReceiversTempOnline WITH(NOLOCK) WHERE tranId = @id
  85. SET @agentSessionId = NEWID()
  86. EXEC proc_ofacTracker @flag = 't', @name = @senderName, @Result = @ofacRes OUTPUT
  87. EXEC proc_ofacTracker @flag = 't', @name = @receiverName, @Result = @receiverOfacRes OUTPUT
  88. IF ISNULL(@ofacRes, '') <> ''
  89. BEGIN
  90. SET @ofacReason = 'Matched by sender name'
  91. END
  92. IF ISNULL(@receiverOfacRes, '') <> ''
  93. BEGIN
  94. SET @ofacRes = ISNULL(@ofacRes + ',' + @receiverOfacRes, '' + @receiverOfacRes)
  95. SET @ofacReason = 'Matched by receiver name'
  96. END
  97. IF ISNULL(@ofacRes, '') <> '' AND ISNULL(@receiverOfacRes, '') <> ''
  98. BEGIN
  99. SET @ofacReason = 'Matched by both sender name and receiver name'
  100. END
  101. SELECT @sCountry = countryName FROM dbo.countryMaster WHERE countryId = @sCountryId
  102. BEGIN TRANSACTION
  103. DECLARE
  104. @msg VARCHAR(MAX)
  105. ,@complienceMessage varchar(1000) = NULL
  106. ,@shortMsg varchar(100) = NULL
  107. ,@complienceErrorCode TINYINT = NULL
  108. ,@complianceRuleId INT = NULL
  109. EXEC [proc_complianceRuleDetail]
  110. @user = @user
  111. ,@sIdType = @sIdType
  112. ,@sIdNo = @sIdNo
  113. ,@receiverName = @rfName
  114. ,@cAmt = @cAmt
  115. ,@country = @sCountry
  116. ,@message = @complienceMessage OUTPUT
  117. ,@shortMessage = @shortMsg OUTPUT
  118. ,@errCode = @complienceErrorCode OUTPUT
  119. ,@ruleId = @complianceRuleId OUTPUT
  120. IF(@complienceErrorCode <> 0)
  121. BEGIN
  122. IF @@TRANCOUNT > 0
  123. COMMIT TRANSACTION
  124. IF(@complienceErrorCode = 2)
  125. BEGIN
  126. INSERT remitTranComplianceTemp(csDetailTranId, matchTranId, agentRefId)
  127. SELECT @complianceRuleId, NULL, @agentRefId
  128. END
  129. --IF(@complienceErrorCode = 1)
  130. --BEGIN
  131. -- SELECT 101 errorCode,@complienceMessage msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
  132. --END
  133. --ELSE
  134. --BEGIN
  135. -- INSERT remitTranComplianceTemp(csDetailTranId, matchTranId, agentRefId)
  136. -- SELECT @complianceRuleId, NULL, @agentRefId
  137. -- --SELECT 102 errorCode,@complienceMessage msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
  138. --END
  139. INSERT INTO ComplianceLog(senderName, senderCountry, senderIdType, senderIdNumber, senderMobile, receiverName, receiverCountry, payOutAmt,
  140. complianceId, complianceReason, complainceDetailMessage, createdBy, createdDate)
  141. SELECT @senderName, @sCountry, @sIdType, @sIdNo, @sMobile, @receiverName, @pCountry, @cAmt,
  142. @complianceRuleId, @shortMsg, @complienceMessage, @user, GETDATE()
  143. --DECLARE @tempRowId INT = @@IDENTITY
  144. --SELECT
  145. -- id
  146. -- ,csDetailRecId = ''
  147. -- ,[S.N.] = ROW_NUMBER()OVER(ORDER BY id)
  148. -- ,[Remarks] = complianceReason
  149. -- ,[Action] = CASE WHEN @complienceErrorCode=102 THEN 'HOLD' ELSE 'Blocked' END
  150. -- --,[Matched Tran ID] = ''
  151. --FROM ComplianceLog
  152. --WHERE id = @tempRowId
  153. END
  154. --<<End:OFAC/Compliance Checking
  155. UPDATE creditLimit SET
  156. todaysSent = ISNULL(todaysSent, 0) + @tAmt
  157. WHERE agentId = @sAgent
  158. /*
  159. Move from tempOnline to Main Temp table
  160. */
  161. --EXEC proc_online_temp_to_main @id = @id, @voucherDetails = @voucherDetails
  162. EXEC proc_online_temp_to_main @id = @id
  163. -- UPDATE Limit
  164. UPDATE dbo.customerMaster SET lastTranId = @tranId
  165. ,todaysSent = ISNULL(todaysSent,0) + @cAmt
  166. ,totalSent = ISNULL(totalSent,0)+ @cAmt
  167. WHERE customerId = @senderId
  168. -->>Start:OFAC/Compliance Verification
  169. IF EXISTS(SELECT 'X' FROM remitTranComplianceTemp WITH(NOLOCK) WHERE agentRefId = @agentRefId)
  170. BEGIN
  171. INSERT INTO remitTranCompliance(TranId, csDetailTranId, matchTranId)
  172. SELECT @tranId, csDetailTranId, matchTranId FROM remitTranComplianceTemp WITH(NOLOCK) WHERE agentRefId = @agentRefId
  173. SET @compFinalRes = 'C'
  174. DELETE FROM dbo.remitTranComplianceTemp WHERE agentRefId = @agentRefId
  175. END
  176. IF(ISNULL(@compFinalRes, '') <> '' OR ISNULL(@ofacRes, '') <> '')
  177. BEGIN
  178. IF(@ofacRes <> '' AND ISNULL(@compFinalRes, '') = '')
  179. BEGIN
  180. INSERT remitTranOfac(TranId, blackListId, reason, flag)
  181. SELECT @id, @ofacRes, @ofacReason, NULL
  182. UPDATE remitTranTemp SET
  183. tranStatus = CASE WHEN @customerStatus = 'PendingUser' THEN 'OFAC Hold' ELSE 'OFAC' END
  184. WHERE controlNo = @controlNoEncrypted
  185. END
  186. ELSE IF(@compFinalRes <> '' AND ISNULL(@ofacRes, '') = '')
  187. BEGIN
  188. UPDATE remitTranTemp SET
  189. tranStatus = CASE WHEN @customerStatus = 'PendingUser' THEN 'Compliance Hold' ELSE 'Compliance' END
  190. WHERE controlNo = @controlNoEncrypted
  191. END
  192. ELSE IF(ISNULL(@compFinalRes, '') <> '' AND ISNULL(@ofacRes, '') <> '')
  193. BEGIN
  194. INSERT remitTranOfac(TranId, blackListId, reason)
  195. SELECT @id, @ofacRes, @ofacReason
  196. UPDATE remitTranTemp SET
  197. tranStatus = CASE WHEN @customerStatus = 'PendingUser' THEN 'OFAC/Compliance Hold' ELSE 'OFAC/Compliance' END
  198. WHERE controlNo = @controlNoEncrypted
  199. END
  200. END
  201. SELECT @tranStatus=r.tranStatus FROM remittranTemp r where id=@tranId
  202. IF @tranStatus = 'Payment'
  203. BEGIN
  204. -->>Shift to main table
  205. EXEC proc_remitTranTempToMain @tranId
  206. END
  207. IF @@TRANCOUNT > 0
  208. COMMIT TRANSACTION
  209. SELECT 0 ErrorCode , 'Transaction Approved Successfully' Msg, @tranId Id, @customerStatus Extra
  210. END
  211. END
  212. END TRY
  213. BEGIN CATCH
  214. IF @@TRANCOUNT > 0
  215. ROLLBACK TRANSACTION
  216. SELECT 1 error_code, ERROR_MESSAGE() mes, NULL id
  217. END CATCH