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.

110 lines
6.5 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[INBOUND_PROC_CANCEL_TRANSACTION] Script Date: 9/27/2019 1:30:13 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE PROC [dbo].[INBOUND_PROC_CANCEL_TRANSACTION](
  9. @flag VARCHAR(20)
  10. ,@agentCode VARCHAR(20) = NULL
  11. ,@userName VARCHAR(20) = NULL
  12. ,@controlNo VARCHAR(50) = NULL
  13. ,@partnerTranNo VARCHAR(50) = NULL
  14. ,@tranId VARCHAR(50) = NULL
  15. ,@tranDate VARCHAR(50) = NULL
  16. ,@reason VARCHAR(MAX) = NULL
  17. ,@processIdentifier VARCHAR(100) = NULL
  18. )AS
  19. BEGIN TRY
  20. IF @flag='cancel-transaction'
  21. BEGIN
  22. DECLARE @agentId BIGINT, @transtatus VARCHAR(50), @paystatus VARCHAR(50), @tranSendDate VARCHAR(10);
  23. SELECT @agentId=agentId FROM dbo.agentMaster(NOLOCK) WHERE agentCode=@agentCode
  24. SET @controlNo = dbo.FNAEncryptString(@controlNo);
  25. --SET @tranDate = CONVERT(VARCHAR(10), @tranDate, 120);
  26. IF NOT EXISTS(SELECT 'x' FROM dbo.INBOUND_REMIT_TRAN(NOLOCK) irt WHERE irt.id = @tranId AND irt.controlNo = @controlNo AND irt.sAgent=@agentId)
  27. BEGIN
  28. SELECT '1' ErrorCode, 'Wrong ControlNo/PartnerTranNo, Transaction does not exist' Msg, NULL Id
  29. RETURN
  30. END
  31. SELECT
  32. @transtatus = IRT.tranStatus,
  33. @paystatus = IRT.payStatus,
  34. @tranSendDate = CONVERT(VARCHAR(10), IRT.createdDate,120)
  35. FROM
  36. dbo.INBOUND_REMIT_TRAN IRT(NOLOCK)
  37. WHERE IRT.id = @tranId
  38. IF(@tranSendDate <> @tranDate)
  39. BEGIN
  40. SELECT '1' ErrorCode, 'Transaction date is not correct.' Msg, NULL Id
  41. RETURN
  42. END
  43. IF(@transtatus = 'cancel')
  44. BEGIN
  45. SELECT '1' ErrorCode, 'Transaction has already been cancelled.' Msg, NULL Id
  46. RETURN
  47. END
  48. IF(@paystatus = 'paid')
  49. BEGIN
  50. SELECT '1' ErrorCode, 'Transaction has already been paid.' Msg, NULL Id
  51. RETURN
  52. END
  53. --IF NOT EXISTS(SELECT 'x' FROM dbo.INBOUND_REMIT_TRAN(NOLOCK) irt WHERE irt.id = @tranId AND irt.sAgent=@agentId AND irt.payStatus= 'UNPAID' AND irt.tranStatus='PAYMENT')
  54. --BEGIN
  55. -- SELECT '1' ErrorCode, 'Transaction is under process, cannot cancel the transaction. ' Msg, NULL Id
  56. -- RETURN
  57. --END
  58. BEGIN TRAN
  59. UPDATE dbo.INBOUND_REMIT_TRAN SET
  60. tranStatus='Cancel'
  61. ,cancelRequestDate=GETDATE()
  62. ,cancelRequestDateLocal=GETUTCDATE()
  63. ,cancelRequestBy=@userName
  64. ,cancelReason=@reason
  65. ,cancelApprovedDate=GETDATE()
  66. ,cancelApprovedDateLocal=GETDATE()
  67. ,cancelApprovedBy=@userName
  68. WHERE id=@tranId
  69. INSERT INTO dbo.INBOUND_TROUBLE_TICKET(tranId,controlNo,[message],msgType,[status],createdBy,createdDate)
  70. SELECT @TranId,@controlNo,@reason,'C','Cancel',@userName,GETDATE()
  71. ----## Deactivate the process identifier
  72. UPDATE ai SET ai.isActive = 0 FROM dbo.INBOUND_APIUSER_IDENTIFIER ai WHERE identifier = @processIdentifier AND username = @userName
  73. COMMIT TRAN
  74. IF @@TRANCOUNT=0
  75. BEGIN
  76. SELECT '0' ErrorCode, 'cancel transaction success' Msg,@tranId Id
  77. RETURN
  78. END
  79. ELSE
  80. BEGIN
  81. SELECT '1' ErrorCode, 'cancel transaction fail' Msg,@tranId Id
  82. RETURN
  83. END
  84. END
  85. END TRY
  86. BEGIN CATCH
  87. IF @@ERROR>0
  88. ROLLBACK TRAN
  89. SELECT '999' ErrorCode, ERROR_MESSAGE() Msg,@tranId Id
  90. RETURN
  91. END CATCH
  92. GO