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.
 
 
 

1775 lines
138 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_sendTxnTP]
(
@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(50) = 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,
@tpExRate FLOAT = null,
@tpPCurr varchar(10) = null,
@tpRefNo varchar(20) = null,
@tpTranId varchar(20) = null,
@tpAgentId int = 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 FLOAT = 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),
--, @pCountryId INT
@pStateId INT,
--,@deliveryMethodId INT
@senderName VARCHAR(100),
@id INT ,
@customerStatus VARCHAR(20) ,
@idExpiryDate DATETIME,
@limitBal MONEY,
@customerType INT
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);
DECLARE @errorCode CHAR(1)= 0 ,@agentAvlLimit MONEY;
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
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'
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;
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
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
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 '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 @place = place ,
@currDecimal = currDecimal
FROM currencyPayoutRound(NOLOCK)
WHERE ISNULL(isDeleted, 'N') = 'N'
AND currency = @pCurr AND tranType IS NULL;
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 @sCurrCostRate = sCurrCostRate,
@sCurrHoMargin = sCurrHoMargin,
@sAgentSettRate = sAgentSettRate
FROM dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethod)
IF ISNULL(@sAgentSettRate, 0) = 0
BEGIN
SELECT '1' ErrorCode ,
'Exchange rate not defined yet for sending currency (' + @collCurr + ')' Msg ,
amountLimitPerDay = @AmountLimitPerDay ,
customerTotalSentAmt = @todaysTotalSent ,
maxAmountLimitPerTran = @tranMaximum ,
PerTxnMinimumAmt = @tranMinimum;
RETURN
END
----## FOR RIA AND CONTACT "LOG" GET ONE TIME RATE FROM PARTNER AND STORE IN TABLE ,"SYSTEM" IS FOR GME RATE,"PARTNER" GET RATE FROM PARTNER END REALTIME
IF EXISTS(SELECT TOP 1 'X' FROM TblPartnerwiseCountry(NOLOCK) WHERE AgentId = @payOutPartner AND PaymentMethod = @deliveryMethod AND IsActive=1 AND GetRateFrom='Log')
BEGIN
SELECT TOP 1 @tpExRate = CurrCostRate FROM TBL_PARTNER_COST_RATE(NOLOCK)
WHERE ProviderId = @payOutPartner AND GETDATE() BETWEEN EffectiveFrom AND EffectiveTo
AND ToCurr = @pCurr AND FromCurr='USD' ORDER BY CreatedDate desc
IF ISNULL(@tpExRate, 0) = 0
BEGIN
SELECT '5' ErrorCode ,
'Call thirdparty api for Ex rate' Msg ,
amountLimitPerDay = @AmountLimitPerDay ,
customerTotalSentAmt = 0 ,
maxAmountLimitPerTran = @AmountLimitPerTran ,
PerTxnMinimumAmt = @AmountLimitPerDay;
RETURN
END
END
IF ISNULL(@tpExRate, 0) = 0
BEGIN
SELECT '1' ErrorCode ,
'Third Party Exchange rate fetching error for currency (' + @pCurr + ')' Msg ,
amountLimitPerDay = @AmountLimitPerDay ,
customerTotalSentAmt = @todaysTotalSent ,
maxAmountLimitPerTran = @tranMaximum ,
PerTxnMinimumAmt = @tranMinimum;
RETURN
END
SELECT @exRate = round(@tpExRate/@sAgentSettRate, 8)
--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
AND CI.isActive = 'Y'
AND CI.endDate >= GETDATE()
AND CS.endDate >= GETDATE()
AND CS.isActive = 'Y'
AND CS.couponType = '1'
AND 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
SELECT @serviceCharge = amount
FROM [dbo].FNAGetServiceCharge(@sCountryId,@sSuperAgent,@sAgent,@sBranch,
@pCountryId,@pSuperAgent,@pAgent,@pBranch,@deliveryMethod,@cAmt,@collCurr);
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,0)
END;
ELSE
IF @calBy = 'P'
BEGIN
SET @tAmt = @pAmt / ( @exRate+ @exRateOffer );
SELECT @serviceCharge = amount
FROM [dbo].FNAGetServiceCharge(@sCountryId,@sSuperAgent,@sAgent,@sBranch,
@pCountryId,@pSuperAgent,@pAgent,@pBranch,@deliveryMethod,
@tAmt, @collCurr);
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;
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,null Id,null vtype
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,null Id,null vtype
RETURN;
END
--Validate Country Receiving Limit
SET @msg = 'Success';
/* 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 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
---------Validation Begin--------------------------------
--SELECT * FROM @csMasterRec RETURN
DECLARE @complianceRuleId INT, @cAmtUSD MONEY
--SELECT
-- @sCurrCostRate = sCurrCostRate
-- ,@sCurrHoMargin = sCurrHoMargin
--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
,@receiverName = @rfName
,@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(),'online'
END
----------Validation End---------------------------------
IF @complienceErrorCode = '1'
BEGIN
SELECT @compErrorCode ErrorCode ,
@complienceErrorCode Id ,
@shortMsg Msg ,
'' vtype ,
amountLimitPerDay = @AmountLimitPerDay ,
customerTotalSentAmt = @todaysTotalSent ,
maxAmountLimitPerTran = @tranMaximum ,
PerTxnMinimumAmt = @tranMinimum;
RETURN;
END;
IF ISNULL(@paymentType,'wallet') = 'wallet'
BEGIN
IF EXISTS (SELECT TOP 1 'X' FROM dbo.customerMaster(nolock) WHERE email=@user)
BEGIN
SELECT @agentAvlLimit = [dbo].FNAGetCustomerACBal(@user);
SET @agentAvlLimit = ISNULL(@agentAvlLimit, 0);
IF ISNULL(@agentAvlLimit, 0) < 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
END
IF @payOutPartner NOT IN(415207)
BEGIN
SET @FOREX_SESSION_ID = NEWID()
END
IF ISNULL(@FOREX_SESSION_ID,'') = ''
BEGIN
SELECT '1' ErrorCode
,'Internal error occured' Msg ,
amountLimitPerDay = @AmountLimitPerDay ,
customerTotalSentAmt = @todaysTotalSent ,
maxAmountLimitPerTran = @tranMaximum ,
PerTxnMinimumAmt = @tranMinimum;
RETURN;
END;
----## 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,createdDate,isExpired,tAmt,schemeId
)
SELECT @senderId,@user,@FOREX_SESSION_ID,@serviceCharge,@pAmt,@exRate,@sCurrCostRate,@sCurrHoMargin
,@sCurrAgentMargin,@tpExRate,0,0,@exRate,GETDATE(),0,@tAmt,@schemeId
--SELECT
--@senderId,@user,@FOREX_SESSION_ID,@serviceCharge,@pAmt,@exRate,@sCurrCostRate,@sCurrHoMargin
--,@sCurrAgentMargin,@pCurrCostRate,@pCurrHoMargin,@pCurrAgentMargin ,@agentCrossSettRate,@treasuryTolerance ,@customerPremium
--,@sharingValue,@sharingType,GETDATE(),0
--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
SELECT ErrorCode = @errorCode ,
Msg = @msg ,
Id = NULL,
scCharge = @serviceCharge ,
exRateDisplay = ROUND(@exRate , 4, -1),
exRate = @exRate,
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 = 0.00,
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 = @tpExRate,
tpPCurr = @tpPCurr,
schemeAppliedMsg = '',
EXRATEID = @FOREX_SESSION_ID,
schemeId = ISNULL(@schemeId,''),
couponType = ISNULL(@couponType,''),
discountType = ISNULL(@discountType,''),
discountvalue = ISNULL(@scDiscount,''),
ISNULL(@discountPercent,'') AS discountPercent,
ISNULL(@couponName,'') AS couponName
END
ELSE IF @flag = 'i'
BEGIN
IF @user = 'demo.gme@gmeremit.com'
BEGIN
EXEC proc_errorHandler 1,'You can not send money through test GME acocunt :(', NULL;
RETURN;
END
IF @pBank NOT IN ('585117','585118')
BEGIN
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
END
IF ISNULL(@tpExRate,0) = 0
BEGIN
EXEC proc_errorHandler 1, 'Transaction cannot be proceed.Partner Exchange Rate not defined', 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
declare @senderIdIssueDate date,@senderIdExpiryDate date,@senderBirthDate date,@receiverAddCountryCode VARCHAR(5)
SELECT @SENDERS_IDENTITY_TYPE = CASE WHEN idType = '1302'THEN 'P' WHEN idType = '7316' THEN 'N' END ,
@sIdNo = idNumber ,
@senderName = isnull(fullName, firstname),
@agentAvlLimit = dbo.FNAGetCustomerACBal(@user),
@senderIdIssueDate = cm.idIssueDate,
@senderIdExpiryDate = cm.idExpiryDate,
@senderBirthDate = cm.dob,
@occupation = V.detailTitle ,
@customerType = CM.customerType
FROM customerMaster (NOLOCK) CM
LEFT JOIN staticDataValue V(NOLOCK) ON V.valueId = CM.occupation
WHERE customerId = @senderId
----## XPRESS MONEY AND Koronapay VALIDATION
IF @payOutPartner IN('415207','585119' )
BEGIN
IF @senderIdIssueDate > CAST(GETDATE() AS DATE)
BEGIN
EXEC proc_errorHandler 1,'Enter ID Issue Date.Call:15886864', NULL;
RETURN
END
IF ISNULL(@senderIdExpiryDate,'') < CAST(GETDATE() AS DATE) AND @sIdType <> 'National ID'
BEGIN
EXEC proc_errorHandler 1,'Update ID Expiry Date.Call:15886864', NULL;
RETURN
END
IF @senderBirthDate > CAST(GETDATE() AS DATE)
BEGIN
EXEC proc_errorHandler 1,'Enter valid DOB.Call:15886864', NULL;
RETURN
END
IF (DATEDIFF(YEAR, @senderBirthDate, GETDATE()) < 18 AND @payOutPartner='585119')
BEGIN
EXEC proc_errorHandler 1,'Sender age should be greater than 18 years.Call:15886864', NULL;
RETURN
END
END
IF @rfName IS NULL
BEGIN
EXEC proc_errorHandler 1,'Receiver full Name missing', NULL;
RETURN;
END;
IF (select COUNT(1) from dbo.Split(' ',@rfName))<2 AND @payOutPartner <> 224388
BEGIN
EXEC proc_errorHandler 1, 'Receiver full Name is missing', NULL
RETURN
END
IF isnull(@rMobile, '')=''
BEGIN
EXEC proc_errorHandler 1, 'Receiver mobile number is required!', 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(@purpose,'') = ''
BEGIN
EXEC proc_errorHandler 1, 'Purpose of Remittance is required!', NULL
RETURN
END
if isnull(@sourceOfFund,'') = ''
BEGIN
EXEC proc_errorHandler 1, 'Source of Fund is required!', 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 @pBank IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Please select bank', NULL
RETURN
END
--IF @pBankBranch IS NULL
--BEGIN
-- EXEC proc_errorHandler 1, 'Please select bank Branch', NULL
-- RETURN
--END
IF @raccountNo IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Account number cannot be blank', NULL
RETURN
END
--if @pCountryId = 169 and len(@raccountNo) = 24
--begin
-- exec proc_errorHandler 1,'Please enter valid IBAN Number' ,null
-- RETURN;
--end
END;
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
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;
SELECT
--@customerRate = round(@tpExRate/sAgentSettRate, 8)
@customerRate = customerRate
,@sCurrCostRate = sCurrCostRate
,@sCurrHoMargin = sCurrHoMargin
,@sCurrAgentMargin = sCurrAgentMargin
,@pCurrCostRate = @tpExRate
,@pCurrHoMargin = 0
,@pCurrAgentMargin = 0
,@agentCrossSettRate = round(@tpExRate/sAgentSettRate, 8)
,@treasuryTolerance = 0
,@customerPremium = 0
,@sharingValue = 0
,@sharingType = 0
FROM dbo.FNAGetExRate(@sCountryId,@sAgent,@sBranch,@collCurr,@pCountryId,@pAgent,@pCurr,@deliveryMethodId)
--select @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
,@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
AND 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
ELSE
BEGIN
EXEC proc_errorHandler 1, 'Transaction cannot be proceed. Coupon Checked. But, Can Not Find Coupon', NULL
RETURN
END
END
/* Easy Remit limit check */
IF @customerType = '11048'
BEGIN
IF ISNULL(@cAmt, 0) > 1000000
BEGIN
EXEC proc_errorHandler 1,'You cannot remit more than one million(KRW)!', 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 ('MMK','IDR')
BEGIN
SET @customerRate = CAST(@customerRate AS DECIMAL(15,10))
END
IF ISNULL(@exRate,0) <> ISNULL(@customerRate,1)
BEGIN
EXEC proc_errorHandler 1, 'Amount detail not match. Please re-calculate the amount again', NULL
RETURN
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
SET @currDecimal = ISNULL(@currDecimal, 0)
SET @place = ISNULL(@place, 0)
--SET @iPAmt = ROUND(@iTAmt * @iCustomerRate, 0)
IF @pCountryId = 36 ----## FOR CAMBODIA
BEGIN
SELECT TOP 1 @place = place ,
@currDecimal = currDecimal
FROM currencyPayoutRound(NOLOCK)
WHERE ISNULL(isDeleted, 'N') = 'N'
AND currency = @pCurr AND (tranType IS NULL OR tranType = @deliveryMethodId);
SET @iPAmt = ROUND(@iTAmt * @iCustomerRate, @currDecimal)
END
IF @pCurr = 'USD'
SET @iPAmt = ROUND(@iPAmt, 2)
ELSE
SET @iPAmt = ROUND(@iPAmt, 0)
IF @pCurr IN('IDR') AND ISNULL(@iPAmt,0) < ISNULL(@pAmt,1)+10
BEGIN
SET @pAmt = ISNULL(@iPAmt,0)
END
IF ISNULL(@iPAmt,0) <> ISNULL(@pAmt,1)
BEGIN
declare @iMsg VARCHAR(500) = 'Amount detail not match. Please re-calculate the amount again.' + CAST(@iPAmt AS VARCHAR) + ' - ' + CAST(@pAmt AS VARCHAR)
EXEC proc_errorHandler 1, @iMsg, 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 = @receiverName, @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
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
,@receiverMobile= @rMobile
,@pCountryId = @pCountryId
,@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(),'online'
END
IF @complienceErrorCode = 1
BEGIN
EXEC proc_errorHandler 1, @complienceMessage, NULL
RETURN;
END;
--Compliance checking end
select @pAgentCommCurrency = 'USD'
select
@pAgentComm = (SELECT amount FROM FastMoneyPro_Remit.dbo.[FNAGetPayComm](
@sAgent,@sCountryId,NULL, NULL, @pCountryId
, null, @pAgent, @pAgentCommCurrency,@deliveryMethodId, @cAmt, @pAmt, @serviceCharge, NULL, NULL)
)
DECLARE @agentFxGain MONEY;
DECLARE @remitTranTemp TABLE (
tranId BIGINT,controlNo VARCHAR(20),cAmt MONEY,receiverName VARCHAR(200) ,
receiverIdType VARCHAR(100),receiverIdNumber VARCHAR(50),dot DATETIME
);
DECLARE @moneySendTemp TABLE(
tranNo BIGINT ,refno VARCHAR(20) ,paidAmt MONEY ,receiverName VARCHAR(200) ,
receiverIdDescription VARCHAR(100) ,receiverIdDetail VARCHAR(50)
);
INSERT INTO @remitTranTemp( tranId ,controlNo ,cAmt ,receiverName ,receiverIdType ,receiverIdNumber ,dot )
SELECT 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
WHERE 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 'X' FROM @remitTranTemp
WHERE cAmt = @cAmt
AND ( receiverName = @rfName ) AND DATEDIFF(MI, dot, GETDATE()) <= 2
)
BEGIN
EXEC proc_errorHandler 1,'Similar transaction found', NULL;
RETURN;
END;
-- #########country and occupation risk point
DECLARE @countryRisk INT ,@OccupationRisk INT ,@isFirstTran CHAR(1);
BEGIN TRANSACTION;
--IF EXISTS ( SELECT TOP 1 sno FROM dbo.customerTxnLimit WITH ( NOLOCK )
-- WHERE customer_passport = @sIdNo AND customer_id_type = @SENDERS_IDENTITY_TYPE )
--BEGIN
-- UPDATE dbo.customerTxnLimit
-- SET paidAmt = ISNULL(paidAmt, 0) + @cAmt ,
-- nos_of_txn = ISNULL(nos_of_txn, 0) + 1 ,
-- update_ts = GETDATE()
-- WHERE customer_passport = @sIdNo AND customer_id_type = @SENDERS_IDENTITY_TYPE;
--END;
--ELSE
--BEGIN
-- INSERT customerTxnLimit(customer_passport,paidAmt,trans_date,agent_id,update_ts,nos_of_txn,customer_name,customer_id_type )
-- SELECT ISNULL(@sIdNo, '-') , @cAmt ,
-- CONVERT(VARCHAR, GETDATE(), 101) ,'10100000' ,GETDATE(),1,@senderName ,@SENDERS_IDENTITY_TYPE;
--END;
INSERT INTO remitTranTempOnline
(
controlNo ,sCurrCostRate ,sCurrHoMargin ,sCurrSuperAgentMargin ,sCurrAgentMargin ,pCurrCostRate ,pCurrHoMargin ,pCurrSuperAgentMargin ,
pCurrAgentMargin ,agentCrossSettRate ,customerRate ,sAgentSettRate ,pDateCostRate ,treasuryTolerance ,customerPremium ,schemePremium ,sharingValue ,
sharingType ,serviceCharge ,handlingFee ,agentFxGain ,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 ,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) ,@agentFxGain ,@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') , @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 ,[state] ,zipCode ,city ,email ,homePhone ,
workPhone ,mobile ,nativeCountry ,dob ,placeOfIssue ,idType ,idNumber ,idPlaceOfIssue ,
issuedDate ,validDate ,occupation ,countryRiskPoint ,customerRiskPoint ,isFirstTran ,
ipAddress
)
SELECT TOP 1
@id ,@senderId ,membershipId ,firstName ,middleName ,lastName1 ,lastName2 ,
@senderName ,sc.countryName ,[address] ,address2 ,ss.stateName ,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 ) ,@isFirstTran ,
@sIpAddress
FROM dbo.customerMaster c WITH ( NOLOCK )
LEFT JOIN countryMaster sc WITH ( NOLOCK ) ON c.country = sc.countryId
LEFT JOIN countryMaster nc WITH ( NOLOCK ) ON c.nativeCountry = nc.countryId
LEFT JOIN countryStateMaster ss WITH ( NOLOCK ) ON c.state = ss.stateId
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 'X'
FROM receiverInformation
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
WHERE ISNULL(firstName, '') = @fName
AND ISNULL(middleName, '') = @mName
AND ISNULL(lastName1, '') = @lName
AND ISNULL(lastName2, '') = @lName2
AND customerId = @senderId;
END;
END;
DECLARE @rNativeCountry 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
,@rNativeCountry =nativeCountry
FROM dbo.receiverInformation
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 ,@rNativeCountry ,@rdob ,
NULL ,@rIdType ,@rIdNo ,NULL ,NULL ,@relationship,@rIdValid ,NULL
FROM dbo.FNASplitName(@rfName);
--**********DATA EXIST in TEMP COLLECTION**********
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 'X' FROM remitTranComplianceTemp WITH(NOLOCK) WHERE agentRefId = @agentRefId)
BEGIN
INSERT INTO remitTranCompliance(TranId, csDetailTranId, matchTranId)
SELECT @id, csDetailTranId, matchTranId FROM remitTranComplianceTemp WITH(NOLOCK) WHERE agentRefId = @agentRefId
SET @compFinalRes = 'C'
END
IF(ISNULL(@compFinalRes, '') <> '' OR ISNULL(@ofacRes, '') <> '')
BEGIN
IF(@ofacRes <> '' AND ISNULL(@compFinalRes, '') = '')
BEGIN
INSERT remitTranOfac(TranId, blackListId, reason, flag)
SELECT @id, @ofacRes, @ofacReason, dbo.FNAGetOFAC_Flag(@ofacRes)
UPDATE remitTranTemp SET
tranStatus = 'OFAC Hold'
WHERE id = @id
END
ELSE IF(@compFinalRes <> '' AND ISNULL(@ofacRes, '') = '')
BEGIN
UPDATE remitTranTemp SET
tranStatus = 'Compliance Hold'
WHERE id = @id
END
ELSE IF(ISNULL(@compFinalRes, '') <> '' AND ISNULL(@ofacRes, '') <> '')
BEGIN
INSERT remitTranOfac(TranId, blackListId, reason, flag)
SELECT @id, @ofacRes, @ofacReason, dbo.FNAGetOFAC_Flag(@ofacRes)
UPDATE remitTranTemp SET
tranStatus = 'OFAC/Compliance Hold'
WHERE id = @id
END
END
--Compliance checking
IF @payOutPartner = '2140' --## MTRADE
BEGIN
DECLARE @sederNationalityCode VARCHAR(3), @receiverNationalityCode varchar(3), @rBankCode varchar(20), @rBankBranchCode varchar(20), @pBankCode varchar(20), @pBankBranchCode varchar(20),
@pAgentCode varchar(10)
--****Data For TP(MTRADE)****----
SELECT @sederNationalityCode = countryCode ,@rdob = CM.dob
FROM countryMaster C(NOLOCK)
INNER JOIN customerMaster CM(NOLOCK) ON CM.nativeCountry = C.countryId
WHERE CM.customerId = @senderId
SELECT @receiverNationalityCode = countryCode FROM countryMaster (NOLOCK) WHERE countryId = @pCountryId
SELECT @rBankBranchCode = agentCode FROM agentmaster (NOLOCK) WHERE agentId = @pBankBranch
SELECT @rBankCode = agentCode, @pAgentCode = routingCode FROM agentmaster (NOLOCK) WHERE agentId = @pBank
SELECT sederNationalityCode = @sederNationalityCode
, sIdTypeCode = case @sIdType when 'Alien Registration Card' then '21'
when 'National ID' then '9' when 'Passport' then '2' end
,rIdTypeCode = ''--case @rIdType when 'National ID' then '1' else '3' end
,receiverNationalityCode = @receiverNationalityCode
,rBankCode = @rBankCode
,rBankBranchCode = @rBankBranchCode
,sourceOfFund = '2' --Monthly Income, so we can send our source of fund text.
,reasonOfRemittance = '1' --Family Maintenance
,senderOccoupation = '11'
,remitType = 'P2P'
,pAgentCode = @pAgentCode
,senderDob = FORMAT(@rdob,'yyyy-MM-dd')
,payoutMethod = CASE WHEN @deliveryMethodId = '2' THEN '1'
WHEN @deliveryMethodId = '1' THEN '2'
WHEN @pBank = '2135' AND @deliveryMethodId = '2' AND @pCountryId = '45' THEN '21'
END
END
ELSE IF @payOutPartner = '224388' --## TANGLO
BEGIN
SELECT TOP 1 @pBankCode = agentCode FROM agentMaster (NOLOCK) WHERE agentId = @pBank
SELECT TOP 1 @pBankBranchCode = agentCode FROM agentMaster (NOLOCK) WHERE agentId = @pBankBranch
SELECT @sCountry = countryCode
FROM countryMaster C(NOLOCK)
INNER JOIN customerMaster CM(NOLOCK) ON CM.nativeCountry = C.countryId
WHERE CM.customerId = @senderId
SELECT BankBranchName = @sederNationalityCode
, BankBranchCode = @pBankBranchCode
,bIdType = '1'
,sFundSource = '11'
,bIdNum = '000000'
,bIssuerCode = @pBankCode
,bPurposeCode = '10010'
,bCountry = (SELECT TOP 1 countryCode FROM countryMaster (NOLOCK) WHERE countryId = @pCountryId)
,bProvinceCode = @RLocation
,bRegencyCode = @RState
,Relationship = case when @relationship in ('Brother','Daughter','Father','Grand Father','Grand Mother','Mother','Sister','Son','Spouse') then '4'
when @relationship in ('Cousin','Aunt','Uncle') then '5' else '8'
end
,deliverMethod = case when @deliveryMethodId = '1' then '5'
when @deliveryMethodId = '2' then '1'
when @deliveryMethodId = '12' then '9'
when @deliveryMethodId = '13' then '2'
when @pCountry = 'China' then '8'
else '0' end
,sIdTypeCode = case @sIdType when 'Alien Registration Card' then '1'
when 'National ID' then '3' when 'Passport' then '2' END
,sCountry = @sCountry
END
ELSE IF @payOutPartner = '415207' --Xpress
BEGIN
DECLARE @bankCode VARCHAR(12),@receivingAgentCode VARCHAR(12),@beneMobCountryCode VARCHAR(5)
,@tAmtUSD MONEY,@payoutCcyCode VARCHAR(4)
,@accountAdditionalNo1 VARCHAR(12),@RecAddCountryCode VARCHAR(5)
SET @tAmtUSD = ROUND(@tAmt/(@sCurrCostRate + ISNULL(@sCurrHoMargin, 0)),2)
IF @pBank IS NOT NULL
BEGIN
SELECT TOP 1 @bankCode = BANKCODE,@receivingAgentCode = agentCode,@depositMode = routingcode FROM agentmaster (NOLOCK) WHERE agentId = @pBank
IF @pCountryId IN ('42') AND @deliveryMethodId ='2'
BEGIN
--SET @accountAdditionalNo1 = '001'
SELECT TOP 1 @accountAdditionalNo1 = '001' FROM dbo.agentMaster(NOLOCK) WHERE agentId = @pBank AND agentCode IN ('HNBBKLKAC001','HNBBKLKAC002')
END
ELSE IF @pCountryId IN ('206') AND @deliveryMethodId ='2' --## FOR SOUTH AFRICA BRANCH CODE HAVE TO PASS IN ADDITIONAL FIELD
BEGIN
SET @accountAdditionalNo1 = @depositMode
END
END
IF @pBankBranch IS NOT NULL
BEGIN
IF @pCountryId IN ('104','16')
BEGIN
SELECT @accountAdditionalNo1 = agentCode FROM dbo.agentMaster(NOLOCK) WHERE agentId = @pBankBranch
END
--ELSE IF @pCountryId IN ('42') AND @deliveryMethodId ='2'
--BEGIN
--SET @accountAdditionalNo1 = '001'
--SELECT @accountAdditionalNo1 = agentCode FROM dbo.agentMaster(NOLOCK) WHERE agentId = @pBankBranch
--END
END
SELECT @receiverAddCountryCode = CM.countryCode
FROM dbo.countryMaster CM(NOLOCK)
WHERE CM.countryName = @rNativeCountry
SELECT @beneMobCountryCode = CM.countryMobCode ,@receiverAddCountryCode = CASE WHEN @receiverAddCountryCode IS NULL THEN CM.countryCode ELSE @receiverAddCountryCode END
,@RecAddCountryCode = CM.countryCode
FROM dbo.countryMaster CM(NOLOCK)
WHERE CM.countryId = @pCountryId
SELECT deliveryMethod=CASE WHEN @deliveryMethodId ='1' THEN 'PS'
WHEN @deliveryMethodId ='2' THEN 'AC'
WHEN @deliveryMethodId ='12' THEN 'DS'
WHEN @deliveryMethodId ='13' THEN 'MW'
ELSE '0'
END
,sourceOfFund=CASE WHEN @sourceOfFund = 'Salary / Wages' THEN 'S01'
WHEN @sourceOfFund = 'Business' THEN 'S02'
WHEN @sourceOfFund = 'Savings or accumulated' THEN 'S03'
ELSE 'S01' END
,purposeOfTxn=CASE WHEN @purpose='Family maintenance' THEN 'P58'
WHEN @purpose='Salary / Commission' THEN 'P29'
ELSE 'P58'
END
,customerIdType = CASE @sIdType WHEN 'Alien Registration Card' THEN '146'
WHEN 'National ID' THEN '53'
WHEN 'Passport' THEN '3'
WHEN 'Driving License' THEN '5'
END
,bankCode = @bankCode
,beneficiaryRelationship = @relationship
,SenderIdIssueDate = FORMAT(@senderIdIssueDate,'dd-MM-yyyy')
,SenderIdExpiryDate = FORMAT(@senderIdExpiryDate,'dd-MM-yyyy')
,SenderBirthDate = FORMAT(@senderBirthDate,'dd-MM-yyyy')
,PayoutCcyCode = @payoutCcyCode
,ReceivingAgentCode = @receivingAgentCode
,RecMobCountryCode = @beneMobCountryCode
,RecAddCountryCode = @RecAddCountryCode
,BeneficiaryNationalityCode = @receiverAddCountryCode
,AccountAdditionalNo1 = RTRIM(@accountAdditionalNo1) --IFSC/branchcode/routing code needed for bank txn in India, bangladesh and srilanka for specific agentcode
,USDAmount = @tAmtUSD
,occupation = @occupation
END
ELSE IF @payOutPartner = '585119' --## Koronapay
BEGIN
DECLARE @senderFullName VARCHAR(100) ,@sCountryCode VARCHAR(3) ,@pCountryCode VARCHAR(3) ,@IdIssueDate DATETIME
,@idPlaceOfIssue VARCHAR(100) ,@idValidate DATETIME ,@senderBirthPlace VARCHAR(100) ,@senderIdNo VARCHAR(100)
,@senderMobile VARCHAR(100) ,@senderDob DATETIME ,@senderCountry VARCHAR(100) ,@senderCity VARCHAR(100)
,@senderAddress VARCHAR(100)
SELECT TOP 1 @senderFullName=CM.firstName
,@sederNationalityCode = c.isoAlpha3
,@senderBirthPlace=ISNULL(c.countryName,cm.city)
,@senderIdNo=cm.idNumber
,@IdIssueDate=cm.idIssueDate
,@idPlaceOfIssue=cm.placeOfIssue
,@idValidate=cm.idExpiryDate
,@senderMobile=CM.mobile
,@senderDob=CM.dob
,@senderCountry=C.countryName
,@senderCity=cm.city
,@senderAddress =cm.address
FROM countryMaster C(NOLOCK)
INNER JOIN customerMaster CM(NOLOCK) ON CM.nativeCountry = C.countryId
WHERE CM.customerId = @senderId
SELECT TOP 1 @pCountryCode = CM.isoAlpha3 FROM dbo.countryMaster CM(NOLOCK)WHERE CM.countryId = @pCountryId
SELECT toCountryISO = UPPER(@pCountryCode)--'RUS'--Destination country, format is ISO 3166-1 alpha-3 --required
,toCityID = CASE WHEN UPPER(@pCountryCode)='RUS' THEN 1
WHEN UPPER(@pCountryCode)='KGZ' THEN 175
WHEN UPPER(@pCountryCode)='KAZ' THEN 187351
WHEN UPPER(@pCountryCode)='UZB' THEN 189734
WHEN UPPER(@pCountryCode)='TJK' THEN 59552
WHEN UPPER(@pCountryCode)='TUR' THEN 10415591
ELSE 1
END -- all for testing we need to update in live deployment --required NEED TO GET FROM API PROVIDE BY KORONA
,payerIsResident = ''
,senderPersonlastName = (SELECT FSN.lastName1 FROM dbo.FNASplitName(@senderFullName) AS FSN)--ISNULL(Ts.lastName1,'')--LastName
,senderPersonfirstName = (SELECT FSN.firstName FROM dbo.FNASplitName(@senderFullName) AS FSN)--ISNULL(Ts.firstName,'')---firstName
,senderPersonmiddleOtherName = (SELECT FSN.middleName FROM dbo.FNASplitName(@senderFullName) AS FSN)--ISNULL(Ts.middleName,'')
,senderPersonpaperCredentialscType = CASE WHEN @sIdType='National ID' THEN 'FOREIGN' --code provide by koronapay
WHEN @sIdType='Passport' THEN 'OTHER'
ELSE 'OTHER' END
,senderPersonpaperCredentialscNumber = @senderIdNo--required
,senderPersonpaperCredentialsserialNumber = ''
,senderPersonpaperCredentialsissuer = ''
,senderPersonpaperCredentialsissueDate = FORMAT(@IdIssueDate,'yyyy-MM-dd')
,senderPersonpaperCredentialsissuerCode = ''
,senderPersonpaperCredentialsissueCity = ISNULL(@idPlaceOfIssue,'')
,senderPersonpaperCredentialsexpireDate = FORMAT(@idValidate,'yyyy-MM-dd')
,senderPersonphone = @senderMobile --required
,senderPersoncountryISO = ISNULL(@sederNationalityCode,'')
,senderPersonbirthDate = FORMAT(@senderDob,'yyyy-MM-dd') --required
,senderPersonbirthPlace = ISNULL(@senderBirthPlace,'')
,senderPersonregCountry = ISNULL(@senderCountry,'')
,senderPersonregCity = ISNULL(@senderCity,'')
,senderPersonregAddress = ISNULL(@senderAddress,'')
,senderPersontin = '' --Individual taxpayer identification number (ITIN)
,fundsamount = (floor(@pAmt) *100) --required
,fundscurrency = '840' --USD
END
-------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,ROUND(@pAmt/@pCurrCostRate,2) extra2
RETURN
END
ELSE IF @flag = 'success'
BEGIN
declare @tpEncryptKey varchar(30)
IF @tpRefNo = 'C'
SET @tpRefNo = @tranId
select @controlNoEncrypted = dbo.FNAEncryptString(@controlNo),@tpEncryptKey = dbo.FNAEncryptString(@tpRefNo)
select @id = id,@payOutPartner = pAgent from remitTranTemp (nolock) where controlno = @controlNoEncrypted
IF @tpRefNo IS NULL
BEGIN
SELECT 0 ErrorCode,'Transaction has been sent successfully' Msg, @id id,@controlNo extra
RETURN
END
UPDATE remitTranTemp SET controlno = @tpEncryptKey WHERE id = @id
UPDATE exRateCalcHistory SET controlNo = @tpEncryptKey WHERE controlNo = @controlNoEncrypted
SELECT 0 ErrorCode,'Transaction has been sent successfully' Msg, @id id, @tpRefNo extra
EXEC [proc_ApproveHoldedTXN] @flag = 'approve', @id = @id,@user = 'admin'
SELECT @id = id from remitTran (nolock) WHERE controlno = @tpEncryptKey AND paystatus = 'UNPAID'
IF @payOutPartner IN('2129','415208','393866','585120') --##Merchantrade/xPRESSMONEY/RIA/Koronapay
BEGIN
update remitTran set
controlno = @tpEncryptKey
,controlNo2 = @controlNoEncrypted
,ContNo = @tpTranId
,sharingValue = pcurrCostRate
,pcurrCostRate = CASE WHEN pcurrCostRate IS NULL THEN @tpExRate ELSE pcurrCostRate END
,payStatus = 'Post'
,postedBy = 'system'
,postedDate = getdate()
WHERE id = @id AND paystatus = 'UNPAID'
END
ELSE
BEGIN
UPDATE remitTran SET
controlno = @tpEncryptKey
,controlNo2 = @controlNoEncrypted
,ContNo = @tpTranId
,sharingValue = pcurrCostRate
,pcurrCostRate = CASE WHEN pcurrCostRate IS NULL THEN @tpExRate ELSE pcurrCostRate END
WHERE id = @id AND paystatus = 'UNPAID'
END
----## map locked ex rate with transaction for history
SELECT 0 ErrorCode,'Transaction has been sent successfully' Msg, @id id, @tpRefNo extra
END
ELSE IF @flag = 'revertTxn'
BEGIN
SELECT TOP 1 @id = id from remitTranTemp(nolock) where controlno = dbo.FNAEncryptString(@controlNo)
EXEC proc_ApproveHoldedTXN @flag = 'reject', @user =@user , @id =@id
END
IF @flag = 'pagentMtrade'
BEGIN
IF @tpAgentId IS NULL AND @pCountry IS NOT NULL
BEGIN
--IF NOT EXISTS (select 'A' from countryReceivingMode cm
--inner join countryMaster c (nolock) on c.countryId = cm.countryId
--where c.countryName = @pCountry and receivingMode = @deliveryMethodId)
--BEGIN
-- select @deliveryMethodId = CM.receivingMode from countryReceivingMode cm
-- inner join countryMaster c (nolock) on c.countryId = cm.countryId
-- where c.countryName = @pCountry
--END
SELECT TOP 1 routingCode FROM agentMaster (NOLOCK) WHERE agentCountry = @pCountry AND agentRole = @deliveryMethodId and parentId = 2140
END
ELSE
BEGIN
SELECT TOP 1 routingCode FROM agentMaster (nolock) where agentId = @tpAgentId
END
END
IF @flag='getRxAgentCode_XM'
BEGIN
IF @tpAgentId IS NULL
BEGIN
SELECT TOP 1 agentCode FROM agentMaster (NOLOCK)
WHERE agentCountryId = @pCountryId AND parentId = @payOutPartner AND agentType = '2903' AND isActive = 'Y'
AND agentRole = @deliveryMethodId
END
ELSE
BEGIN
SELECT TOP 1 agentCode FROM agentMaster (NOLOCK)
WHERE agentCountryId = @pCountry AND parentId = @payOutPartner AND agentType = '2903' AND isActive = 'Y'
AND agentId = @tpAgentId AND agentRole = @deliveryMethodId
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