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.

215 lines
15 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_approveTranAPI_v2] 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_approveTranAPI_v2] (
  9. @flag VARCHAR(50)
  10. ,@controlNo VARCHAR(20) = NULL
  11. ,@user VARCHAR(30) = NULL
  12. ,@agentRefId VARCHAR(20) = NULL
  13. ,@tranId INT = NULL
  14. ,@sCountry INT = NULL
  15. ,@sFirstName VARCHAR(30) = NULL
  16. ,@sMiddleName VARCHAR(30) = NULL
  17. ,@sLastName1 VARCHAR(30) = NULL
  18. ,@sLastName2 VARCHAR(30) = NULL
  19. ,@sMemId VARCHAR(30) = NULL
  20. ,@sId BIGINT = NULL
  21. ,@sTranId VARCHAR(50) = NULL
  22. ,@rCountry INT = NULL
  23. ,@rFirstName VARCHAR(30) = NULL
  24. ,@rMiddleName VARCHAR(30) = NULL
  25. ,@rLastName1 VARCHAR(30) = NULL
  26. ,@rLastName2 VARCHAR(30) = NULL
  27. ,@rMemId VARCHAR(30) = NULL
  28. ,@rId BIGINT = NULL
  29. ,@pCountry INT = NULL
  30. ,@customerId INT = NULL
  31. ,@agentId INT = NULL
  32. ,@senderId INT = NULL
  33. ,@benId INT = NULL
  34. ,@cancelReason VARCHAR(200) = NULL
  35. ,@cAmt MONEY = NULL
  36. ,@sortBy VARCHAR(50) = NULL
  37. ,@sortOrder VARCHAR(5) = NULL
  38. ,@pageSize INT = NULL
  39. ,@pageNumber INT = NULL
  40. )
  41. AS
  42. DECLARE
  43. @select_field_list VARCHAR(MAX)
  44. ,@extra_field_list VARCHAR(MAX)
  45. ,@table VARCHAR(MAX)
  46. ,@sql_filter VARCHAR(MAX)
  47. SET NOCOUNT ON
  48. SET XACT_ABORT ON
  49. SELECT @pageSize = 1000, @pageNumber = 1
  50. DECLARE
  51. @code VARCHAR(50) = NULL
  52. ,@userName VARCHAR(50) = NULL
  53. ,@password VARCHAR(50) = NULL
  54. DECLARE @sBranch INT, @bankId INT, @pBankBranch INT, @branchMapCode VARCHAR(8), @bankBranchName VARCHAR(200), @pAgentComm MONEY
  55. EXEC proc_GetAPI @user OUTPUT,@code OUTPUT, @userName OUTPUT, @password OUTPUT
  56. DECLARE @controlNoEncrypted VARCHAR(100)
  57. SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
  58. IF @flag = 'approve' --Approve
  59. BEGIN
  60. --Check if the approver is the same user who sent transaction
  61. IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND createdBy = @user)
  62. BEGIN
  63. SELECT 1 Code, @agentRefId agent_refId, 'Process denied for same user' [message], @controlNo refId
  64. RETURN
  65. END
  66. DECLARE @tranStatus VARCHAR(20) = NULL
  67. SELECT @sBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
  68. SELECT @tranStatus = tranStatus, @cAmt = cAmt FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
  69. IF @sBranch <> dbo.FNAGetHOAgentId() --Head Office
  70. BEGIN
  71. IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND sBranch <> @sBranch)
  72. BEGIN
  73. EXEC proc_errorHandler 0, 'Transaction is not in authorized mode', @tranId
  74. RETURN
  75. END
  76. END
  77. IF (@tranStatus = 'CancelRequest')
  78. BEGIN
  79. EXEC proc_errorHandler 0, 'Transaction has been requested for cancel', @tranId
  80. RETURN
  81. END
  82. IF (@tranStatus = 'Payment')
  83. BEGIN
  84. EXEC proc_errorHandler 0, 'Transaction already been approved and ready for payment', @tranId
  85. RETURN
  86. END
  87. IF (@tranStatus = 'Paid')
  88. BEGIN
  89. EXEC proc_errorHandler 0, 'Transaction is not in authorized mode', @tranId
  90. RETURN
  91. END
  92. IF (@tranStatus = 'Cancel')
  93. BEGIN
  94. EXEC proc_errorHandler 0, 'Transaction is cancelled', @tranId
  95. RETURN
  96. END
  97. IF (@tranStatus = 'Lock')
  98. BEGIN
  99. EXEC proc_errorHandler 0, 'Transaction is locked. Please Contact HO', @tranId
  100. RETURN
  101. END
  102. DECLARE @userId INT, @sendPerTxn MONEY, @sendPerDay MONEY, @sendTodays MONEY
  103. SELECT @userId = userId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user AND ISNULL(isDeleted, 'N') = 'N'
  104. SELECT @sendPerDay = sendPerDay, @sendPerTxn = sendPerTxn, @sendTodays = ISNULL(sendTodays, 0) FROM userWiseTxnLimit WITH(NOLOCK) WHERE userId = @userId AND ISNULL(isActive, 'N') = 'Y' AND ISNULL(isDeleted, 'N') = 'N'
  105. IF(@cAmt > @sendPerTxn)
  106. BEGIN
  107. EXEC proc_errorHandler 0, 'Transfer Amount exceeds user per transaction limit.', @tranId
  108. RETURN
  109. END
  110. IF(@sendTodays > @sendPerDay)
  111. BEGIN
  112. EXEC proc_errorHandler 0, 'User Per Day Transaction Limit exceeded.', @tranId
  113. RETURN
  114. END
  115. SELECT @userId = userId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user AND ISNULL(isDeleted, 'N') = 'N'
  116. SELECT @cAmt = cAmt FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
  117. UPDATE remitTran SET
  118. tranStatus = 'Payment' --Payment
  119. ,approvedBy = @user
  120. ,approvedDate = dbo.FNAGetDateInNepalTZ()
  121. ,approvedDateLocal = dbo.FNAGetDateInNepalTZ()
  122. WHERE controlNo = @controlNoEncrypted
  123. UPDATE userWiseTxnLimit SET
  124. sendTodays = ISNULL(sendTodays, 0) + @cAmt
  125. WHERE userId = @userId
  126. EXEC proc_errorHandler 0, 'Transaction Approved Successfully', @tranId
  127. --SELECT @code, @userName, @password, @controlNo, @agentRefId
  128. --RETURN
  129. DECLARE
  130. @rCity VARCHAR(50) = NULL
  131. ,@payoutMethod CHAR(1) = NULL
  132. ,@sFullName VARCHAR(150) = NULL
  133. ,@sAddress VARCHAR(100) = NULL
  134. ,@sContactNo VARCHAR(20) = NULL
  135. ,@sIdType VARCHAR(50) = NULL
  136. ,@sIdNo VARCHAR(20) = NULL
  137. ,@sEmail VARCHAR(100) = NULL
  138. ,@rFullName VARCHAR(150) = NULL
  139. ,@rAddress VARCHAR(100) = NULL
  140. ,@rContactNo VARCHAR(20) = NULL
  141. ,@rIdType VARCHAR(50) = NULL
  142. ,@rIdNo VARCHAR(20) = NULL
  143. ,@relationship VARCHAR(50) = NULL
  144. ,@deliveryMethod VARCHAR(100) = NULL
  145. ,@pLocation INT = NULL
  146. ,@accountNo VARCHAR(50) = NULL
  147. ,@serviceCharge MONEY = NULL
  148. ,@sAgentComm MONEY = NULL
  149. ,@pAmt MONEY = NULL
  150. ,@mapCode VARCHAR(10) = NULL
  151. ,@remarks VARCHAR(200) = NULL
  152. SELECT
  153. @sBranch = sBranch
  154. ,@sFullName = sen.firstName + ISNULL( ' ' + sen.middleName, '') + ISNULL( ' ' + sen.lastName1, '') + ISNULL( ' ' + sen.lastName2, '')
  155. ,@sAddress = sen.[address]
  156. ,@sContactNo = sen.mobile
  157. ,@sIdType = sen.idType
  158. ,@sIdNo = sen.idNumber
  159. ,@sEmail = sen.email
  160. ,@rFullName = rec.firstName + ISNULL( ' ' + rec.middleName, '') + ISNULL( ' ' + rec.lastName1, '') + ISNULL( ' ' + rec.lastName2, '')
  161. ,@rAddress = rec.[address]
  162. ,@rContactNo = rec.mobile
  163. ,@rIdType = rec.idType
  164. ,@rIdNo = rec.idNumber
  165. ,@rCity = rec.city
  166. ,@relationship = trn.relWithSender
  167. ,@deliveryMethod = trn.paymentMethod
  168. ,@serviceCharge = trn.serviceCharge
  169. ,@cAmt = trn.cAmt
  170. ,@sAgentComm = trn.sAgentComm
  171. ,@pAgentComm = trn.pAgentComm
  172. ,@pAmt = trn.pAmt
  173. ,@pLocation = trn.pLocation
  174. ,@accountNo = trn.accountNo
  175. ,@pBankBranch = trn.pBankBranch
  176. ,@bankId = trn.pBank
  177. ,@user = trn.createdBy
  178. ,@remarks = trn.pMessage
  179. ,@tranId = trn.id
  180. FROM remitTran trn WITH(NOLOCK)
  181. INNER JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
  182. INNER JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
  183. WHERE controlNo = @controlNoEncrypted
  184. SELECT @mapCode = mapCodeInt FROM agentMaster WITH(NOLOCK) WHERE agentId = @sBranch
  185. SELECT @payoutMethod = CASE WHEN @deliveryMethod = 'Cash Payment' THEN 'C' WHEN @deliveryMethod = 'Bank Deposit' THEN 'B' END
  186. IF @deliveryMethod = 'Bank Deposit'
  187. BEGIN
  188. SELECT @branchMapCode = mapCodeDom FROM agentMaster WITH(NOLOCK) WHERE agentId = @bankId
  189. SELECT @bankBranchName = agentAddress FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBankBranch
  190. END
  191. IF @remarks IS NOT NULL
  192. BEGIN
  193. EXEC proc_addCommentAPI @flag = 'i', @controlNo = @controlNo, @user = @user, @message = @remarks, @agentRefId = NULL
  194. END
  195. END
  196. GO