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.
 
 
 

398 lines
15 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_cancelTranAPI_v2] Script Date: 7/4/2019 11:35:48 AM ******/
DROP PROCEDURE [dbo].[proc_cancelTranAPI_v2]
GO
/****** Object: StoredProcedure [dbo].[proc_cancelTranAPI_v2] Script Date: 7/4/2019 11:35:48 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[proc_cancelTranAPI_v2] (
@flag VARCHAR(50)
,@controlNo VARCHAR(20) = NULL
,@user VARCHAR(30) = NULL
,@agentRefId VARCHAR(50) = NULL
,@tranId INT = NULL
,@sCountry INT = NULL
,@sFirstName VARCHAR(30) = NULL
,@sMiddleName VARCHAR(30) = NULL
,@sLastName1 VARCHAR(30) = NULL
,@sLastName2 VARCHAR(30) = NULL
,@sMemId VARCHAR(30) = NULL
,@sId BIGINT = NULL
,@sTranId VARCHAR(50) = NULL
,@rCountry INT = NULL
,@rFirstName VARCHAR(30) = NULL
,@rMiddleName VARCHAR(30) = NULL
,@rLastName1 VARCHAR(30) = NULL
,@rLastName2 VARCHAR(30) = NULL
,@rMemId VARCHAR(30) = NULL
,@rId BIGINT = NULL
,@pCountry INT = NULL
,@customerId INT = NULL
,@agentId INT = NULL
,@senderId INT = NULL
,@benId INT = NULL
,@cancelReason VARCHAR(200) = NULL
,@refund CHAR(1) = NULL
,@sortBy VARCHAR(50) = NULL
,@sortOrder VARCHAR(5) = NULL
,@pageSize INT = NULL
,@pageNumber INT = NULL
)
AS
DECLARE
@select_field_list VARCHAR(MAX)
,@extra_field_list VARCHAR(MAX)
,@table VARCHAR(MAX)
,@sql_filter VARCHAR(MAX)
,@sAgent INT
,@tAmt MONEY
,@cAmt MONEY
,@pAmt MONEY
,@message VARCHAR(200)
,@payStatus varchar(20)
SET NOCOUNT ON
SET XACT_ABORT ON
SELECT @pageSize = 1000, @pageNumber = 1
DECLARE
@code VARCHAR(50)
,@userName VARCHAR(50)
,@password VARCHAR(50)
EXEC proc_GetAPI @user OUTPUT,@code OUTPUT, @userName OUTPUT, @password OUTPUT
DECLARE @tranStatus VARCHAR(20)
DECLARE @chargeToCustomer INT
DECLARE @controlNoEncrypted VARCHAR(20)
SELECT @controlNoEncrypted = dbo.FNAEncryptString(UPPER(LTRIM(RTRIM(@controlNo))))
if right(@controlNo,1) <> 'D'
set @flag ='cancelTxnAdmin'
-->> Direct domestic cancel
IF @flag = 'cancel'
BEGIN
DECLARE @sBranch INT, @pLocation INT, @deliveryMethod VARCHAR(100), @deliveryMethodId INT, @pAgentComm MONEY, @cancelCharge MONEY, @returnAmt MONEY
SELECT
@tranStatus = tranStatus
,@sBranch = sBranch
,@sAgent = sAgent
,@pLocation = pLocation
,@deliveryMethod = paymentMethod
,@tAmt = tAmt
,@cAmt = cAmt
,@pAmt = pAmt
,@payStatus = payStatus
FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
IF @user IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Your session has expired. Cannot cancel transaction', NULL
RETURN
END
IF (@tranStatus IS NULL)
BEGIN
EXEC proc_errorHandler 1, 'Transaction not found', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Paid')
BEGIN
EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
RETURN
END
IF (@payStatus = 'Post')
BEGIN
EXEC proc_errorHandler 1, 'Transaction has already been POST', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Cancel')
BEGIN
EXEC proc_errorHandler 1, 'Transaction already been cancelled', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Hold')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is hold. Transaction must be approved for cancellation.', NULL
RETURN
END
DECLARE @id BIGINT, @settlingAgent INT, @ssAgent INT
SELECT @deliveryMethodId = serviceTypeId FROM serviceTypeMaster WITH(NOLOCK) WHERE typeTitle = @deliveryMethod AND ISNULL(isDeleted, 'N') = 'N'
SELECT @pAgentComm = pAgentComm FROM [dbo].FNAGetDomesticPayCommForCancel(@sBranch, @pLocation, @deliveryMethodId, @tAmt)
SET @returnAmt = @tAmt + @pAgentComm
SET @cancelCharge = @cAmt - @returnAmt
BEGIN TRANSACTION
UPDATE remitTran SET
tranStatus = 'Cancel'
,cancelApprovedBy = @user
,cancelApprovedDate = dbo.FNAGetDateInNepalTZ()
,cancelApprovedDateLocal = dbo.FNAGetDateInNepalTZ()
,cancelReason = @cancelReason
,refund = @refund
WHERE controlNo = @controlNoEncrypted
SELECT @tranId = id FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
SELECT @message = 'Cancel Request Approved'
EXEC proc_transactionLogs 'i', @user, @tranId, @message, 'Cancel Approved'
SELECT @ssAgent = parentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @sAgent
SELECT @settlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @sAgent AND isSettlingAgent = 'Y'
IF @settlingAgent IS NULL
SELECT @settlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @ssAgent AND isSettlingAgent = 'Y'
IF EXISTS (SELECT 'X' FROM remitTran WITH(NOLOCK)
WHERE controlNo = @controlNoEncrypted
AND createdDate BETWEEN CONVERT(VARCHAR,GETDATE(),101) AND CONVERT(VARCHAR,GETDATE(),101) + ' 23:59:59')
BEGIN
UPDATE remitTran SET
cancelCharge = 0
WHERE controlNo = @controlNoEncrypted
SET @chargeToCustomer = 0
END
ELSE
BEGIN
UPDATE remitTran SET
cancelCharge = @cancelCharge
WHERE controlNo = @controlNoEncrypted
SET @chargeToCustomer = 1
END
EXEC FastMoneyPro_Account.dbo.[PROC_REMIT_DATA_UPDATE]
@flag = 'c'
,@user = @user
,@controlNo = @controlNo
-- ## Limit Update
EXEC Proc_AgentBalanceUpdate @flag = 'c',@tAmt = @cAmt ,@settlingAgent = @settlingAgent
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC [proc_errorHandler] 0, 'Transaction Cancelled successfully', @tranId
END
ELSE IF @flag = 'cancelReject'
BEGIN
--EXEC proc_cancelTran @flag = 'cancelReject', @controlNo = ''
BEGIN TRANSACTION
UPDATE remitTran SET
tranStatus = 'Payment'
WHERE controlNo = @controlNoEncrypted
--End-----------------------------------------------------------------------------------------------------------------
--Transaction Log---------------------------
SELECT @tranId = id FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
SELECT @message = 'Cancel Request for this transaction rejected'
EXEC proc_transactionLogs 'i', @user, @tranId, @message, 'Cancel Reject'
--------------------------------------------
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Cancel Request rejected successfully', @controlNoEncrypted
select 'a'
REturn
--EXEC proc_addCommentAPI @flag = 'i', @controlNo = @controlNo, @user = @user, @message = @message, @agentRefId = NULL
END
-->> Direct internation cancel
ELSE IF @flag = 'cancelTxnAdmin'
BEGIN
DECLARE @serviceCharge MONEY,@scRefund MONEY,@cancelReason1 VARCHAR(MAX),@canceledAmt MONEY,@createdBy AS VARCHAR(50),@branchId INT,
@isPaidTxn CHAR(1), @sCountryId INT, @pCountryId INT, @pAgent INT, @bonusPoint INT,@holdTranId bigint
SELECT
@tranId = a.id
,@serviceCharge = a.serviceCharge
,@tAmt = a.tAmt
,@cAmt = a.cAmt
,@createdBy = a.createdBy
,@tranStatus = a.tranStatus
,@branchId = a.sBranch
,@isPaidTxn = CASE WHEN (paidBy IS NOT NULL OR paidDate IS NOT NULL) THEN 'Y' ELSE 'N' END
,@sCountryId = (SELECT countryId FROM countryMaster WITH(NOLOCK) WHERE countryName = sCountry)
,@sAgent = sAgent
,@sBranch = sBranch
,@pCountryId = (SELECT countryId FROM countryMaster WITH(NOLOCK) WHERE countryName = pCountry)
,@pAgent = pAgent
,@bonusPoint = ISNULL(a.bonusPoint, 0)
,@payStatus = a.payStatus
FROM vwRemitTran a WITH(NOLOCK)
WHERE a.controlNo = @controlNoEncrypted
IF @user IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Your session has expired. Cannot cancel transaction.', NULL
RETURN
END
IF (@tranStatus IS NULL)
BEGIN
EXEC proc_errorHandler 1, 'Transaction not found.', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Cancel')
BEGIN
EXEC proc_errorHandler 1, 'Transaction already been cancelled', @controlNoEncrypted
RETURN
END
IF (@payStatus = 'Post')
BEGIN
EXEC proc_errorHandler 1, 'Transaction already been POST.', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'CANCELLED')
BEGIN
EXEC proc_errorHandler 1, 'Transaction already been cancelled.', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Cancel Processing')
BEGIN
EXEC proc_errorHandler 1, 'Transaction already been cancelled.', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'ModificationRequest')
BEGIN
EXEC proc_errorHandler 1, 'Transaction already been requested for modification.', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Lock')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is locked. Please contact HO', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Block')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is blocked. Please contact HO', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'CancelRequest')
BEGIN
EXEC proc_errorHandler 1, 'Transaction already been requested for cancellation', @controlNoEncrypted
RETURN
END
IF EXISTS(SELECT 'x' FROM trancancelrequest WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND cancelStatus <> 'Rejected')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is already requested for cancel.', @controlNoEncrypted
RETURN
END
BEGIN TRANSACTION
INSERT INTO tranCancelrequest(tranId,controlNo,cancelReason,cancelStatus,
createdBy,createdDate,tranStatus,approvedBy,approvedDate,scRefund,isScRefund)
SELECT @tranId,@controlNoEncrypted,@cancelReason,'Approved',@user,GETDATE(),@tranStatus,@user,GETDATE(),
CASE WHEN @refund ='D' THEN @cAmt ELSE @tAmt END,@refund
IF @tranStatus NOT LIKE '%HOLD%'
BEGIN
UPDATE remitTran SET
tranStatus = 'Cancel'
,cancelApprovedBy = @user
,cancelApprovedDate = GETDATE()
,cancelApprovedDateLocal = GETDATE()
WHERE controlNo = @controlNoEncrypted
UPDATE FastMoneyPro_Account.dbo.remit_trn_master SET
trn_status = 'Cancel'
,cancel_date = GETDATE()
WHERE trn_ref_no = @controlNoEncrypted
-- ## Limit Update
EXEC Proc_AgentBalanceUpdate @flag = 'c',@tAmt = @cAmt, @settlingAgent = @sBranch
END
IF @tranStatus LIKE '%HOLD%'
BEGIN
-->> UPDATE REMITTRAN
UPDATE remitTranTemp SET
tranStatus = 'Cancel'
,cancelApprovedBy = @user
,cancelApprovedDate = GETDATE()
,cancelApprovedDateLocal = GETDATE()
WHERE controlNo = @controlNoEncrypted
INSERT INTO cancelTranHistory(
tranId,controlNo,sCurrCostRate,sCurrHoMargin,sCurrSuperAgentMargin,sCurrAgentMargin,pCurrCostRate
,pCurrHoMargin,pCurrSuperAgentMargin,pCurrAgentMargin,agentCrossSettRate,customerRate,sAgentSettRate,pDateCostRate,agentFxGain
,treasuryTolerance,customerPremium,schemePremium,sharingValue
--,sharingType
,serviceCharge,handlingFee,sAgentComm,sAgentCommCurrency
,sSuperAgentComm,sSuperAgentCommCurrency,pAgentComm,pAgentCommCurrency,pSuperAgentComm,pSuperAgentCommCurrency,promotionCode
,promotionType,pMessage,sCountry,sSuperAgent,sSuperAgentName,sAgent,sAgentName,sBranch,sBranchName,pCountry,pSuperAgent,pSuperAgentName
,pAgent,pAgentName,pBranch,pBranchName,paymentMethod,pBank,pBankName,pBankBranch,pBankBranchName,accountNo,externalBankCode,collMode
,collCurr,tAmt,cAmt,pAmt,payoutCurr,relWithSender,purposeOfRemit,sourceOfFund,tranStatus,payStatus,createdDate,createdDateLocal
,createdBy,modifiedDate,modifiedDateLocal,modifiedBy,approvedDate,approvedDateLocal,approvedBy,paidDate,paidDateLocal,paidBy
,cancelRequestDate,cancelRequestDateLocal,cancelRequestBy,cancelReason,refund,cancelCharge,cancelApprovedDate,cancelApprovedDateLocal
,cancelApprovedBy,blockedDate,blockedBy,lockedDate,lockedDateLocal,lockedBy,payTokenId,tranType,ContNo
,uploadLogId,voucherNo,controlNo2,pBankType,senderName,receiverName
)
SELECT
id,controlNo,sCurrCostRate,sCurrHoMargin,sCurrSuperAgentMargin,sCurrAgentMargin,pCurrCostRate
,pCurrHoMargin,pCurrSuperAgentMargin,pCurrAgentMargin,agentCrossSettRate,customerRate,sAgentSettRate,pDateCostRate,agentFxGain
,treasuryTolerance,customerPremium,schemePremium,sharingValue
--,sharingType
,serviceCharge,handlingFee,sAgentComm,sAgentCommCurrency
,sSuperAgentComm,sSuperAgentCommCurrency,pAgentComm,pAgentCommCurrency,pSuperAgentComm,pSuperAgentCommCurrency,promotionCode
,promotionType,pMessage,sCountry,sSuperAgent,sSuperAgentName,sAgent,sAgentName,sBranch,sBranchName,pCountry,pSuperAgent,pSuperAgentName
,pAgent,pAgentName,pBranch,pBranchName,paymentMethod,pBank,pBankName,pBankBranch,pBankBranchName,accountNo,externalBankCode,collMode
,collCurr,tAmt,cAmt,pAmt,payoutCurr,relWithSender,purposeOfRemit,sourceOfFund,tranStatus,payStatus,createdDate,createdDateLocal
,createdBy,modifiedDate,modifiedDateLocal,modifiedBy,approvedDate,approvedDateLocal,approvedBy,paidDate,paidDateLocal,paidBy
,cancelRequestDate,cancelRequestDateLocal,cancelRequestBy,@cancelReason1,refund,cancelCharge,dbo.FNADateFormatTZ(GETDATE(), @user),GETDATE()
,@user,blockedDate,blockedBy,lockedDate,lockedDateLocal,lockedBy,payTokenId,tranType,ContNo
,uploadLogId,voucherNo,controlNo2,pBankType,senderName,receiverName
FROM remitTranTemp WHERE controlNo = @controlNoEncrypted
INSERT INTO cancelTranSendersHistory
(tranId,customerId,membershipId,firstName,middleName,lastName1,lastName2,fullName,country,address,STATE,district,
zipCode,city,email,homePhone,workPhone,mobile,nativeCountry,dob,placeOfIssue,customerType,occupation,idType,
idNumber,idPlaceOfIssue,issuedDate,validDate,extCustomerId,cwPwd,ttName,isFirstTran,customerRiskPoint,countryRiskPoint,
gender,salary,companyName,address2,dcInfo,ipAddress,notifySms,txnTestQuestion,txnTestAnswer)
SELECT tranId,customerId,membershipId,firstName,middleName,lastName1,lastName2,fullName,country,address,STATE,district,
zipCode,city,email,homePhone,workPhone,mobile,nativeCountry,dob,placeOfIssue,customerType,occupation,idType,
idNumber,idPlaceOfIssue,issuedDate,validDate,extCustomerId,cwPwd,ttName,isFirstTran,customerRiskPoint,countryRiskPoint,
gender,salary,companyName,address2,dcInfo,ipAddress,notifySms,txnTestQuestion,txnTestAnswer
FROM transenderstemp WITH(NOLOCK) WHERE tranId = @tranId
INSERT INTO cancelTranReceiversHistory
(tranId,customerId,membershipId,firstName,middleName,lastName1,lastName2,fullName,country,address,
STATE,district,zipCode,city,email,homePhone,workPhone,mobile,nativeCountry,dob,placeOfIssue,customerType,
occupation,idType,idNumber,idPlaceOfIssue,issuedDate,validDate,idType2,idNumber2,idPlaceOfIssue2,issuedDate2,
validDate2,relationType,relativeName,gender,address2,dcInfo,ipAddress)
SELECT tranId,customerId,membershipId,firstName,middleName,lastName1,lastName2,fullName,country,address,
STATE,district,zipCode,city,email,homePhone,workPhone,mobile,nativeCountry,dob,placeOfIssue,customerType,
occupation,idType,idNumber,idPlaceOfIssue,issuedDate,validDate,idType2,idNumber2,idPlaceOfIssue2,issuedDate2,
validDate2,relationType,relativeName,gender,address2,dcInfo,ipAddress
FROM tranReceiversTemp WITH(NOLOCK) WHERE tranId = @tranId
-- ## Limit Update
UPDATE creditLimitInt SET
todaysSent = ISNULL(todaysSent,0) - @canceledAmt
WHERE agentId = @sAgent
DELETE FROM remitTranTemp WHERE controlNo = @controlNoEncrypted
DELETE FROM tranSendersTemp WHERE tranId = @tranId
DELETE FROM tranReceiversTemp WHERE tranId = @tranId
END
SELECT @message = 'Transaction cancel has been done successfully.'
EXEC proc_transactionLogs 'i', @user, @tranId, @message, 'Transaction Cancel Approved'
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC [proc_errorHandler] 0, 'Transaction cancel has been done successfully', @tranId
END
GO