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.
 
 
 

374 lines
9.5 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_payTxnValidation] Script Date: 7/4/2019 11:35:48 AM ******/
DROP PROCEDURE [dbo].[proc_payTxnValidation]
GO
/****** Object: StoredProcedure [dbo].[proc_payTxnValidation] Script Date: 7/4/2019 11:35:48 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[proc_payTxnValidation](
@flag VARCHAR(1)
,@user VARCHAR(50)
,@rowId BIGINT = NULL
,@controlNo VARCHAR(50) = NULL
,@partnerId VARCHAR(30) = NULL
,@pBranchId VARCHAR(50) = NULL
)
AS
DECLARE
@mapCodeDom VARCHAR(50)
,@tranStatus VARCHAR(50)
,@tranId INT
,@payStatus VARCHAR(50)
,@controlNoEncrypted VARCHAR(50)
,@agentType VARCHAR(50)
,@pTxnLocation VARCHAR(50)
,@pAgentLocation VARCHAR(50)
,@pAgent VARCHAR(50)
,@paymentMethod VARCHAR(50)
,@sBranchId VARCHAR(50)
,@branchName VARCHAR(200)
,@mapCodeInt VARCHAR(50)
,@lockStatus VARCHAR(50)
,@userAgentId INT
,@complianceHoldPay CHAR(1)
SET @controlNo = UPPER(@controlNo)
SET @controlNoEncrypted = DBO.FNAEncryptString(LTRIM(RTRIM(@controlNo))
IF @flag = 'S'
BEGIN
IF (@partnerId='IME-D')
BEGIN
IF @user IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Your session has expired. Please relogin to the system.', @controlNo
RETURN
END
SELECT @userAgentId = agentId
from applicationUsers with(nolock) where userName = @user
IF @userAgentId <> 1001
BEGIN
DECLARE @hasRight CHAR(1), @payDomesticFunctionId VARCHAR(50)
SET @payDomesticFunctionId = '40101311,40101520'
SELECT @hasRight = dbo.FNAHasRight(@user, @payDomesticFunctionId)
IF(@hasRight = 'N')
BEGIN
EXEC proc_errorHandler 1, 'You are not authorized to pay domestic transaction.', NULL
RETURN
END
END
DECLARE @settlingAgent INT
IF EXISTS(SELECT 'A' FROM dbo.agentMaster WHERE agentId = @userAgentId AND agentType = 2903)
BEGIN
SET @settlingAgent = @userAgentId
END
ELSE
BEGIN
SELECT @settlingAgent = parentId FROM dbo.agentMaster WHERE agentId = @userAgentId
END
DECLARE @limitBal MONEY
SET @limitBal = [dbo].FNAGetLimitBal(@settlingAgent)
IF NOT EXISTS(SELECT 'A' FROM dbo.creditlimit (NOLOCK) WHERE agentId = @settlingAgent) AND ISNULL(@limitBal, 0) = 0
BEGIN
SELECT 1 errorCode,'Credit limit not set for receiving agent, please contact HO.' msg,NULL id,'creditLimit' vtype
RETURN
END
IF @pBranchId IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Please Choose Paying Agent', NULL
RETURN
END
SELECT
@mapCodeDom = mapCodeDom,
@agentType = agentType,
@pAgentLocation = agentLocation,
@branchName = agentName
FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranchId
IF (@mapCodeDom IS NULL OR @mapCodeDom = '' OR @mapCodeDom = 0)
BEGIN
EXEC proc_errorHandler 1, 'Invalid Map Code', NULL
RETURN
END
SELECT
@tranStatus = tranStatus,
@tranId = id,
@payStatus = payStatus ,
@controlNoEncrypted = rt.controlNo,
@paymentMethod = paymentMethod,
@sBranchId = sBranch,
@pTxnLocation = pLocation,
@complianceHoldPay = CASE WHEN ISNULL(tc.controlNo ,'')='' THEN 'N'
ELSE 'Y'
END
FROM remitTran rt WITH(NOLOCK)
LEFT JOIN tranPayCompliance tc WITH(NOLOCK)
ON rt.controlNo = tc.controlNo
WHERE rt.controlNo = @controlNoEncrypted
IF @tranStatus IS NULL
BEGIN
EXEC proc_errorHandler 1000, 'Transaction not found', NULL
RETURN
END
IF @agentType = 2903
BEGIN
SET @pAgent = @pBranchId
END
INSERT INTO tranViewHistory(
controlNumber
,tranViewType
,agentId
,createdBy
,createdDate
,tranId
)
SELECT
@controlNoEncrypted
,'PAY'
,@pBranchId
,@user
,GETDATE()
,@tranId
IF @paymentMethod = 'Bank Deposit'
BEGIN
EXEC proc_errorHandler 1, 'Cannot process payment for Payment Type Bank Deposit', NULL
RETURN
END
IF @sBranchId = @pBranchId
BEGIN
EXEC proc_errorHandler 1, 'Cannot process payment for same POS', @tranId
RETURN
END
IF (@tranStatus = 'CancelRequest')
BEGIN
EXEC proc_errorHandler 1, 'Transaction has been requested for cancel', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Lock' )
BEGIN
EXEC proc_errorHandler 1, 'Transaction is locked', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Block')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is blocked. Please Contact HO', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Paid')
BEGIN
EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
RETURN
END
IF (@payStatus = 'Paid')
BEGIN
EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Hold')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is hold', @controlNoEncrypted
RETURN
END
IF @tranStatus IN ('Hold','OFAC Hold','Compliance Hold','OFAC/Compliance Hold','Compliance Hold Pay')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is hold', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Cancel')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is cancelled', @controlNoEncrypted
RETURN
END
IF (@tranStatus <> 'Payment')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is not in authorized mode', @controlNoEncrypted
RETURN
END
DECLARE @tranDistrictId INT, @payAgentDistrictId INT
SELECT @payAgentDistrictId = districtId FROM apiLocationMapping WHERE apiDistrictCode = @pAgentLocation
SELECT @tranDistrictId = districtId FROM apiLocationMapping WHERE apiDistrictCode = @pTxnLocation
IF @payAgentDistrictId IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Location not found. Please Contact HO', @controlNo
RETURN
END
IF @tranDistrictId IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Location not found. Please Contact HO', @controlNo
RETURN
END
IF(@tranDistrictId <> @payAgentDistrictId)
BEGIN
EXEC proc_errorHandler 1, 'You are not allowed to pay this TXN. It is not within your district.', @controlNoEncrypted
RETURN
END
IF @complianceHoldPay = 'Y'
BEGIN
EXEC proc_errorHandler 101, 'Transaction Verification Successful', @tranId
END
EXEC proc_errorHandler 0, 'Transaction Verification Successful', @tranId
END
IF (@partnerId='IME-I')
BEGIN
IF @pBranchId IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Please Choose Agent', NULL
RETURN
END
SELECT
@mapCodeInt = mapCodeInt
,@agentType = agentType
,@pAgentLocation = agentLocation
FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranchId
IF (@mapCodeInt IS NULL OR @mapCodeInt = '' OR @mapCodeInt = 0)
BEGIN
EXEC proc_errorHandler 1, 'Invalid Map Code', NULL
RETURN
END
SELECT
@tranStatus = tranStatus
, @tranId = id
, @lockStatus = lockStatus
, @payStatus = payStatus
, @sBranchId = sBranch
, @paymentMethod = paymentMethod
, @complianceHoldPay = CASE WHEN ISNULL(tc.controlNo ,'')='' THEN 'N'
ELSE 'Y'
END
FROM remitTran rt WITH(NOLOCK)
LEFT JOIN tranPayCompliance tc WITH(NOLOCK)
ON rt.controlNo = tc.controlNo
WHERE rt.controlNo = @controlNoEncrypted
IF @tranStatus IS NULL
BEGIN
EXEC proc_errorHandler 1000, 'Transaction not found', NULL
RETURN
END
IF @agentType = 2903
BEGIN
SET @pAgent = @pBranchId
END
INSERT INTO tranViewHistory(
controlNumber
,tranViewType
,agentId
,createdBy
,createdDate
,tranId
)
SELECT
@controlNoEncrypted
,'PAY'
,@pBranchId
,@user
,GETDATE()
,@tranId
IF @paymentMethod = 'Bank Deposit'
BEGIN
EXEC proc_errorHandler 1, 'Cannot process payment for Payment Type Bank Deposit', NULL
RETURN
END
IF @sBranchId = @pBranchId
BEGIN
EXEC proc_errorHandler 1, 'Cannot process payment for same POS', @tranId
RETURN
END
IF (@tranStatus = 'CancelRequest')
BEGIN
EXEC proc_errorHandler 1, 'Transaction has been requested for cancel', @controlNoEncrypted
RETURN
END
IF (@lockStatus = 'Lock' )
BEGIN
EXEC proc_errorHandler 1, 'Transaction is locked', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Lock' )
BEGIN
EXEC proc_errorHandler 1, 'Transaction is locked', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Block')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is blocked. Please Contact HO', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Paid')
BEGIN
EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
RETURN
END
IF (@payStatus = 'Paid')
BEGIN
EXEC proc_errorHandler 1, 'Transaction has already been paid', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Compliance')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is in Compliance !!!', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Hold')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is hold', @controlNoEncrypted
RETURN
END
IF @tranStatus IN ('Hold','OFAC Hold','Compliance Hold','OFAC/Compliance Hold','Compliance Hold Pay')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is hold', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Cancel')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is cancelled', @controlNoEncrypted
RETURN
END
IF (@tranStatus <> 'Payment')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is not in authorized mode', @controlNoEncrypted
RETURN
END
IF @complianceHoldPay = 'Y'
BEGIN
EXEC proc_errorHandler 101, 'Transaction Verification Successful', @tranId
END
EXEC proc_errorHandler 0, 'Transaction Verification Successful', @tranId
END
END
GO