USE [FastMoneyPro_Remit] GO /****** Object: StoredProcedure [dbo].[INBOUND_PROC_CANCEL_TRANSACTION] Script Date: 9/27/2019 1:30:13 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROC [dbo].[INBOUND_PROC_CANCEL_TRANSACTION]( @flag VARCHAR(20) ,@agentCode VARCHAR(20) = NULL ,@userName VARCHAR(20) = NULL ,@controlNo VARCHAR(50) = NULL ,@partnerTranNo VARCHAR(50) = NULL ,@tranId VARCHAR(50) = NULL ,@tranDate VARCHAR(50) = NULL ,@reason VARCHAR(MAX) = NULL ,@processIdentifier VARCHAR(100) = NULL )AS BEGIN TRY IF @flag='cancel-transaction' BEGIN DECLARE @agentId BIGINT, @transtatus VARCHAR(50), @paystatus VARCHAR(50), @tranSendDate VARCHAR(10); SELECT @agentId=agentId FROM dbo.agentMaster(NOLOCK) WHERE agentCode=@agentCode SET @controlNo = dbo.FNAEncryptString(@controlNo); --SET @tranDate = CONVERT(VARCHAR(10), @tranDate, 120); IF NOT EXISTS(SELECT 'x' FROM dbo.INBOUND_REMIT_TRAN(NOLOCK) irt WHERE irt.id = @tranId AND irt.controlNo = @controlNo AND irt.sAgent=@agentId) BEGIN SELECT '1' ErrorCode, 'Wrong ControlNo/PartnerTranNo, Transaction does not exist' Msg, NULL Id RETURN END SELECT @transtatus = IRT.tranStatus, @paystatus = IRT.payStatus, @tranSendDate = CONVERT(VARCHAR(10), IRT.createdDate,120) FROM dbo.INBOUND_REMIT_TRAN IRT(NOLOCK) WHERE IRT.id = @tranId IF(@tranSendDate <> @tranDate) BEGIN SELECT '1' ErrorCode, 'Transaction date is not correct.' Msg, NULL Id RETURN END IF(@transtatus = 'cancel') BEGIN SELECT '1' ErrorCode, 'Transaction has already been cancelled.' Msg, NULL Id RETURN END IF(@paystatus = 'paid') BEGIN SELECT '1' ErrorCode, 'Transaction has already been paid.' Msg, NULL Id RETURN END --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') --BEGIN -- SELECT '1' ErrorCode, 'Transaction is under process, cannot cancel the transaction. ' Msg, NULL Id -- RETURN --END BEGIN TRAN UPDATE dbo.INBOUND_REMIT_TRAN SET tranStatus='Cancel' ,cancelRequestDate=GETDATE() ,cancelRequestDateLocal=GETUTCDATE() ,cancelRequestBy=@userName ,cancelReason=@reason ,cancelApprovedDate=GETDATE() ,cancelApprovedDateLocal=GETDATE() ,cancelApprovedBy=@userName WHERE id=@tranId INSERT INTO dbo.INBOUND_TROUBLE_TICKET(tranId,controlNo,[message],msgType,[status],createdBy,createdDate) SELECT @TranId,@controlNo,@reason,'C','Cancel',@userName,GETDATE() ----## Deactivate the process identifier UPDATE ai SET ai.isActive = 0 FROM dbo.INBOUND_APIUSER_IDENTIFIER ai WHERE identifier = @processIdentifier AND username = @userName COMMIT TRAN IF @@TRANCOUNT=0 BEGIN SELECT '0' ErrorCode, 'cancel transaction success' Msg,@tranId Id RETURN END ELSE BEGIN SELECT '1' ErrorCode, 'cancel transaction fail' Msg,@tranId Id RETURN END END END TRY BEGIN CATCH IF @@ERROR>0 ROLLBACK TRAN SELECT '999' ErrorCode, ERROR_MESSAGE() Msg,@tranId Id RETURN END CATCH GO