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
7.0 KiB

1 year ago
  1. CREATE OR ALTER PROC [dbo].[proc_CancelTransaction] (
  2. @flag VARCHAR(50)
  3. ,@controlNo VARCHAR(20) = NULL
  4. ,@user VARCHAR(30) = NULL
  5. ,@cancelReason VARCHAR(200) = NULL
  6. ,@apiSuccess CHAR(1) = NULL
  7. ,@payoutPartner VARCHAR(20) = NULL
  8. )
  9. AS
  10. DECLARE
  11. @tranStatus VARCHAR(20) = NULL,
  12. @payStatus VARCHAR(50) = NULL,
  13. @tranType CHAR(1) = NULL,
  14. @isPatner CHAR(1) = NULL,
  15. @message VARCHAR(200) = NULL,
  16. @tranId INT = NULL
  17. SET NOCOUNT ON
  18. SET XACT_ABORT ON
  19. DECLARE
  20. @code VARCHAR(50)
  21. ,@userName VARCHAR(50)
  22. ,@password VARCHAR(50)
  23. ,@lockStatus VARCHAR(20)
  24. DECLARE @controlNoEncrypted VARCHAR(20),@refund CHAR(1)
  25. SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
  26. /*
  27. --393864 DUTCH-BANGLA BANK LTD.
  28. --415208 Xpress Money Settling Agent
  29. --393228 CONTACT Settling Agent
  30. --393866 RIA Settling Agent
  31. -- 590815 NIBANK
  32. */
  33. SELECT
  34. @tranStatus = tranStatus,
  35. @payStatus = CASE WHEN Paystatus='Unpaid' AND tranStatus='Payment' THEN 'Cancel'
  36. WHEN Paystatus='Post' AND tranStatus='Payment' THEN 'CancelRequest'
  37. ELSE payStatus
  38. END
  39. ,@tranId = id,
  40. @lockStatus = lockStatus,
  41. @isPatner = CASE WHEN pAgent IN(393864,415208,393228,393866,585120,590815) THEN 'Y' ELSE 'N' END,
  42. @refund = CASE WHEN pAgent IN(393864,415208,393228,393866,585120,590815) THEN 'N' ELSE 'D' END
  43. FROM remitTran WITH(NOLOCK)
  44. WHERE controlNo = @controlNoEncrypted
  45. IF @flag = 'cancelRequest'
  46. BEGIN
  47. IF @user IS NULL
  48. BEGIN
  49. EXEC proc_errorHandler 1, 'Your session has expired. Cannot send cancel request', NULL
  50. RETURN
  51. END
  52. IF (@tranStatus IS NULL)
  53. BEGIN
  54. EXEC proc_errorHandler 1, 'Transaction not found', @controlNoEncrypted
  55. RETURN
  56. END
  57. IF (@tranStatus = 'Block')
  58. BEGIN
  59. EXEC proc_errorHandler 1, 'Transaction is blocked. Please Contact HO', @controlNoEncrypted
  60. RETURN
  61. END
  62. IF (@tranStatus = 'Paid')
  63. BEGIN
  64. EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
  65. RETURN
  66. END
  67. IF (@payStatus = 'Paid')
  68. BEGIN
  69. EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
  70. RETURN
  71. END
  72. IF (@tranStatus = 'Cancel')
  73. BEGIN
  74. EXEC proc_errorHandler 1, 'Transaction already been cancelled', @controlNoEncrypted
  75. RETURN
  76. END
  77. IF (@tranStatus = 'CancelRequest')
  78. BEGIN
  79. EXEC proc_errorHandler 1, 'Cancel Request has already been sent', @controlNoEncrypted
  80. RETURN
  81. END
  82. IF NOT EXISTS(SELECT TOP(1) 'A' FROM FastMoneyPro_Account.DBO.tran_master(NOLOCK) WHERE field1=@controlNo AND field2='Remittance Voucher')
  83. EXEC FastMoneyPro_Account.dbo.proc_transactionVoucherEntry @controlNo= @controlNo
  84. UPDATE remitTran
  85. SET tranStatus = 'CancelRequest'
  86. ,cancelRequestBy = @user
  87. ,cancelRequestDate = GETDATE()
  88. ,cancelRequestDateLocal = GETUTCDATE()
  89. ,cancelReason = @cancelReason
  90. WHERE controlNo = @controlNoEncrypted
  91. IF @payStatus = 'Cancel' AND @isPatner = 'Y'
  92. BEGIN
  93. SELECT '0' errorCode,'Unpost transaction cancelled successfully' Msg,@tranId id, @isPatner Extra
  94. EXEC proc_cancelTran @flag = 'cancel', @user = @user, @controlNo = @controlNo, @cancelReason = 'Unpost transaction cancelled', @refund = @refund
  95. INSERT INTO tranCancelrequest(tranId,controlNo,cancelReason,cancelStatus,createdBy,createdDate,tranStatus,approvedBy,approvedDate,isScRefund)
  96. SELECT @tranId,@controlNoEncrypted,'Unpost transaction cancelled successfully','Cancel',@user,GETDATE(),@tranStatus,@user,GETDATE(),@refund
  97. END
  98. ELSE
  99. BEGIN
  100. INSERT INTO tranCancelrequest(tranId,controlNo,cancelReason,cancelStatus,createdBy,createdDate,tranStatus)
  101. SELECT @tranId,@controlNoEncrypted,'Cancel requested successfully','CancelRequest',@user,GETDATE(),@tranStatus
  102. SELECT '0' errorCode,'Cancel requested successfully' Msg,@tranId id, @isPatner Extra
  103. END
  104. IF @@TRANCOUNT > 0
  105. COMMIT TRANSACTION
  106. RETURN
  107. END
  108. IF @flag='details'
  109. BEGIN
  110. --Api based include all pAgents to use this methods like Moneygram, etc
  111. IF EXISTS(SELECT 'A' FROM remitTran(nolock) where controlNo = @controlNoEncrypted AND tranStatus = 'CancelRequest' AND pAgent IN (601410))
  112. BEGIN
  113. SELECT
  114. PartnerTranId = RT.ContNo
  115. ,DeliveryMethod = RT.PaymentMethod
  116. ,TranId = RT.id
  117. ,PartnerPin = dbo.FNADecryptString(rt.controlNo)
  118. ,ControlNo = dbo.FNADecryptString(rt.controlNo2)
  119. ,ContNo = rt.ContNo
  120. ,processId = rt.controlNo
  121. ,BaseUrl = p.BaseUrl
  122. ,[Authorization] = p.AuthKey
  123. ,payOutPartnerId = Rt.pAgent
  124. FROM dbo.remitTran AS RT(NOLOCK)
  125. INNER JOIN serviceTypeMaster M(NOLOCK) ON M.typeTitle = RT.paymentMethod
  126. LEFT JOIN TblPartnerwiseCountry(NOLOCK) P ON P.AgentId = RT.pSuperAgent AND P.PaymentMethod = M.serviceTypeId
  127. WHERE RT.tranStatus = 'CancelRequest' AND RT.payStatus = 'Post'
  128. AND controlNo = @controlNoEncrypted
  129. RETURN
  130. END
  131. IF EXISTS(SELECT 'A' FROM remitTran(nolock) where controlNo = @controlNoEncrypted AND tranStatus = 'CancelRequest' )
  132. BEGIN
  133. SELECT
  134. TransactionId = RT.id
  135. ,GmeControlNo = CASE WHEN RT.pAgent = 393866 THEN dbo.FNADecryptString(RT.controlNo2) ELSE dbo.FNADecryptString(RT.controlNo) END
  136. ,PartnerPin = rt.ContNo
  137. ,DocId = rt.ContNo
  138. ,provideName = CASE WHEN RT.pAgent = 393228 THEN 'CONTACT'
  139. WHEN RT.pAgent = 393864 THEN 'DBBL'
  140. WHEN RT.pAgent = 415208 THEN 'XPRESS'
  141. WHEN RT.pAgent = 393866 THEN 'RIA'
  142. WHEN RT.pAgent = 585120 THEN 'KORONAPAY'
  143. WHEN RT.pAgent = 590815 THEN 'NIBANK'
  144. END
  145. ,payStatus
  146. ,cancelReason
  147. ,BaseUrl = p.BaseUrl
  148. ,[Authorization] = p.AuthKey
  149. ,PartnerId = Rt.pAgent
  150. FROM dbo.remitTran AS RT(NOLOCK)
  151. INNER JOIN serviceTypeMaster M(NOLOCK) ON M.typeTitle = RT.paymentMethod
  152. LEFT JOIN TblPartnerwiseCountry(NOLOCK) P ON P.AgentId = RT.pSuperAgent AND P.PaymentMethod = M.serviceTypeId
  153. WHERE RT.tranStatus = 'CancelRequest' AND RT.payStatus = 'Post'
  154. AND controlNo = @controlNoEncrypted
  155. RETURN
  156. END
  157. END
  158. IF @flag = 'statusUpdate'
  159. BEGIN
  160. IF @apiSuccess = 'Y'
  161. BEGIN
  162. SET @refund = CASE WHEN @payoutPartner IN ('CONTACT','RIA','KORONAPAY','NIBANK') THEN 'N' ELSE 'D' END
  163. IF @payoutPartner IN('CONTACT','RIA','KORONAPAY','NIBANK')
  164. BEGIN
  165. UPDATE remitTran SET tranStatus = 'CancelRequested'
  166. WHERE controlNo = @controlNoEncrypted
  167. END
  168. UPDATE tranCancelrequest SET
  169. approvedDate = GETDATE()
  170. ,approvedBy = @user
  171. ,cancelStatus = 'approved'
  172. WHERE controlNo = @controlNoEncrypted AND cancelStatus = 'CancelRequest'
  173. EXEC proc_transactionLogs 'i', @user, @tranId, 'Cancel requested successfully', 'Cancel Request'
  174. EXEC proc_errorHandler 0,'Cancel request success.',@tranId
  175. RETURN;
  176. END
  177. ELSE
  178. BEGIN
  179. -->> ## INSERTING REQUESTED LIST
  180. INSERT INTO tranCancelrequest(tranId,controlNo,cancelReason,cancelStatus,createdBy,createdDate,tranStatus,approvedBy,approvedDate)
  181. SELECT @tranId,@controlNoEncrypted,'Partner API Cancel request failed','Rejected',@user,GETDATE(),@tranStatus,@user,GETDATE()
  182. EXEC proc_transactionLogs 'i', @user, @tranId, 'Cancel request failed from partner.', 'Cancel Request'
  183. EXEC proc_errorHandler 1,'Cancel request failed from partner.',@tranId
  184. RETURN;
  185. END
  186. END