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.
1790 lines
142 KiB
1790 lines
142 KiB
USE [FastMoneyPro_Remit]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_Online_sendTxnTP] Script Date: 9/27/2019 1:30:14 PM ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
ALTER PROC [dbo].[proc_Online_sendTxn]
|
|
(
|
|
@flag VARCHAR(50) ,
|
|
@user VARCHAR(100) ,
|
|
@senderId VARCHAR(50) = NULL ,
|
|
@sIpAddress VARCHAR(50) = NULL ,
|
|
@benId VARCHAR(50) = NULL ,
|
|
@rfName VARCHAR(100) = NULL ,
|
|
@sIdType VARCHAR(100) =NULL,
|
|
@sIdNo VARCHAR(100) =NULL,
|
|
@sMobile VARCHAR(50) = NULL ,
|
|
@rIdType VARCHAR(100) = NULL ,
|
|
@rIdNo VARCHAR(50) = NULL ,
|
|
@rIdValid DATETIME = NULL ,
|
|
@rdob DATETIME = NULL ,
|
|
@rTel VARCHAR(20) = NULL ,
|
|
@rMobile VARCHAR(20) = NULL ,
|
|
@rNaCountry VARCHAR(50) = NULL ,
|
|
@rcity VARCHAR(100) = NULL ,
|
|
@rAdd1 VARCHAR(150) = NULL ,
|
|
@rEmail VARCHAR(100) = NULL ,
|
|
@raccountNo VARCHAR(50) = NULL ,
|
|
@pCountry VARCHAR(50) = NULL -- pay country
|
|
,@pCountryId INT = NULL -- PAY COUNTRY ID
|
|
,@deliveryMethod VARCHAR(50) = NULL -- payment mode
|
|
,@deliveryMethodId INT = NULL -- payment mode ID
|
|
,@pBank INT = NULL ,
|
|
@pBankName VARCHAR(100) = NULL ,
|
|
@pBankBranch INT = NULL ,
|
|
@pBankBranchName VARCHAR(100) = NULL ,
|
|
@pAgent INT = NULL ,
|
|
@pAgentName VARCHAR(100) = NULL ,
|
|
@pBranch INT = NULL ,
|
|
@pBranchName VARCHAR(100) = NULL ,
|
|
@pBankType CHAR(1) = NULL ,
|
|
@pSuperAgent INT = NULL ,
|
|
@pCurr VARCHAR(3) = NULL ,
|
|
@collCurr VARCHAR(3) = NULL ,
|
|
@cAmt MONEY = NULL ,
|
|
@pAmt MONEY = NULL ,
|
|
@tAmt MONEY = NULL ,
|
|
@serviceCharge MONEY = NULL ,
|
|
@discount MONEY = NULL ,
|
|
@exRate DECIMAL(12,9) = NULL ,
|
|
@purpose VARCHAR(150) = NULL ,
|
|
@sourceOfFund VARCHAR(150) = NULL ,
|
|
@relationship VARCHAR(100) = NULL ,
|
|
@occupation VARCHAR(100) = NULL ,
|
|
@payMsg VARCHAR(1000) = NULL ,
|
|
@controlNo VARCHAR(20) = NULL ,
|
|
@sCountryId INT = NULL ,
|
|
@sCountry VARCHAR(100) = NULL ,
|
|
@sBranch INT = NULL ,
|
|
@sBranchName VARCHAR(100) = NULL ,
|
|
@sAgent INT = NULL ,
|
|
@sAgentName VARCHAR(100) = NULL ,
|
|
@sSuperAgent INT = NULL ,
|
|
@sSuperAgentName VARCHAR(100) = NULL ,
|
|
@settlingAgent INT = NULL ,
|
|
@branchMapCode VARCHAR(10) = NULL ,
|
|
@agentMapCode VARCHAR(10) = NULL ,
|
|
@collMode VARCHAR(50) = NULL ,
|
|
@depositMode VARCHAR(50) = NULL, -- DEPOSIT MODE CASH OR BANK
|
|
@calBy CHAR(1) = NULL ,
|
|
@scDiscount MONEY = NULL ,
|
|
@cardOnline VARCHAR(50) = NULL ,
|
|
@memberShipId VARCHAR(50) = NULL ,
|
|
@agentRefId VARCHAR(50) = NULL ,
|
|
@couponCode VARCHAR(20) = NULL ,
|
|
@schemeId BIGINT = NULL ,
|
|
@tranId VARCHAR(50) = NULL ,
|
|
@ScOrderNo BIGINT = NULL ,
|
|
@unitaryBankAccountNo VARCHAR(50) = NULL ,
|
|
@RState VARCHAR(10) = NULL,
|
|
@RStateText VARCHAR(150) = NULL,
|
|
@RLocation VARCHAR(20) = NULL,
|
|
@RLocationText VARCHAR(150) = NULL,
|
|
@VoucherXML XML=NULL,
|
|
@tpRefNo VARCHAR(20) = NULL,
|
|
@tpTranId VARCHAR(20) = NULL,
|
|
@payOutPartner BIGINT = NULL,
|
|
@FOREX_SESSION_ID VARCHAR(40) = NULL,
|
|
@kftcLogId BIGINT = NULL,
|
|
@paymentType VARCHAR(20) = NULL
|
|
)
|
|
AS
|
|
SET NOCOUNT ON;
|
|
SET XACT_ABORT ON;
|
|
IF @paymentType IS NULL
|
|
set @paymentType ='wallet'
|
|
|
|
IF @paymentType='autodebit'
|
|
BEGIN
|
|
DECLARE @DATE DATETIME, @NextDate datetime
|
|
select @DATE = CAST(GETDATE() AS DATE)
|
|
SELECT @NextDate = DATEADD(DAY,1,@DATE)
|
|
|
|
SELECT @DATE = @DATE+' 23:20:00',@NextDate = @NextDate+' 00:40:00'
|
|
|
|
IF GETDATE() BETWEEN @DATE AND @NextDate
|
|
BEGIN
|
|
SELECT '1' ErrorCode ,'KFTC service is not available between 11:30 PM to 12:30 AM' Msg ,NULL ID
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
BEGIN TRY
|
|
BEGIN
|
|
DECLARE @sCurrCostRate FLOAT ,
|
|
@sCurrHoMargin FLOAT ,
|
|
@pCurrCostRate FLOAT ,
|
|
@pCurrHoMargin FLOAT ,
|
|
@sCurrAgentMargin FLOAT ,
|
|
@pCurrAgentMargin FLOAT ,
|
|
@sCurrSuperAgentMargin FLOAT ,
|
|
@pCurrSuperAgentMargin FLOAT ,
|
|
@customerRate DECIMAL(15,10) ,
|
|
@sAgentSettRate FLOAT ,
|
|
@pDateCostRate FLOAT ,
|
|
@agentCrossSettRate FLOAT ,
|
|
@treasuryTolerance FLOAT ,
|
|
@customerPremium FLOAT ,
|
|
@schemePremium MONEY = NULL,
|
|
@sharingValue MONEY ,
|
|
@sharingType CHAR(1) ,
|
|
@sAgentComm MONEY ,
|
|
@sAgentCommCurrency VARCHAR(3) ,
|
|
@sSuperAgentComm MONEY ,
|
|
@sSuperAgentCommCurrency VARCHAR(3) ,
|
|
@pAgentComm MONEY ,
|
|
@pAgentCommCurrency VARCHAR(3) ,
|
|
@pCommissionType CHAR(1) ,
|
|
@pSuperAgentComm MONEY ,
|
|
@pSuperAgentCommCurrency VARCHAR(3) ,
|
|
@pSuperAgentName VARCHAR(100),
|
|
@pStateId INT,
|
|
@senderName VARCHAR(100) ,
|
|
@id INT ,
|
|
@customerStatus VARCHAR(20) ,
|
|
@idExpiryDate DATETIME,
|
|
@customerType INT;
|
|
|
|
DECLARE @errorCode CHAR(1)= '0' ,@agentAvlLimit MONEY;
|
|
|
|
DECLARE @rowId INT;
|
|
DECLARE @scValue MONEY ,
|
|
@exRateOffer MONEY ,
|
|
@scAction VARCHAR(5) ,
|
|
@AmountLimitPerTran MONEY ,
|
|
@AmountLimitPerDay MONEY ,
|
|
@todaysTotalSent MONEY ,
|
|
@tranMinimum MONEY ,
|
|
@tranMaximum MONEY
|
|
|
|
DECLARE @ad FLOAT;
|
|
|
|
DECLARE @xAmt MONEY ,
|
|
@sendingCustType INT ,
|
|
@msg VARCHAR(MAX);
|
|
DECLARE @iServiceCharge MONEY ,
|
|
@iTAmt MONEY ,
|
|
@iPAmt MONEY ,
|
|
@iCAmt MONEY ,
|
|
@iCustomerRate FLOAT
|
|
DECLARE @place INT ,
|
|
@currDecimal INT;
|
|
|
|
DECLARE @controlNoEncrypted VARCHAR(20);
|
|
DECLARE @csMasterId INT ,
|
|
@count INT ,
|
|
@compFinalRes VARCHAR(20);
|
|
DECLARE @GMTDate VARCHAR(50);
|
|
DECLARE @createdDate DATETIME;
|
|
DECLARE @SENDERS_IDENTITY_TYPE VARCHAR(50);
|
|
|
|
SET @GMTDate = dbo.FNAGMTOnline(GETDATE(), @user);
|
|
|
|
SELECT @sAgent = sAgent, @sAgentName = sAgentName, @sBranch = sBranch, @sBranchName = sBranchName,
|
|
@sSuperAgent = sSuperAgent, @sSuperAgentName = sSuperAgentName
|
|
FROM dbo.FNAGetBranchFullDetails(@sBranch)
|
|
|
|
|
|
IF @pCountryId IS NULL
|
|
SELECT TOP 1 @pCountryId = countryId FROM countryMaster (NOLOCK) WHERE countryName = @pCountry
|
|
|
|
IF @pCountry LIKE '%?%'
|
|
SELECT TOP 1 @pCountry = COUNTRYNAME FROM COUNTRYMASTER (NOLOCK) WHERE COUNTRYID = @pCountryId
|
|
|
|
SELECT @pBank = @pAgent,
|
|
@pBankName = @pAgentName,
|
|
@pBankBranch = @pBranch ,
|
|
@pBankBranchName = CASE WHEN @pBranchName IS NULL THEN (SELECT TOP 1 agentName FROM agentMaster(NOLOCK) WHERE agentId = @pBranch) ELSE @pBranchName END;
|
|
SELECT @pAgent = null ,
|
|
@pAgentName = NULL ,
|
|
@pBranch = NULL ,
|
|
@pBranchName = NULL;
|
|
|
|
DECLARE @discountType VARCHAR(2) = null, @discountvalue money =null, @couponType VARCHAR(3) = NULL, @discountPercent money = null, @couponName VARCHAR(20) = NULL
|
|
|
|
SET @sCountryId = 118
|
|
SET @sCountry = 'South Korea'
|
|
SET @sAgentCommCurrency = 'KRW'
|
|
|
|
if @pCountryId in(151) AND @deliveryMethod <> 'MOBILE WALLET'
|
|
begin
|
|
set @pAgent = @payOutPartner
|
|
end
|
|
else
|
|
begin
|
|
SELECT TOP 1 @pAgent = AM.agentId
|
|
FROM agentMaster AM(NOLOCK)
|
|
WHERE AM.parentId = @payOutPartner AND agentType=2903 AND AM.isSettlingAgent = 'Y' AND AM.isApiPartner = 1
|
|
end
|
|
|
|
DECLARE @SWIFTCODE VARCHAR(20)
|
|
|
|
SELECT TOP 1 @SWIFTCODE = SWIFTCODE FROM AGENTMASTER(NOLOCK) WHERE agentId = @pBank AND agentType='2903' AND isActive='Y' AND agentCountryId IN('16','203','218','174')
|
|
|
|
IF @SWIFTCODE IN('BNGC00000039','BNGB00000060','BNGB00000020')--dutchBangla
|
|
SET @pAgent = '393864'
|
|
ELSE IF @SWIFTCODE IN ('BNGC0000002','BNGB00000048')--agrani
|
|
SET @pAgent = '404526'
|
|
ELSE IF @SWIFTCODE IN('BNGC00000040','BNGB00000049')--islami
|
|
SET @pAgent = '566853'
|
|
|
|
--ELSE IF @SWIFTCODE = 'PHC0000003' ----## IF CEBUEANA LHUILLIER
|
|
-- SET @pAgent = 601392
|
|
--ELSE IF @SWIFTCODE IN ('VN00000040','VN00000006','VN00000005','VN00000003') AND @deliveryMethod='2' ----## IF Eximbank
|
|
-- SET @pAgent = 601361
|
|
ELSE IF @SWIFTCODE = 'THB00000023' ----## K BANK THAILAND
|
|
SELECT @pAgent = 224389
|
|
--ELSE IF @pBank = 566989 ----## Islami Bank Bangladesh Limited(EXRATE FROM LOCAL SETUP)
|
|
-- SELECT @pAgent = 566853
|
|
|
|
SELECT @pSuperAgent = sSuperAgent,@pSuperAgentName = sSuperAgentName,
|
|
@pAgent = sAgent,@pAgentName = sAgentName ,@pBranch = sBranch,@pBranchName = sBranchName
|
|
FROM dbo.FNAGetBranchFullDetails(@pAgent)
|
|
|
|
IF @flag = 'exRate' --Get Exchange Rate, Service Charge, Scheme/Offer and amount details
|
|
BEGIN
|
|
IF @payOutPartner IN (224388,2140,393227,415207) and @pCurr <>'USD' --## TANGLO,MTRADE
|
|
BEGIN
|
|
SELECT '1' ErrorCode ,
|
|
'Oops, something went wrong.Please perform the transaction again!' Msg ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = @todaysTotalSent ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = @tranMinimum;
|
|
RETURN;
|
|
END;
|
|
SELECT TOP 1
|
|
@senderId = customerId ,
|
|
@idExpiryDate = idExpiryDate ,
|
|
@createdDate = createdDate,
|
|
@sIdNo = idNumber,
|
|
@sIdType = idType,
|
|
@agentAvlLimit = dbo.FNAGetCustomerACBal(@user),
|
|
@customerStatus = CASE WHEN customerStatus IS NULL THEN 'pending' ELSE 'verified' END,
|
|
@todaysTotalSent = ISNULL(todaysSent, 0),
|
|
@customerType = customerType
|
|
FROM customerMaster WITH ( NOLOCK ) WHERE email = @user;
|
|
|
|
|
|
|
|
SELECT TOP 1 @sIdType = detailTitle FROM staticDataValue(NOLOCK) WHERE valueId = @sIdType
|
|
|
|
SELECT @scValue = 0 ,
|
|
@exRateOffer = 0 ,
|
|
@scDiscount = 0 ,
|
|
@AmountLimitPerTran = 3000,
|
|
@AmountLimitPerDay = 20000
|
|
|
|
-- IF ( @idExpiryDate < GETDATE() AND @sIdType <> 'National ID')
|
|
-- BEGIN
|
|
-- SELECT TOP 1 '1' ErrorCode ,
|
|
-- 'Your provided photo id has been expired. Please contact GME Support Team by writing email to support@gmeremit.com or call on +44 (0) 20 8861 2264.' Msg ,
|
|
-- amountLimitPerDay = @AmountLimitPerDay ,
|
|
-- customerTotalSentAmt = @todaysTotalSent ,
|
|
-- maxAmountLimitPerTran = @tranMaximum ,
|
|
-- PerTxnMinimumAmt = @tranMinimum;
|
|
-- RETURN;
|
|
--END;
|
|
|
|
SELECT TOP 1 @place = place ,
|
|
@currDecimal = currDecimal
|
|
FROM currencyPayoutRound(NOLOCK)
|
|
WHERE ISNULL(isDeleted, 'N') = 'N'
|
|
AND currency = @pCurr AND (tranType IS NULL OR tranType = @deliveryMethod);
|
|
|
|
SET @currDecimal = ISNULL(@currDecimal,0)
|
|
|
|
IF @pCurr IS NULL
|
|
BEGIN
|
|
SELECT '1' ErrorCode ,
|
|
'Currency not been defined yet for receiving country' Msg ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = @todaysTotalSent ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = @tranMinimum;
|
|
RETURN;
|
|
END;
|
|
|
|
SELECT @exRate =
|
|
dbo.FNAGetCustomerRate(@sCountryId,@sAgent,@sBranch,@collCurr,@pCountryId,@pAgent, @pCurr,@deliveryMethod);
|
|
|
|
IF @exRate IS NULL
|
|
BEGIN
|
|
SELECT '1' ErrorCode ,
|
|
'Exchange rate not defined yet for receiving currency ('+ @pCurr + ')' Msg ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = @todaysTotalSent ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = @tranMinimum;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
----- Calculation service charge using coupon
|
|
|
|
-- IF EXISTS (SELECT '1'
|
|
-- FROM CouponIssue(NOLOCK) AS CI
|
|
-- INNER JOIN CouponSetup(NOLOCK) AS CS
|
|
-- ON CI.couponId = CS.rowId
|
|
-- WHERE CI.customerId = @senderId
|
|
-- AND CI.endDate >= GETDATE()
|
|
-- AND CI.isActive = 'Y'
|
|
-- AND CS.endDate >= GETDATE()
|
|
-- AND CS.isActive = 'Y'
|
|
-- AND CS.couponType = '1'
|
|
-- AND (ISNULL(CS.usageLimit,0) = 0
|
|
-- OR ISNULL(CS.usageLimit,0) > ISNULL(CI.usedCount,0))
|
|
-- )
|
|
--BEGIN
|
|
SELECT TOP(1) @discountType = CS.discountType,
|
|
@couponName = CS.couponName,
|
|
@discountvalue = CS.discountValue,
|
|
@schemeId = CI.rowId, -- ADD coponIssue ID
|
|
@couponType = CS.couponType
|
|
FROM CouponIssue(NOLOCK) CI
|
|
INNER JOIN CouponSetup(NOLOCK) CS
|
|
ON CI.couponId = CS.rowId
|
|
WHERE CI.isActive = 'Y'
|
|
AND CI.endDate >= GETDATE()
|
|
AND CS.endDate >= GETDATE()
|
|
AND CS.isActive = 'Y'
|
|
AND CS.couponType = '1'
|
|
AND CI.customerId = @senderId
|
|
AND (ISNULL(CS.usageLimit,0) = 0
|
|
OR CS.usageLimit > CI.usedCount)
|
|
ORDER BY CI.rowId ASC
|
|
|
|
-- @discountType 1: PERCENTAGE, 2: MONEY
|
|
IF @discountType ='2'
|
|
BEGIN
|
|
SET @scDiscount = @discountvalue
|
|
END
|
|
--END
|
|
|
|
IF @calBy = 'C'
|
|
BEGIN
|
|
IF @pCountryId = 36
|
|
BEGIN
|
|
SET @pAmt = @cAmt * @exRate
|
|
SELECT @serviceCharge = amount
|
|
FROM [dbo].FNAGetServiceCharge(@sCountryId,@sSuperAgent,@sAgent,@sBranch,
|
|
@pCountryId,@pSuperAgent,@pAgent,NULL,@deliveryMethod,@pAmt,@collCurr);
|
|
END
|
|
--ELSE IF @pCountryId = 42 AND @pCurr = 'USD' and @deliveryMethod = 2
|
|
--BEGIN
|
|
-- SET @pAmt = @cAmt * @exRate
|
|
-- SELECT @serviceCharge = amount
|
|
-- FROM [dbo].FNAGetServiceCharge(@sCountryId,@sSuperAgent,@sAgent,@sBranch,
|
|
-- @pCountryId,@pSuperAgent,@pAgent,NULL,@deliveryMethod,@pAmt,'USD');
|
|
--END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @serviceCharge = amount
|
|
FROM [dbo].FNAGetServiceCharge(@sCountryId,@sSuperAgent,@sAgent,@sBranch,
|
|
@pCountryId,@pSuperAgent,@pAgent,@pBranch,@deliveryMethod,@cAmt,@collCurr);
|
|
END
|
|
IF @serviceCharge IS NULL
|
|
BEGIN
|
|
SELECT '1' ErrorCode ,
|
|
'Service charge not defined yet for receiving country' Msg ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = @todaysTotalSent ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = @tranMinimum;
|
|
RETURN;
|
|
END;
|
|
-- @discountType 1: PERCENTAGE, 2: MONEY
|
|
IF @discountType = '1'
|
|
BEGIN
|
|
|
|
SET @discountPercent = @discountvalue
|
|
SET @discountvalue = @serviceCharge * (@discountvalue/100)
|
|
SET @scDiscount = @discountvalue
|
|
END
|
|
|
|
|
|
SET @tAmt = @cAmt - @serviceCharge;
|
|
|
|
SET @pAmt = ( @cAmt-@serviceCharge ) * @exRate
|
|
SET @pAmt = ROUND(@pAmt,@currDecimal)
|
|
END;
|
|
ELSE
|
|
IF @calBy = 'P'
|
|
BEGIN
|
|
SET @tAmt = @pAmt / @exRate
|
|
|
|
IF @pCountryId = 36
|
|
BEGIN
|
|
SELECT @serviceCharge = amount
|
|
FROM [dbo].FNAGetServiceCharge(@sCountryId,@sSuperAgent,@sAgent,@sBranch,
|
|
@pCountryId,@pSuperAgent,@pAgent,NULL,@deliveryMethod,@pAmt,@collCurr);
|
|
END
|
|
--ELSE IF @pCountryId = 42 AND @pCurr = 'USD' and @deliveryMethod = 2
|
|
--BEGIN
|
|
-- SELECT @serviceCharge = amount
|
|
-- FROM [dbo].FNAGetServiceCharge(@sCountryId,@sSuperAgent,@sAgent,@sBranch,
|
|
-- @pCountryId,@pSuperAgent,@pAgent,NULL,@deliveryMethod,@pAmt,'USD');
|
|
--END
|
|
ELSE
|
|
BEGIN
|
|
|
|
SELECT @serviceCharge = amount
|
|
FROM [dbo].FNAGetServiceCharge(@sCountryId,@sSuperAgent,@sAgent,@sBranch,
|
|
@pCountryId,@pSuperAgent,@pAgent,@pBranch,@deliveryMethod,
|
|
@tAmt, @collCurr);
|
|
END
|
|
|
|
IF @serviceCharge IS NULL
|
|
BEGIN
|
|
SELECT '1' ErrorCode ,
|
|
'Service charge not defined yet for receiving country' Msg ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = @todaysTotalSent ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = @tranMinimum;
|
|
RETURN;
|
|
END;
|
|
-- @discountType 1: PERCENTAGE, 2: MONEY
|
|
IF @discountType = '1'
|
|
BEGIN
|
|
SET @discountPercent = @discountvalue
|
|
SET @discountvalue = @serviceCharge * (@discountvalue/100)
|
|
SET @scDiscount = @discountvalue
|
|
END
|
|
|
|
|
|
SET @tAmt = ROUND(@tAmt, 0);
|
|
SET @cAmt = ( @tAmt + @serviceCharge );
|
|
|
|
SET @cAmt = ROUND(@cAmt, 0);
|
|
END;
|
|
|
|
/* Easy Remit limit check */
|
|
IF @customerType = '11048'
|
|
BEGIN
|
|
IF ISNULL(@cAmt, 0) > 1000000
|
|
BEGIN
|
|
SELECT '1' ErrorCode ,
|
|
'You cannot remit more than one million(KRW).' Msg ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = @todaysTotalSent ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = @tranMinimum
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
IF @serviceCharge > @cAmt
|
|
BEGIN
|
|
SELECT '1' ErrorCode ,
|
|
'COLLECTION AMOUNT SHOULD BE MORE THAN SERVICE CHARGE' Msg ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = @todaysTotalSent ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = @tranMinimum;
|
|
RETURN;
|
|
END;
|
|
|
|
--4. Validate Country Sending Limit
|
|
EXEC PROC_CHECKCOUNTRYLIMIT @flag = 's-limit', @cAmt = @tAmt, @pAmt = @pAmt, @sCountryId = @sCountryId, @collMode = @collMode
|
|
,@deliveryMethod = @deliveryMethod,@sendingCustType = @sendingCustType,@pCountryId = @pCountryId,@pCurr = @pCurr, @collCurr = @collCurr
|
|
,@pAgent = @pAgent, @sAgent = @sAgent, @sBranch = @sBranch
|
|
,@msg = @msg OUT, @errorCode = @errorCode OUT
|
|
|
|
IF @errorCode <> '0'
|
|
BEGIN
|
|
SELECT @errorCode ErrorCode ,
|
|
@msg Msg ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = @todaysTotalSent ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = @tranMinimum;
|
|
RETURN;
|
|
END
|
|
--Validate Country Sending Limit END
|
|
|
|
--5. Validate Country Receiving Limit
|
|
EXEC PROC_CHECKCOUNTRYLIMIT @flag = 'r-limit', @cAmt = @tAmt, @pAmt = @pAmt, @sCountryId = @sCountryId, @collMode = @collMode
|
|
,@deliveryMethod = @deliveryMethod,@sendingCustType = @sendingCustType,@pCountryId = @pCountryId,@pCurr = @pCurr, @collCurr = @collCurr
|
|
,@pAgent = @pAgent, @sAgent = @sAgent, @sBranch = @sBranch
|
|
,@msg = @msg OUT, @errorCode = @errorCode OUT
|
|
|
|
IF @errorCode <> '0'
|
|
BEGIN
|
|
SELECT @errorCode ErrorCode ,
|
|
@msg Msg ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = @todaysTotalSent ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = @tranMinimum;
|
|
RETURN;
|
|
END
|
|
--Validate Country Receiving Limit
|
|
--End of Limit Checking------------------------------------------------------------------------------------------------------------
|
|
SET @msg = 'Success';
|
|
IF ISNULL(@paymentType,'wallet') = 'wallet'
|
|
BEGIN
|
|
IF ISNULL(@agentAvlLimit, 1) < ISNULL(@cAmt, 0)
|
|
BEGIN
|
|
SELECT '1' ErrorCode
|
|
,'You donot have sufficient balance to do the transaction' Msg ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = @todaysTotalSent ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = @tranMinimum;
|
|
RETURN;
|
|
END;
|
|
END
|
|
---------Compliance Checking Begin--------------------------------
|
|
|
|
DECLARE @complianceRuleId INT, @cAmtUSD MONEY
|
|
|
|
SELECT
|
|
@sCurrCostRate = sCurrCostRate
|
|
,@sCurrHoMargin = sCurrHoMargin
|
|
,@pCurrCostRate = pCurrCostRate
|
|
,@pCurrHoMargin = pCurrHoMargin
|
|
,@pCurrAgentMargin = pCurrAgentMargin
|
|
,@agentCrossSettRate = agentCrossSettRate
|
|
,@treasuryTolerance = treasuryTolerance
|
|
,@customerPremium = customerPremium
|
|
,@sharingValue = sharingValue
|
|
,@sharingType = sharingType
|
|
FROM dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethod)
|
|
|
|
IF @sCurrCostRate IS NULL
|
|
BEGIN
|
|
SELECT @errorCode = '1', @msg = 'Transaction cannot be proceed. Exchange Rate not defined!'
|
|
RETURN
|
|
END
|
|
|
|
SET @cAmtUSD = @tAmt / (@sCurrCostRate + ISNULL(@sCurrHoMargin, 0))
|
|
|
|
DECLARE
|
|
@receiverName VARCHAR(50) = NULL
|
|
,@complienceMessage varchar(1000) =NULL
|
|
,@shortMsg varchar(100) =NULL
|
|
,@complienceErrorCode TINYINT = NULL
|
|
|
|
EXEC [proc_complianceRuleDetail]
|
|
@flag = 'sender-limit'
|
|
,@user = @user
|
|
,@sIdType = @sIdType
|
|
,@sIdNo = @sIdNo
|
|
,@cAmt = @tAmt
|
|
,@cAmtUSD = @cAmtUSD
|
|
,@customerId = @senderId
|
|
,@pCountryId = @pCountryId
|
|
,@deliveryMethod= @deliveryMethod
|
|
,@message = @complienceMessage OUTPUT
|
|
,@shortMessage = @shortMsg OUTPUT
|
|
,@errCode = @complienceErrorCode OUTPUT
|
|
,@ruleId = @complianceRuleId OUTPUT
|
|
|
|
DECLARE @compErrorCode INT
|
|
IF(@complienceErrorCode <> 0)
|
|
BEGIN
|
|
IF(@complienceErrorCode = 1)
|
|
BEGIN
|
|
SET @compErrorCode=101
|
|
--SELECT 101 errorCode,@msg msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @compErrorCode=102
|
|
INSERT remitTranComplianceTemp(csDetailTranId, matchTranId, agentRefId)
|
|
SELECT @complianceRuleId, NULL, @agentRefId
|
|
|
|
--SELECT 102 errorCode,@msg msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
|
|
END
|
|
|
|
|
|
INSERT INTO ComplianceLog(senderName, senderCountry, senderIdType, senderIdNumber, senderMobile, receiverName
|
|
, receiverCountry,payOutAmt,complianceId,complianceReason,complainceDetailMessage,createdBy,createdDate,logType)
|
|
|
|
SELECT @senderName, @sCountry, @sIdType, @sIdNo, @sMobile, @receiverName
|
|
, @pCountry, @cAmt, @complianceRuleId, @shortMsg, @complienceMessage, @user, GETDATE(),'sender-limit'
|
|
END
|
|
|
|
|
|
IF @complienceErrorCode = '1'
|
|
BEGIN
|
|
SELECT @compErrorCode ErrorCode ,
|
|
@complienceErrorCode Id ,
|
|
@shortMsg Msg ,
|
|
'' vtype ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = @todaysTotalSent ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = @tranMinimum;
|
|
RETURN;
|
|
END;
|
|
----------Compliance Validation End---------------------------------
|
|
|
|
--Bank compare
|
|
--DECLARE @bankName VARCHAR(25) = 'Bank', @bankRate MONEY, @bankPayout MONEY, @bankFee MONEY
|
|
-- , @bankSave MONEY, @bankTransafer MONEY
|
|
|
|
--SELECT @bankRate = customerRate, @bankFee = serviceCharge FROM bankTransferSettings(NOLOCK)
|
|
|
|
--SELECT @bankTransafer = @cAmt - @bankFee
|
|
--SELECT @bankPayout = @bankTransafer * @bankRate
|
|
--SELECT @bankSave = @pAmt - @bankPayout
|
|
|
|
SET @FOREX_SESSION_ID = NEWID()
|
|
|
|
----## lock ex rate for individual txn
|
|
INSERT INTO exRateCalcHistory (
|
|
CUSTOMER_ID,[USER_ID],FOREX_SESSION_ID,serviceCharge,pAmt,customerRate,sCurrCostRate,sCurrHoMargin
|
|
,sCurrAgentMargin,pCurrCostRate,pCurrHoMargin,pCurrAgentMargin,agentCrossSettRate,treasuryTolerance,customerPremium
|
|
,sharingValue,sharingType,createdDate,isExpired,tAmt,schemeId,CALC_BY
|
|
)
|
|
SELECT
|
|
@senderId,@user,@FOREX_SESSION_ID,@serviceCharge,@pAmt,@exRate,@sCurrCostRate,@sCurrHoMargin
|
|
,@sCurrAgentMargin,@pCurrCostRate,@pCurrHoMargin,@pCurrAgentMargin ,@agentCrossSettRate,@treasuryTolerance ,@customerPremium
|
|
,@sharingValue,@sharingType,GETDATE(),0,@tAmt,@schemeId,@calBy
|
|
|
|
SELECT ErrorCode = @errorCode ,
|
|
Msg = @msg ,
|
|
Id = NULL,
|
|
scCharge = @serviceCharge ,
|
|
exRateDisplay = ROUND(@exRate , 4, -1),
|
|
exRate = CAST(@exRate AS DECIMAL(12,9)),
|
|
place = @place ,
|
|
pCurr = @pCurr ,
|
|
currDecimal = @currDecimal ,
|
|
pAmt = @pAmt ,
|
|
sAmt = ROUND(@tAmt, 0) ,
|
|
disc = 0.00 ,
|
|
--bank data
|
|
bankTransafer = 0.00,
|
|
bankPayout = 0.00,
|
|
bankRate = 0.00,
|
|
bankFee = 0.00,
|
|
bankSave = 0.00,
|
|
bankName = '',
|
|
|
|
collAmt = @cAmt ,
|
|
collCurr = @collCurr,
|
|
exRateOffer = @exRateOffer ,
|
|
scOffer = @scDiscount ,
|
|
scAction = @scAction ,
|
|
scValue = @scValue ,
|
|
scDiscount = @scDiscount ,
|
|
amountLimitPerTran = @AmountLimitPerTran ,
|
|
amountLimitPerDay = @AmountLimitPerDay ,
|
|
customerTotalSentAmt = ISNULL(@todaysTotalSent,0) ,
|
|
minAmountLimitPerTran = @tranMinimum ,
|
|
maxAmountLimitPerTran = @tranMaximum ,
|
|
PerTxnMinimumAmt = '',
|
|
tpExRate = @exRate,
|
|
tpPCurr = @pCurr,
|
|
schemeAppliedMsg = '',
|
|
schemeId = ISNULL(@schemeId,''),
|
|
EXRATEID = @FOREX_SESSION_ID,
|
|
couponType = ISNULL(@couponType,''),
|
|
discountType = ISNULL(@discountType,''),
|
|
discountvalue = ISNULL(@scDiscount,''),
|
|
ISNULL(@discountPercent,'') AS discountPercent,
|
|
ISNULL(@couponName,'') AS couponName
|
|
END;
|
|
|
|
IF @flag = 'i' --Send Transaction
|
|
BEGIN
|
|
IF @user in('demo.gme@gmeremit.com')
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'You can not send money through test GME acocunt :(', NULL;
|
|
RETURN;
|
|
END
|
|
ELSE IF @SWIFTCODE IS NOT NULL ----## AGRANI BANK LTD/DUTCH BANGLA BANK/Islami Bank Bangladesh Limited/@payOutPartner = mtrade JUST TO CHECK SETUP EXISTS ON TblPartnerwiseCountry OR NOT(EXRATE FROM LOCAL SETUP)
|
|
SELECT TOP 1 @payOutPartner = AgentId FROM TblPartnerwiseCountry(NOLOCK) WHERE CountryId = @pCountryId AND ISNULL(PaymentMethod,@deliveryMethodId) = @deliveryMethodId and IsActive = 1
|
|
|
|
IF NOT EXISTS(SELECT TOP 1 '' FROM TblPartnerwiseCountry(NOLOCK)
|
|
WHERE AgentId = @payOutPartner and CountryId = @pCountryId
|
|
AND ISNULL(PaymentMethod,@deliveryMethodId) = @deliveryMethodId and IsActive = 1
|
|
)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'Oops, something went wrong.Please perform the transaction again!!' ,null
|
|
RETURN;
|
|
END
|
|
|
|
IF @pAgent IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'Oops, something went wrong.Please perform the transaction again' ,null
|
|
RETURN;
|
|
END
|
|
|
|
IF NOT EXISTS (SELECT TOP 1 'X' FROM dbo.customerMaster(nolock) WHERE email = @user and approvedDate is not null)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'You are not authorized to perform transaction :(', NULL;
|
|
RETURN;
|
|
END
|
|
|
|
IF ISNULL(@paymentType,'') NOT IN ('wallet', 'autodebit')
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'Invalid payment method.Please perform the transaction again!', NULL;
|
|
RETURN;
|
|
END
|
|
|
|
|
|
|
|
|
|
SELECT TOP 1 @SENDERS_IDENTITY_TYPE = CASE WHEN idType = '1302'THEN 'P' WHEN idType = '7316' THEN 'N' END ,
|
|
@sIdNo = idNumber ,
|
|
@senderName = isnull(fullName, firstname),
|
|
@agentAvlLimit = ISNULL(availableBalance, 0)
|
|
FROM customerMaster (NOLOCK)
|
|
WHERE customerId = @senderId;
|
|
|
|
|
|
IF @rfName IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'Receiver First Name missing', NULL;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @rAdd1 IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'Receiver Address missing', NULL;
|
|
RETURN;
|
|
END;
|
|
|
|
IF ISNULL(@deliveryMethod, '') = ''
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'Please choose payment mode', NULL;
|
|
RETURN;
|
|
END;
|
|
|
|
IF @serviceCharge IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Service Charge missing',NULL;
|
|
RETURN;
|
|
END;
|
|
|
|
IF ISNULL(@tAmt, 0) = 0
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'Transfer Amount missing', NULL;
|
|
RETURN;
|
|
END;
|
|
|
|
IF ISNULL(@exRate, 0) = 0
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Exchange Rate missing',NULL;
|
|
RETURN;
|
|
END;
|
|
|
|
IF ISNULL(@cAmt, 0) = 0
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Collection Amount is missing. Cannot send transaction',NULL;
|
|
RETURN;
|
|
END;
|
|
|
|
SET @controlNo = '80' + LEFT(CAST(ABS(CHECKSUM(NEWID())) AS VARCHAR(10)) + '0000000000', 9);
|
|
SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo);
|
|
|
|
IF EXISTS (SELECT TOP 1 'X' FROM pinQueueList WITH(NOLOCK) WHERE icn = @controlNoEncrypted)
|
|
BEGIN
|
|
SET @controlNo = '80' + LEFT(CAST(ABS(CHECKSUM(NEWID())) AS VARCHAR(10)) + '0000000000', 9);
|
|
SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo);
|
|
|
|
IF EXISTS(SELECT TOP 1 'X' FROM pinQueueList WITH(NOLOCK) WHERE icn = @controlNoEncrypted)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Technical error occurred. Please try again',NULL;
|
|
RETURN;
|
|
END
|
|
END;
|
|
|
|
IF @deliveryMethod = 'Bank Deposit'
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT TOP 1 'A' FROM agentMaster(nolock) where agentId = @pBank and agenttype =2903 and IsIntl = 1)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Invalid bank selected', NULL
|
|
return
|
|
END
|
|
IF EXISTS(SELECT TOP 1 'A' FROM AgentBankMapping(NOLOCK) WHERE bankId = @pBank AND @pcountryId = 151)
|
|
BEGIN
|
|
SELECT TOP 1 @pAgent = bankpartnerId from AgentBankMapping(NOLOCK) WHERE bankId = @pBank
|
|
SELECT @pSuperAgent = sSuperAgent,@pSuperAgentName = sSuperAgentName,
|
|
@pAgent = sAgent,@pAgentName = sAgentName ,@pBranch = sBranch,@pBranchName = sBranchName
|
|
FROM dbo.FNAGetBranchFullDetails(@pAgent)
|
|
END
|
|
END;
|
|
|
|
SELECT TOP 1 @pAgentCommCurrency = commissionCurrency
|
|
FROM SCPAYMASTER(NOLOCK)
|
|
where rCountry = @pCountryId
|
|
and ISNULL(tranType,@deliveryMethodId) = @deliveryMethodId
|
|
and rsAgent = @pSuperAgent
|
|
|
|
SET @pAgentCommCurrency = CASE WHEN @pAgent = 221271 THEN @pCurr ELSE @pAgentCommCurrency END
|
|
|
|
SELECT @pAgentComm = (SELECT amount FROM dbo.[FNAGetPayComm](@sAgent, @sCountryId, NULL, NULL, @pCountryId, NULL, @pAgent, @pAgentCommCurrency
|
|
, @deliveryMethodId, @cAmt, @pAmt, @serviceCharge, NULL, NULL))
|
|
|
|
--Get Service Charge----------------------------------------------------------------------------------------------------------------------
|
|
IF @pCountryId = 36 ----## FOR CAMBODIA
|
|
BEGIN
|
|
SELECT @iServiceCharge = ISNULL(amount, -1)
|
|
FROM [dbo].FNAGetServiceCharge(
|
|
@sCountryId, @sSuperAgent, @sAgent, @sBranch,
|
|
@pCountryId, @pSuperAgent, @pAgent, NULL,
|
|
@deliveryMethodId, @pAmt, @collCurr
|
|
)
|
|
END
|
|
--ELSE IF @pCountryId = 42 AND @pCurr = 'USD' and @deliveryMethodId = 2
|
|
--BEGIN
|
|
-- SELECT @iServiceCharge = amount
|
|
-- FROM [dbo].FNAGetServiceCharge(@sCountryId,@sSuperAgent,@sAgent,@sBranch,
|
|
-- @pCountryId,@pSuperAgent,@pAgent,NULL,@deliveryMethodId,@pAmt,'USD');
|
|
--END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @iServiceCharge = ISNULL(amount, -1)
|
|
FROM [dbo].FNAGetServiceCharge(
|
|
@sCountryId, @sSuperAgent, @sAgent, @sBranch,
|
|
@pCountryId, @pSuperAgent, @pAgent, @pBranch,
|
|
@deliveryMethodId, @cAmt, @collCurr
|
|
)
|
|
END
|
|
|
|
IF @iServiceCharge = -1
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Transaction cannot be proceed. Service Charge is not defined', NULL
|
|
RETURN
|
|
END
|
|
|
|
IF isnull(@iServiceCharge,0) <> isnull(@serviceCharge,1)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Transaction cannot be proceed. Amount detail not match', NULL
|
|
RETURN
|
|
END
|
|
|
|
SELECT @iServiceCharge = @serviceCharge , @customerRate = @exRate;
|
|
|
|
--End Service Charge-------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
--4. Get Exchange Rate Details------------------------------------------------------------------------------------------------------------------
|
|
SELECT
|
|
@customerRate = customerRate
|
|
,@sCurrCostRate = sCurrCostRate
|
|
,@sCurrHoMargin = sCurrHoMargin
|
|
,@sCurrAgentMargin = sCurrAgentMargin
|
|
,@pCurrCostRate = pCurrCostRate
|
|
,@pCurrHoMargin = pCurrHoMargin
|
|
,@pCurrAgentMargin = pCurrAgentMargin
|
|
,@agentCrossSettRate = agentCrossSettRate
|
|
,@treasuryTolerance = treasuryTolerance
|
|
,@customerPremium = customerPremium
|
|
,@sharingValue = sharingValue
|
|
,@sharingType = sharingType
|
|
FROM dbo.FNAGetExRate(@sCountryId,@sAgent,@sBranch,@collCurr,@pCountryId,@pAgent,@pCurr,@deliveryMethodId)
|
|
|
|
IF @customerRate IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Transaction cannot be proceed. Exchange Rate not defined', NULL
|
|
RETURN
|
|
END
|
|
|
|
SELECT
|
|
@customerRate = customerRate
|
|
,@sCurrCostRate = sCurrCostRate
|
|
,@sCurrHoMargin = sCurrHoMargin
|
|
,@sCurrAgentMargin = sCurrAgentMargin
|
|
,@pCurrCostRate = pCurrCostRate
|
|
,@pCurrHoMargin = pCurrHoMargin
|
|
,@pCurrAgentMargin = pCurrAgentMargin
|
|
,@agentCrossSettRate = agentCrossSettRate
|
|
,@treasuryTolerance = treasuryTolerance
|
|
,@customerPremium = customerPremium
|
|
,@sharingValue = sharingValue
|
|
,@sharingType = sharingType
|
|
,@serviceCharge = serviceCharge
|
|
,@iPAmt = pAmt
|
|
,@schemeId = schemeId
|
|
FROM exRateCalcHistory(NOLOCK)
|
|
WHERE FOREX_SESSION_ID = @FOREX_SESSION_ID AND [USER_ID] = @user
|
|
|
|
------------Find Coupon---------------
|
|
IF ISNULL(@schemeId,'') <> ''
|
|
BEGIN
|
|
--IF EXISTS (SELECT '1'
|
|
-- FROM CouponIssue(NOLOCK) AS CI
|
|
-- INNER JOIN CouponSetup(NOLOCK) AS CS
|
|
-- ON CI.couponId = CS.rowId
|
|
-- WHERE CI.rowId = @schemeId
|
|
-- AND CI.endDate >= GETDATE()
|
|
-- AND CI.isActive = 'Y'
|
|
-- AND CS.endDate >= GETDATE()
|
|
-- AND CS.isActive = 'Y'
|
|
-- AND CS.couponType = '1'
|
|
-- AND (ISNULL(CS.usageLimit,0) = 0
|
|
-- OR ISNULL(CS.usageLimit,0) > ISNULL(CI.usedCount,0))
|
|
-- )
|
|
-- BEGIN
|
|
DECLARE @CurrentCount int = 0
|
|
SELECT TOP(1)
|
|
@discountvalue = CS.discountValue,
|
|
@CurrentCount = ISNULL(CI.usedCount,0),
|
|
@discountType = CS.discountType
|
|
FROM CouponIssue(NOLOCK) CI
|
|
INNER JOIN CouponSetup(NOLOCK) CS
|
|
ON CI.couponId = CS.rowId
|
|
WHERE CI.isActive = 'Y'
|
|
AND CI.endDate >= GETDATE()
|
|
AND CS.endDate >= GETDATE()
|
|
AND CS.isActive = 'Y'
|
|
AND CS.couponType = '1'
|
|
AND CI.rowId = @schemeId
|
|
AND (ISNULL(CS.usageLimit,0) = 0
|
|
OR CS.usageLimit > CI.usedCount)
|
|
ORDER BY CI.rowId ASC
|
|
|
|
|
|
IF @discountType = '1'
|
|
BEGIN
|
|
SET @schemePremium = @serviceCharge * (@discountvalue/100)
|
|
END
|
|
|
|
ELSE IF @discountType ='2'
|
|
BEGIN
|
|
SET @schemePremium = @discountvalue
|
|
END
|
|
--END
|
|
ELSE
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Transaction cannot be proceed. Coupon Checked. But, Can Not Find Coupon', NULL
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
|
|
IF @paymentType = 'wallet'
|
|
BEGIN
|
|
IF ISNULL(@agentAvlLimit, 1) < ISNULL(@cAmt, 0)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'You donot have sufficient balance to do the transaction!', NULL;
|
|
RETURN;
|
|
END;
|
|
END
|
|
ELSE IF @paymentType = 'autodebit'
|
|
BEGIN
|
|
DECLARE @tranAmt MONEY = NULL
|
|
|
|
SELECT TOP 1 @tranAmt = tranAmt
|
|
FROM KFTC_CUSTOMER_TRANSFER (NOLOCK)
|
|
WHERE rowId = @kftcLogId
|
|
|
|
IF @tranAmt IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'Invalid auto debit request.Please perform the transaction again!', NULL;
|
|
RETURN;
|
|
END
|
|
|
|
IF @tranAmt <> @cAmt - ISNULL(@schemePremium,0)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'Invalid transaction amount. Please contact GME Support!', NULL;
|
|
RETURN;
|
|
END
|
|
END
|
|
--ELSE
|
|
--BEGIN
|
|
-- EXEC proc_errorHandler 1,'Invalid payment method.Please perform the transaction again!', NULL;
|
|
-- RETURN;
|
|
--END
|
|
IF @customerRate IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Transaction cannot be proceed. Exchange Rate not defined', NULL
|
|
RETURN
|
|
END
|
|
IF @pCurr IN ('VND','IDR','MNT')
|
|
BEGIN
|
|
SET @customerRate = CAST(@customerRate AS DECIMAL(15,10))
|
|
END
|
|
--DECLARE @iMsg VARCHAR(MAX)
|
|
IF ISNULL(@exRate,0) <> ISNULL(@customerRate,1)
|
|
BEGIN
|
|
--SET @iMsg = 'Amount detail not match. Please re-calculate the amount again' + CAST(isnull(@exRate,0) AS VARCHAR) + ' : ' + CAST(isnull(@customerRate,1) AS VARCHAR)
|
|
EXEC proc_errorHandler 1, 'Amount detail not match. Please re-calculate the amount again', NULL
|
|
RETURN
|
|
END
|
|
|
|
IF @benId IS NOT NULL
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT TOP 1 'A' FROM receiverInformation (NOLOCK) WHERE customerId = @senderId AND receiverId = @benId)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,'Invalid receiver Id!', NULL;
|
|
RETURN;
|
|
END
|
|
END
|
|
|
|
DECLARE @scDisc MONEY
|
|
|
|
SELECT @iCustomerRate = @exRate, @iTAmt = @cAmt - @iServiceCharge
|
|
|
|
SELECT TOP 1 @place = place, @currDecimal = currDecimal
|
|
FROM currencyPayoutRound WITH(NOLOCK) WHERE ISNULL(isDeleted, 'N') = 'N'
|
|
AND currency = @pCurr AND (tranType IS NULL OR tranType = @deliveryMethodId)
|
|
|
|
SET @currDecimal = ISNULL(@currDecimal, 0)
|
|
SET @place = ISNULL(@place, 0)
|
|
|
|
--SET @iPAmt = ROUND(@iTAmt * @iCustomerRate, @currDecimal)
|
|
|
|
------## WHILE CALCULATING FROM PAYOUT AMOUNT CONSIDARING 10 VND
|
|
--IF @pCurr IN ('VND','IDR','MNT') AND ISNULL(@iPAmt,0) < ISNULL(@pAmt,1)+10
|
|
--BEGIN
|
|
-- SET @iPAmt = @pAmt
|
|
--END
|
|
|
|
IF ISNULL(@iPAmt,0) <> ISNULL(@pAmt,1)
|
|
BEGIN
|
|
--SET @iMsg = 'Amount detail not match. Please re-calculate the amount again.' + CAST(@iPAmt AS VARCHAR) + ' - ' + CAST(@pAmt AS VARCHAR)
|
|
EXEC proc_errorHandler 1, 'Amount detail not match. Please re-calculate the amount again.', NULL
|
|
RETURN
|
|
END
|
|
|
|
--OFAC Checking
|
|
DECLARE @receiverOfacRes VARCHAR(MAX), @ofacRes VARCHAR(MAX), @ofacReason VARCHAR(200)
|
|
EXEC proc_ofacTracker @flag = 't', @name = @senderName, @Result = @ofacRes OUTPUT
|
|
EXEC proc_ofacTracker @flag = 't', @name = @rfName, @Result = @receiverOfacRes OUTPUT
|
|
|
|
DECLARE @result VARCHAR(MAX)
|
|
IF ISNULL(@ofacRes, '') <> ''
|
|
BEGIN
|
|
SET @ofacReason = 'Matched by sender name'
|
|
END
|
|
IF ISNULL(@receiverOfacRes, '') <> ''
|
|
BEGIN
|
|
SET @ofacRes = ISNULL(@ofacRes + ',' + @receiverOfacRes, '' + @receiverOfacRes)
|
|
SET @ofacReason = 'Matched by receiver name'
|
|
END
|
|
IF ISNULL(@ofacRes, '') <> '' AND ISNULL(@receiverOfacRes, '') <> ''
|
|
BEGIN
|
|
SET @ofacReason = 'Matched by both sender name and receiver name'
|
|
END
|
|
--Ofac Checking End
|
|
----@camt = (@tAmt+@serviceCharge)
|
|
SET @cAmtUSD = @tAmt / (@sCurrCostRate + ISNULL(@sCurrHoMargin, 0))
|
|
|
|
--Compliance Checking
|
|
EXEC [proc_complianceRuleDetail]
|
|
@flag = 'receiver-limit'
|
|
,@user = @user
|
|
,@sIdType = @sIdType
|
|
,@sIdNo = @sIdNo
|
|
,@receiverName = @rfName
|
|
,@cAmt = @tAmt
|
|
,@cAmtUSD = @cAmtUSD
|
|
,@customerId = @senderId
|
|
,@pCountryId = @pCountryId
|
|
,@receiverMobile = @rMobile
|
|
,@deliveryMethod = @deliveryMethodId
|
|
,@message = @complienceMessage OUTPUT
|
|
,@shortMessage = @shortMsg OUTPUT
|
|
,@errCode = @complienceErrorCode OUTPUT
|
|
,@ruleId = @complianceRuleId OUTPUT
|
|
|
|
IF(@complienceErrorCode <> 0)
|
|
BEGIN
|
|
IF(@complienceErrorCode = 1)
|
|
BEGIN
|
|
SET @compErrorCode=101
|
|
--SELECT 101 errorCode,@msg msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @compErrorCode=102
|
|
INSERT remitTranComplianceTemp(csDetailTranId, matchTranId, agentRefId)
|
|
SELECT @complianceRuleId, NULL, @agentRefId
|
|
|
|
--SELECT 102 errorCode,@msg msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
|
|
END
|
|
|
|
INSERT INTO ComplianceLog(senderName, senderCountry, senderIdType, senderIdNumber, senderMobile, receiverName
|
|
, receiverCountry,payOutAmt,complianceId,complianceReason,complainceDetailMessage,createdBy,createdDate,logType)
|
|
|
|
SELECT @senderName, @sCountry, @sIdType, @sIdNo, @sMobile, @receiverName
|
|
, @pCountry, @cAmt, @complianceRuleId, @shortMsg, @complienceMessage, @user, GETDATE(),'receiver-limit'
|
|
|
|
DECLARE @tempCompId BIGINT = @@IDENTITY
|
|
END
|
|
|
|
IF @complienceErrorCode = 1
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, @shortMsg, NULL
|
|
RETURN;
|
|
END;
|
|
|
|
--Compliance checking end
|
|
|
|
|
|
--**********Customer Per Day Limit Checking**********
|
|
DECLARE @remitTranTemp TABLE (
|
|
tranId BIGINT,controlNo VARCHAR(20),cAmt MONEY,receiverName VARCHAR(200) ,
|
|
receiverIdType VARCHAR(100),receiverIdNumber VARCHAR(50),dot DATETIME
|
|
);
|
|
|
|
INSERT INTO @remitTranTemp( tranId ,controlNo ,cAmt ,receiverName ,receiverIdType ,receiverIdNumber ,dot )
|
|
SELECT TOP 1 rt.id ,rt.controlNo ,rt.cAmt ,rt.receiverName ,rec.idType ,rec.idNumber ,rt.createdDateLocal
|
|
FROM vwRemitTran rt WITH(NOLOCK)
|
|
INNER JOIN vwTranSenders sen WITH(NOLOCK) ON rt.id = sen.tranId
|
|
INNER JOIN vwTranReceivers rec WITH(NOLOCK) ON rt.id = rec.tranId
|
|
AND sen.customerId = @senderId
|
|
AND ( rt.approvedDate BETWEEN CONVERT(VARCHAR,GETDATE(),101) AND CONVERT(VARCHAR,GETDATE(),101)+ ' 23:59:59'
|
|
OR ( approvedBy IS NULL AND cancelApprovedBy IS NULL )
|
|
);
|
|
|
|
IF EXISTS ( SELECT TOP 1 'X' FROM @remitTranTemp
|
|
WHERE cAmt = @cAmt
|
|
AND ( receiverName = @rfName ) AND DATEDIFF(MI, dot, GETDATE()) <= 2
|
|
)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Similar transaction found. Please perform the transaction after 2 minutes.', NULL;
|
|
RETURN;
|
|
END;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- #########country and occupation risk point
|
|
DECLARE @countryRisk INT ,@OccupationRisk INT
|
|
|
|
DECLARE @VNo VARCHAR(20);
|
|
|
|
IF @pCountryId=151 AND ISNULL(@pBank,'')<>1056 AND @deliveryMethod <> 'MOBILE WALLET' --- if pcountry is nepal and pagent is not global ime bank then set this value to null
|
|
BEGIN
|
|
SELECT @pAgent=NULL,@pAgentName=NULL--, @pAgentComm=NULL, @pAgentCommCurrency=NULL
|
|
END
|
|
|
|
BEGIN TRANSACTION;
|
|
INSERT INTO remitTranTempOnline
|
|
(
|
|
controlNo ,sCurrCostRate ,sCurrHoMargin ,sCurrSuperAgentMargin ,sCurrAgentMargin ,pCurrCostRate ,pCurrHoMargin ,pCurrSuperAgentMargin ,
|
|
pCurrAgentMargin ,agentCrossSettRate ,customerRate ,sAgentSettRate ,pDateCostRate ,treasuryTolerance ,customerPremium ,schemePremium ,sharingValue ,
|
|
sharingType ,serviceCharge ,handlingFee ,sAgentComm ,sAgentCommCurrency ,sSuperAgentComm ,sSuperAgentCommCurrency ,pAgentComm ,pAgentCommCurrency ,
|
|
pCommissionType ,pSuperAgentComm ,pSuperAgentCommCurrency ,promotionCode ,pMessage ,sSuperAgent ,sSuperAgentName ,sAgent ,sAgentName ,sBranch ,
|
|
sBranchName ,sCountry ,pSuperAgent ,pSuperAgentName ,pAgent ,pAgentName ,pBranch ,pBranchName ,pCountry ,paymentMethod ,pBank ,pBankName ,pBankBranch ,pBankBranchName ,
|
|
accountNo ,pBankType ,expectedPayoutAgent ,collMode ,collCurr ,tAmt ,cAmt ,pAmt ,payoutCurr ,relWithSender ,purposeOfRemit ,sourceOfFund ,tranStatus ,payStatus ,createdDate ,
|
|
createdDateLocal ,createdBy ,tranType ,voucherNo ,senderName ,receiverName ,calBy ,isOnlineTxn ,schemeId ,ScOrderNo ,UnitaryBankAccountNo,pState,pDistrict,
|
|
sRouteId
|
|
)
|
|
SELECT
|
|
@controlNoEncrypted ,@sCurrCostRate ,@sCurrHoMargin ,@sCurrSuperAgentMargin ,@sCurrAgentMargin ,@pCurrCostRate ,@pCurrHoMargin ,@pCurrSuperAgentMargin ,
|
|
@pCurrAgentMargin ,@agentCrossSettRate ,@customerRate ,@sAgentSettRate ,@pDateCostRate ,@treasuryTolerance ,@customerPremium ,ISNULL(@schemePremium, 0) ,
|
|
@sharingValue , @sharingType , @serviceCharge ,ISNULL(@scDiscount, 0) ,@sAgentComm ,@sAgentCommCurrency ,@sSuperAgentComm ,@sSuperAgentCommCurrency ,@pAgentComm ,@pAgentCommCurrency ,
|
|
@pCommissionType , @pSuperAgentComm ,@pSuperAgentCommCurrency ,@agentRefId ,@payMsg ,@sSuperAgent , @sSuperAgentName ,@sAgent ,@sAgentName ,@sBranch ,@sBranchName ,@sCountry , @pSuperAgent ,
|
|
@pSuperAgentName , @pAgent , @pAgentName , @pBranch ,@pBranchName ,@pCountry ,@deliveryMethod ,@pBank , @pBankName ,@pBankBranch ,@pBankBranchName ,@raccountNo ,@pBankType , @pAgentName ,@collMode , @collCurr ,@tAmt , @cAmt ,
|
|
@pAmt , @pCurr , @relationship , @purpose ,@sourceOfFund ,'Hold' ,'Unpaid' ,@GMTDate ,
|
|
GETDATE() , @user ,ISNULL(@pBankType,'O') , @VNo , @senderName , @rfName ,@calBy , 'Y' ,@schemeId ,@ScOrderNo ,@unitaryBankAccountNo,@RLocation,@RState,
|
|
CASE WHEN @paymentType = 'wallet' THEN 'w' WHEN @paymentType = 'autodebit' THEN 'a' END
|
|
|
|
SET @id = SCOPE_IDENTITY();
|
|
|
|
INSERT INTO tranSendersTempOnline
|
|
( tranId , customerId ,membershipId ,firstName , middleName ,lastName1 ,lastName2 ,
|
|
fullName ,country ,[address] ,address2 ,zipCode ,city ,email ,homePhone ,
|
|
workPhone ,mobile ,nativeCountry ,dob ,placeOfIssue ,idType ,idNumber ,idPlaceOfIssue ,
|
|
issuedDate ,validDate ,occupation ,countryRiskPoint ,customerRiskPoint ,
|
|
ipAddress
|
|
)
|
|
SELECT TOP 1
|
|
@id ,@senderId ,membershipId ,firstName ,middleName ,lastName1 ,lastName2 ,
|
|
@senderName ,sc.countryName ,[address] ,address2 ,zipCode ,city ,email ,homePhone ,
|
|
workPhone ,LEFT(mobile, 15) ,nativeCountry = nc.countryName ,dob ,c.placeOfIssue ,sdv.detailTitle ,c.idNumber ,c.placeOfIssue ,
|
|
c.idIssueDate ,c.idExpiryDate ,om.detailTitle ,@countryRisk ,( @countryRisk + @OccupationRisk ) ,
|
|
@sIpAddress
|
|
FROM (SELECT TOP 1 * FROM dbo.customerMaster c WITH ( NOLOCK ) WHERE c.customerId = @senderId) C
|
|
LEFT JOIN countryMaster sc WITH ( NOLOCK ) ON c.country = sc.countryId
|
|
LEFT JOIN countryMaster nc WITH ( NOLOCK ) ON c.nativeCountry = nc.countryId
|
|
LEFT JOIN staticDataValue sdv WITH ( NOLOCK ) ON c.idType = sdv.valueId
|
|
LEFT JOIN occupationMaster om WITH ( NOLOCK ) ON c.occupation = om.occupationId
|
|
--WHERE c.customerId = @senderId;
|
|
|
|
DECLARE @fName VARCHAR(100) ,
|
|
@mName VARCHAR(100) ,
|
|
@lName VARCHAR(100) ,
|
|
@lName2 VARCHAR(100);
|
|
|
|
SELECT @fName =firstName,
|
|
@mName =middleName,
|
|
@lName =lastName1,
|
|
@lName2 =lastName2
|
|
FROM dbo.FNASplitName(@rfName);
|
|
|
|
DECLARE @firstName VARCHAR(100)
|
|
DECLARE @midName VARCHAR(100)
|
|
DECLARE @lastName VARCHAR(100)
|
|
DECLARE @lastName2 VARCHAR(100)
|
|
DECLARE @payCountry VARCHAR(100)
|
|
DECLARE @recAdd1 VARCHAR(100)
|
|
DECLARE @reccity VARCHAR(100)
|
|
DECLARE @recEmail VARCHAR(100)
|
|
DECLARE @recTel VARCHAR(100)
|
|
DECLARE @recMobile VARCHAR(100)
|
|
DECLARE @recRelationship VARCHAR(100)
|
|
DECLARE @recState VARCHAR(100)
|
|
declare @recDistrict VARCHAR(100)
|
|
|
|
IF @benId IS NULL
|
|
BEGIN
|
|
IF NOT EXISTS ( SELECT TOP 1 'X'
|
|
FROM receiverInformation(nolock)
|
|
WHERE ISNULL(firstName, '') = ISNULL(@fName, '')
|
|
AND ISNULL(middleName, '') = ISNULL(@mName, '')
|
|
AND ISNULL(lastName1, '') = ISNULL(@lName, '')
|
|
AND ISNULL(lastName2, '') = ISNULL(@lName2, '')
|
|
AND customerId = @senderId )
|
|
BEGIN
|
|
INSERT INTO receiverInformation
|
|
( customerId ,firstName,middleName,lastName1,lastName2 ,country ,address ,city ,email ,homePhone
|
|
,workPhone ,mobile ,relationship,state,district)
|
|
SELECT @senderId ,firstName,middleName,lastName1,lastName2,@pCountry,@rAdd1,@rCity,@rEmail,@rTel
|
|
,@rTel,@rMobile,@relationship,@RLocationText,@RStateText
|
|
FROM dbo.FNASplitName(@rfName);
|
|
|
|
SET @benId = @@IDENTITY;
|
|
END;
|
|
ELSE
|
|
BEGIN
|
|
SELECT TOP 1 @benId = receiverId
|
|
FROM receiverInformation(nolock)
|
|
WHERE ISNULL(firstName, '') = @fName
|
|
AND ISNULL(middleName, '') = @mName
|
|
AND ISNULL(lastName1, '') = @lName
|
|
AND ISNULL(lastName2, '') = @lName2
|
|
AND customerId = @senderId;
|
|
END;
|
|
END;
|
|
DECLARE @rNativCountry VARCHAR(100)
|
|
IF @benId IS NOT NULL
|
|
BEGIN
|
|
SELECT @firstName =firstName
|
|
,@midName =middleName
|
|
,@lastName =lastName1
|
|
,@lastName2 =lastName2
|
|
,@payCountry =country
|
|
,@recAdd1 =address
|
|
,@reccity =city
|
|
,@recEmail =email
|
|
,@recTel =homePhone
|
|
,@recMobile =mobile
|
|
,@recRelationship =relationship
|
|
,@recState =state
|
|
,@recDistrict =district
|
|
,@rNativCountry =nativeCountry
|
|
FROM dbo.receiverInformation(nolock)
|
|
WHERE receiverId = @benId
|
|
|
|
UPDATE dbo.receiverInformation
|
|
SET firstName =ISNULL( @fName ,@firstName)
|
|
, middleName =ISNULL( @mName ,@midName)
|
|
, lastName1 =ISNULL( @lName ,@lastName)
|
|
, lastName2 =ISNULL( @lName2 ,@lastName2)
|
|
, country =ISNULL( @pCountry ,@payCountry)
|
|
, address =ISNULL( @rAdd1 ,@recAdd1)
|
|
, city =ISNULL( @rCity ,@reccity)
|
|
, state =isnull( @RLocationText,@recState)
|
|
, district =isnull(@RStateText ,@recDistrict)
|
|
, email =ISNULL( @rEmail ,@recEmail)
|
|
, homePhone =ISNULL( @rTel ,@recTel)
|
|
, workPhone =ISNULL( @rTel ,@recTel)
|
|
, mobile =ISNULL( @rMobile ,@recMobile)
|
|
, relationship =ISNULL( @relationship,@recRelationship)
|
|
WHERE receiverId = @benId
|
|
END
|
|
INSERT INTO tranReceiversTempOnline( tranId ,customerId ,membershipId ,firstName ,middleName ,lastName1 ,lastName2 ,fullName ,
|
|
country ,[address] ,[state] ,district ,zipCode ,city ,email ,homePhone ,workPhone ,mobile ,nativeCountry ,dob ,
|
|
placeOfIssue ,idType ,idNumber ,idPlaceOfIssue ,issuedDate ,relationType,validDate ,gender
|
|
)
|
|
SELECT @id ,@benId ,NULL ,firstName ,middleName ,lastName1 ,lastName2 ,@rfName ,
|
|
@pCountry ,@rAdd1 ,@RLocationText ,@RStateText ,null ,@rCity, @rEmail ,@rTel ,@rTel ,@rMobile ,@rNativCountry ,@rdob ,
|
|
NULL ,@rIdType ,@rIdNo ,NULL ,NULL ,@relationship,@rIdValid ,NULL
|
|
FROM dbo.FNASplitName(@rfName);
|
|
|
|
INSERT INTO collectionDetailsOnline
|
|
( tranId ,collMode ,countryBankId ,amt ,collDate ,narration ,branchId ,createdBy ,createdDate
|
|
)
|
|
SELECT @id ,@collMode ,0 ,@cAmt ,@GMTDate ,'online' ,NULL ,@senderId ,GETDATE();
|
|
|
|
EXEC proc_online_temp_to_main @id = @id OUTPUT,@voucherDetails= @VoucherXML
|
|
|
|
--IF @paymentType = 'wallet'
|
|
EXEC proc_UpdateCustomerBalance @controlNo = @controlNoEncrypted, @type = 'deduct'
|
|
|
|
IF @paymentType = 'autodebit'
|
|
UPDATE KFTC_CUSTOMER_TRANSFER SET tranId = @id WHERE rowId = @kftcLogId
|
|
|
|
----## map locked ex rate with transaction for history
|
|
UPDATE exRateCalcHistory set controlNo = @controlNoEncrypted,AGENT_TXN_REF_ID=@id where FOREX_SESSION_ID = @FOREX_SESSION_ID
|
|
--------------------------#########------------OFAC/COMPLIANCE INSERT (IF EXISTS)---------------########----------------------
|
|
IF EXISTS(SELECT TOP 1 'X' FROM remitTranComplianceTemp WITH(NOLOCK) WHERE agentRefId = @agentRefId)
|
|
BEGIN
|
|
INSERT INTO remitTranCompliance(TranId, csDetailTranId, matchTranId)
|
|
SELECT TOP 1 @id, csDetailTranId, matchTranId FROM remitTranComplianceTemp WITH(NOLOCK) WHERE agentRefId = @agentRefId
|
|
SET @compFinalRes = 'C'
|
|
END
|
|
|
|
IF(ISNULL(@compFinalRes, '') <> '' OR ISNULL(@ofacRes, '') <> '' OR ISNULL(@receiverOfacRes, '') <> '')
|
|
BEGIN
|
|
IF @pCountryId IN (36)
|
|
BEGIN
|
|
SET @complienceMessage = ISNULL('Compliance: ' + @shortMsg, '') + ISNULL('Ofac: ' + @ofacRes, '') + ISNULL(' ' + @receiverOfacRes, '')
|
|
|
|
INSERT INTO ComplianceLog(senderName, senderCountry, senderIdType, senderIdNumber, senderMobile, receiverName
|
|
, receiverCountry,payOutAmt,complianceId,complianceReason,complainceDetailMessage,createdBy,createdDate,logType)
|
|
|
|
SELECT @senderName, @sCountry, @sIdType, @sIdNo, @sMobile, @receiverName
|
|
, @pCountry, @cAmt, @complianceRuleId, @shortMsg, @complienceMessage, @user, GETDATE(),'reject_log'
|
|
|
|
SET @tempCompId = @@IDENTITY
|
|
|
|
SET @msg = 'Your transaction is under Compliance/OFAC Please refer ' + CAST(ISNULL(@tempCompId, 0) AS VARCHAR) + ' code to HEAD OFFICE';
|
|
|
|
EXEC proc_errorHandler 1, @msg, NULL;
|
|
EXEC proc_ApproveHoldedTXN @flag = 'reject', @user = @user , @id = @id
|
|
|
|
COMMIT TRANSACTION
|
|
RETURN
|
|
END
|
|
|
|
IF((ISNULL(@ofacRes, '') <> '' OR ISNULL(@receiverOfacRes, '') <> '') AND ISNULL(@compFinalRes, '') = '')
|
|
BEGIN
|
|
IF ISNULL(@ofacRes, '') <> ''
|
|
INSERT remitTranOfac(TranId, blackListId, reason, flag)
|
|
SELECT @tranId, @ofacRes, @ofacReason, dbo.FNAGetOFAC_Flag(@ofacRes)
|
|
|
|
IF ISNULL(@receiverOfacRes, '') <> ''
|
|
INSERT remitTranOfac(TranId, blackListId, reason, flag)
|
|
SELECT @tranId, @receiverOfacRes, @ofacReason, dbo.FNAGetOFAC_Flag(@receiverOfacRes)
|
|
|
|
UPDATE remitTranTemp SET
|
|
tranStatus = 'OFAC Hold'
|
|
WHERE id = @id
|
|
END
|
|
|
|
ELSE IF(@compFinalRes <> '' AND (ISNULL(@ofacRes, '') = '' OR ISNULL(@receiverOfacRes, '') = ''))
|
|
BEGIN
|
|
UPDATE remitTranTemp SET
|
|
tranStatus = 'Compliance Hold'
|
|
WHERE id = @id
|
|
END
|
|
|
|
ELSE IF(ISNULL(@compFinalRes, '') <> '' AND (ISNULL(@ofacRes, '') <> '' OR ISNULL(@receiverOfacRes, '') <> ''))
|
|
BEGIN
|
|
IF ISNULL(@ofacRes, '') <> ''
|
|
INSERT remitTranOfac(TranId, blackListId, reason, flag)
|
|
SELECT @tranId, @ofacRes, @ofacReason, dbo.FNAGetOFAC_Flag(@ofacRes)
|
|
|
|
IF ISNULL(@receiverOfacRes, '') <> ''
|
|
INSERT remitTranOfac(TranId, blackListId, reason, flag)
|
|
SELECT @tranId, @receiverOfacRes, @ofacReason, dbo.FNAGetOFAC_Flag(@receiverOfacRes)
|
|
|
|
UPDATE remitTranTemp SET
|
|
tranStatus = 'OFAC/Compliance Hold'
|
|
WHERE id = @id
|
|
END
|
|
END
|
|
--Compliance checking
|
|
|
|
-------START update used coupon status
|
|
--- 위에서 밸리데이션을 한다.
|
|
IF EXISTS(SELECT TOP 1 '1' FROM CouponIssue(NOLOCK) WHERE rowId = @schemeId AND isActive = 'Y' )
|
|
BEGIN
|
|
|
|
UPDATE CouponIssue
|
|
SET usedCount = @CurrentCount +1
|
|
WHERE rowId = @schemeId
|
|
AND customerId = @senderId
|
|
AND GETDATE() BETWEEN startDate AND endDate AND isActive = 'Y'
|
|
|
|
-------Start insert Coupon History
|
|
INSERT INTO CouponHistory (couponIssueId,customerId,actualDiscountValue,usedCount,holdTranId,couponStatus,createdBy,createdDate)
|
|
VALUES (@schemeId,@senderId,@schemePremium,@CurrentCount + 1,@id,'1',@user, GETDATE())
|
|
-------End insert Coupon History
|
|
|
|
END
|
|
-------END update used coupon status
|
|
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION;
|
|
SElect 0 errorCode, 'Transaction has been sent successfully' msg, @id id, @controlNo extra;
|
|
|
|
IF @pCountryId <> 36
|
|
exec [proc_ApproveHoldedTXN] @flag = 'approve', @id = @id,@user = 'admin'
|
|
RETURN
|
|
END;
|
|
|
|
ELSE IF @flag = 'approve-wing'
|
|
BEGIN
|
|
select @id = id, @deliveryMethod = paymentMethod from remitTranTemp (nolock) where controlno = dbo.FNAEncryptString(@controlNo)
|
|
|
|
if @deliveryMethod <> 'Mobile Wallet'
|
|
update remitTranTemp set controlno = dbo.FNAEncryptString(@tpRefNo),controlNo2 = dbo.FNAEncryptString(@controlNo) where id = @id
|
|
IF EXISTS(
|
|
select 'A' from remittran(nolock) where controlno = dbo.FNAEncryptString(@tpRefNo) AND pCountry = 'Cambodia' AND pAgent = 221226 -- AND DATEDIFF(DAY,createddate,GETDATE()) > 30
|
|
)
|
|
BEGIN
|
|
UPDATE remittran SET controlno = dbo.FNAEncryptString(@tpRefNo+'A') where controlno = dbo.FNAEncryptString(@tpRefNo)
|
|
UPDATE PINQUEUELIST SET ICN = dbo.FNAEncryptString(@tpRefNo+'A') WHERE ICN = dbo.FNAEncryptString(@tpRefNo)
|
|
UPDATE FastMoneyPro_Account.DBO.tran_master set field1 = @tpRefNo+'A' where field1 = @tpRefNo and field2 = 'remittance Voucher'
|
|
END
|
|
|
|
EXEC [proc_ApproveHoldedTXN] @flag = 'approve', @id = @id,@user = 'admin'
|
|
|
|
SELECT @id = id FROM remitTran (NOLOCK)
|
|
WHERE controlno = case when @deliveryMethod = 'Mobile Wallet' then dbo.FNAEncryptString(@controlNo) else dbo.FNAEncryptString(@tpRefNo) end
|
|
AND paystatus = 'UNPAID'
|
|
IF @id IS NOT NULL
|
|
BEGIN
|
|
UPDATE remitTran SET controlno = case when @deliveryMethod = 'Mobile Wallet' then dbo.FNAEncryptString(@controlNo) else dbo.FNAEncryptString(@tpRefNo) end
|
|
,controlNo2 = dbo.FNAEncryptString(@controlNo)
|
|
,ContNo = @tpTranId
|
|
,paystatus = 'Post'
|
|
,postedBy = @user
|
|
,postedDate = getdate()
|
|
,postedDateLocal = getdate()
|
|
WHERE id = @id AND paystatus = 'UNPAID'
|
|
END
|
|
SELECT 0 ErrorCode,'Transaction has been sent successfully' Msg, @id id, case when @deliveryMethod = 'Mobile Wallet' then @controlNo else @tpRefNo end extra
|
|
|
|
END;
|
|
|
|
ELSE IF @flag = 'showLimit'
|
|
BEGIN
|
|
SELECT [paymentType] = sdv.detailTitle ,
|
|
limit.id ,
|
|
currency ,
|
|
sendingLimit = CAST(CAST(maximum AS DECIMAL(10,2)) AS VARCHAR) ,
|
|
cm.countryName ,
|
|
limitType = CASE WHEN ISNULL(limitType,'T') = 'T' THEN 'Per Transactioin' ELSE 'Per Day' END
|
|
FROM onlineCustomerLimitSetup limit WITH ( NOLOCK )
|
|
INNER JOIN staticDataValue sdv WITH ( NOLOCK ) ON sdv.valueId = limit.payBy
|
|
INNER JOIN countryMaster cm WITH ( NOLOCK ) ON cm.countryId = limit.receivingCountry
|
|
AND customerVerification = @customerStatus
|
|
AND limitType = 'T' AND limit.receivingCountry = '151';
|
|
END;
|
|
|
|
|
|
ELSE IF @flag ='lastTxnsOfBank'
|
|
BEGIN
|
|
|
|
select top 3 value= 'rFullName='+isnull(receiverName,'')+'=v-::-cmbAgent='+isnull(CAST(pBank AS VARCHAR),'')+
|
|
'=d-::-cmbAgentName='+isnull(pBankName,'')+'=v-::-hddBranch='+cast(isnull(pBankBranch,'') as varchar)+
|
|
'=v-::-hddBranchName='+isnull(pBankBranchName,'')+'=v-::-txtAccountNo='+isnull(rt.accountNo,'')+
|
|
'=v-::-receiverrelation='+isnull(rt.relWithSender,'')+'=d-::-RAddress='+isnull(address,'')+'=v-::-rState='+isnull([STATE],'')+
|
|
'=v-::-rCity='+isnull(city,'')+'=v-::-receiverMobile='+ isnull(mobile,'')+'=v-::-receiverEmail='+isnull(email,'')+
|
|
'=v-::-rTelephone='+isnull(homePhone,'')+'=v-::-ddllstReceiver='+isnull(cast(ts.customerId as varchar),'')+'=d'
|
|
,[text]= isnull(receiverName,'')+' | '+isnull(pBankName,'')+' | '+isnull(rt.accountNo,'')
|
|
from dbo.vwRemitTran rt WITH(NOLOCK)
|
|
LEFT JOIN dbo.vwTranReceivers ts WITH(NOLOCK) ON ts.tranId = rt.id
|
|
WHERE tranType='O' AND rt.createdBy = @user
|
|
AND isnull(paymentMethod,'CASH PAYMENT') = 'BANK DEPOSIT'
|
|
AND rt.pCountry = @pCountry
|
|
ORDER BY rt.holdTranId desc
|
|
|
|
RETURN
|
|
END
|
|
|
|
ELSE IF @flag = 'isProVoucherUsed'
|
|
BEGIN
|
|
IF NOT EXISTS ( SELECT TOP 1 'x' FROM remitTran(nolock) WHERE promotionCode IS NOT NULL AND createdBy = @user )
|
|
BEGIN
|
|
SELECT '1' errorCode , 'Promotional Code already used.' , NULL;
|
|
END;
|
|
ELSE
|
|
BEGIN
|
|
SELECT '0' errorCode , 'Promotional Code not used.' , NULL;
|
|
END;
|
|
END;
|
|
|
|
ELSE IF @flag = 'getTtranDetail'
|
|
BEGIN
|
|
SELECT TOP 1 cm.countryId , rt.pCountry, rt.tAmt, rt.pAmt, rt.payoutCurr, rt.pAgentName, rt.purposeOfRemit,
|
|
rt.sourceOfFund, rt.pBankName, rt.pBankBranchName, rt.serviceCharge, rt.collCurr,
|
|
customerRate =CASE WHEN rt.pAgent IN (224389,2129) THEN 0 ELSE rt.customerRate END,
|
|
pAgentId = rt.pAgent,pBranchId =rt.pBranch,rt.cAmt,rt.pBank,rt.pBankBranch,payoutMethod = rt.paymentMethod,
|
|
paymentMethod = s.serviceTypeId,
|
|
rt.receiverName ,tr.address , tr.[state], tr.city , tr.mobile , tr.email , phone = tr.homePhone ,
|
|
relationship = rt.relWithSender , cAmt = CAST(cAmt AS DECIMAL(10, 2)) , collCurr ,
|
|
collMode ,
|
|
pAgent = CAST(pBank AS VARCHAR) + ISNULL('|' + pBankType, '') ,
|
|
pAgentName = pBankName ,
|
|
pBranch = pBankBranch ,
|
|
pBranchName = pBankBranchName ,
|
|
rt.accountNo ,
|
|
RI.receiverId,
|
|
tr.firstName,
|
|
tr.middleName,
|
|
tr.lastName1,
|
|
tr.state,
|
|
tr.city,
|
|
tr.address,
|
|
tr.country,
|
|
tr.relationType,
|
|
tr.mobile,
|
|
tr.email
|
|
FROM RemitTran rt WITH ( NOLOCK )
|
|
INNER JOIN countryMaster cm WITH ( NOLOCK ) ON rt.pCountry = cm.countryName AND rt.id = @tranId
|
|
INNER JOIN TranReceivers tr WITH ( NOLOCK ) ON tr.tranId = rt.id
|
|
INNER JOIN serviceTypeMaster s(nolock) on s.typeTitle = rt.paymentMethod
|
|
LEFT JOIN dbo.receiverInformation RI (NOLOCK) ON RI.receiverId = tr.customerId
|
|
--WHERE rt.id = @tranId;
|
|
END;
|
|
|
|
ELSE IF @flag = 'mostRecentTxn'
|
|
BEGIN
|
|
DECLARE @totalSend MONEY, @totalSendText VARCHAR(200), @YearStart DATE, @YearEnd DATETIME,@vYearlyLimit MONEY
|
|
|
|
SELECT @YearStart = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0)
|
|
,@YearEnd = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1)+' 23:59:59'
|
|
|
|
SELECT @totalSend = SUM(ROUND(R.tAmt/(R.sCurrCostRate+R.sCurrHoMargin), 2, 0))
|
|
FROM REMITTRAN R(NOLOCK)
|
|
INNER JOIN TRANSENDERS T(NOLOCK) ON T.TRANID = R.ID
|
|
AND T.CUSTOMERID = @senderId
|
|
AND R.TRANSTATUS <> 'Cancel'
|
|
AND R.approvedDate BETWEEN @YearStart AND @YearEnd
|
|
|
|
|
|
SELECT @vYearlyLimit = amount
|
|
FROM dbo.csDetail CD(NOLOCK)
|
|
INNER JOIN csMaster CM(NOLOCK) ON CM.csMasterId = CD.csMasterId
|
|
WHERE CD.period = 365
|
|
AND CD.condition = 4600
|
|
AND ISNULL(CD.isActive, 'Y') = 'Y'
|
|
AND ISNULL(CD.isDeleted, 'N') = 'N'
|
|
AND ISNULL(CD.isEnable, 'Y') = 'Y'
|
|
AND ISNULL(CM.isActive, 'Y') = 'Y'
|
|
AND ISNULL(CM.isDeleted, 'N') = 'N'
|
|
|
|
|
|
SET @totalSendText = 'Remaining sending limit for the year '+FORMAT(GETDATE(),'yyyy')+' = USD '+FORMAT((@vYearlyLimit - ISNULL(@totalSend, 0)),'0,00');
|
|
|
|
SELECT DISTINCT TOP 3
|
|
R.id ,
|
|
createdDate = CONVERT(VARCHAR, createdDate, 101) ,
|
|
receiverName ,
|
|
paymentMethod ,
|
|
cAmt = CAST(cAmt AS DECIMAL(10, 2)) ,
|
|
tranStatus ,
|
|
collCurr,pCountry
|
|
FROM REMITTRAN R ( NOLOCK ) -- needs to be remitTran For Every Successful Transaction
|
|
INNER JOIN TRANSENDERS T(NOLOCK) ON T.TRANID = R.ID
|
|
AND T.CUSTOMERID = @senderId
|
|
AND R.TRANSTATUS <> 'Cancel'
|
|
ORDER BY R.ID DESC;
|
|
|
|
SELECT totalSendText = @totalSendText
|
|
END
|
|
|
|
ELSE IF @flag = 'txnSummary'
|
|
BEGIN
|
|
SELECT DISTINCT
|
|
id ,
|
|
holdTranId,
|
|
createdDate = CONVERT(VARCHAR, createdDate, 101) ,
|
|
receiverName ,
|
|
paymentMethod ,
|
|
cAmt = CAST(cAmt AS DECIMAL(10, 2)) ,
|
|
tranStatus ,
|
|
collCurr
|
|
FROM dbo.vwRemitTran WITH ( NOLOCK ) -- needs to be remitTran For Every Successful Transaction
|
|
where createdby = @user AND sAgent=@sAgent --needs to retrieve for the specific sending agent
|
|
--WHERE tranType = 'O'
|
|
-- AND createdBy = @user -- for sepecific user for now commented
|
|
ORDER BY holdTranId DESC;
|
|
END;
|
|
|
|
ELSE IF @flag = 'hasScheme'
|
|
BEGIN
|
|
|
|
DECLARE @todayDate DATETIME;
|
|
SET @todayDate = GETDATE();
|
|
|
|
IF EXISTS ( SELECT TOP 1 'X' FROM dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE @todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N' )
|
|
BEGIN
|
|
IF @schemeId IS NULL
|
|
SELECT @schemeId = rowId
|
|
FROM dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
rCountry = @pCountryId
|
|
AND @todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N'
|
|
AND ISNULL(couponCode, 'x') = @couponCode;
|
|
IF @schemeId IS NULL
|
|
SELECT @schemeId = rowId
|
|
FROM dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
rCountry = @pCountryId
|
|
AND @todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N';
|
|
IF @schemeId IS NULL
|
|
SELECT @schemeId = rowId
|
|
FROM dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
rCountry IS NULL
|
|
AND @todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N';
|
|
IF @schemeId IS NULL
|
|
SELECT
|
|
@schemeId = rowId
|
|
FROM
|
|
dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
rCountry = @pCountryId
|
|
AND @todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N';
|
|
IF @schemeId IS NULL
|
|
SELECT
|
|
@schemeId = rowId
|
|
FROM
|
|
dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
rCountry IS NULL
|
|
AND @todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N';
|
|
END;
|
|
|
|
IF EXISTS ( SELECT 'X'
|
|
FROM
|
|
dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
@todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N' )
|
|
BEGIN
|
|
IF @schemeId IS NULL
|
|
SELECT
|
|
@schemeId = rowId
|
|
FROM
|
|
dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
rCountry = @pCountryId
|
|
AND @todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N';
|
|
IF @schemeId IS NULL
|
|
SELECT
|
|
@schemeId = rowId
|
|
FROM
|
|
dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
rCountry IS NULL
|
|
AND @todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N';
|
|
END;
|
|
|
|
IF EXISTS ( SELECT
|
|
'X'
|
|
FROM
|
|
dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
@todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N' )
|
|
BEGIN
|
|
IF @schemeId IS NULL
|
|
SELECT
|
|
@schemeId = rowId
|
|
FROM
|
|
dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
rCountry = @pCountryId
|
|
AND @todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N';
|
|
IF @schemeId IS NULL
|
|
SELECT
|
|
@schemeId = rowId
|
|
FROM
|
|
dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
rCountry IS NULL
|
|
AND @todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N';
|
|
END;
|
|
|
|
IF @schemeId IS NOT NULL
|
|
BEGIN
|
|
DECLARE @multipleSchemeId INT;
|
|
SELECT
|
|
@multipleSchemeId = rowId
|
|
FROM
|
|
dbo.schemeSetup WITH ( NOLOCK )
|
|
WHERE
|
|
rCountry = @pCountryId
|
|
AND @todayDate BETWEEN schemeStartDate AND schemeEndDate
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N'
|
|
AND couponCode = @couponCode;
|
|
|
|
IF @multipleSchemeId IS NOT NULL
|
|
SELECT '0' errorCode , 'Scheme is Available.' msg , @multipleSchemeId id;
|
|
ELSE
|
|
SELECT '0' errorCode , 'Scheme is Available.' msg , @schemeId id;
|
|
END;
|
|
ELSE
|
|
BEGIN
|
|
SELECT '1' errorCode , 'Scheme is NOT Available.' msg , @schemeId id;
|
|
END;
|
|
END;
|
|
|
|
ELSE IF @flag = 'checkSingleTxn'
|
|
BEGIN
|
|
IF ( SELECT TOP 1 approvedDate FROM customerMaster WITH ( NOLOCK ) WHERE customerId = @user AND ISNULL(onlineUser, 'N') = 'Y' ) IS NULL
|
|
BEGIN
|
|
SELECT '1' ErrorCode ,
|
|
'Sorry! Your customer verification is in pending.
|
|
Kindly visit to our nearest agent/branch to verify your document.' Msg,
|
|
@user Id;
|
|
RETURN;
|
|
END;
|
|
|
|
ELSE IF (SELECT TOP 1 availableBalance FROM dbo.customerMaster WITH (NOLOCK) WHERE customerId=@user AND ISNULL(onlineUser,'N')='Y') IS NULL
|
|
BEGIN
|
|
SELECT '1' ErrorCode, 'Sorry! You have no balance in your GME Wallet' Msg, @user Id;
|
|
RETURN;
|
|
END
|
|
|
|
ELSE
|
|
BEGIN
|
|
SELECT '0' ErrorCode ,'You are authorised to send transaction.' Msg , @user Id;
|
|
RETURN;
|
|
END;
|
|
|
|
END;
|
|
|
|
END;
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF @@TRANCOUNT <> 0
|
|
ROLLBACK TRANSACTION;
|
|
|
|
DECLARE @errorMessage VARCHAR(MAX);
|
|
SET @errorMessage = ERROR_MESSAGE();
|
|
|
|
EXEC proc_errorHandler 1, @errorMessage, @user;
|
|
|
|
END CATCH
|
|
|
|
|
|
|
|
|
|
GO
|
|
|