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.
1612 lines
78 KiB
1612 lines
78 KiB
USE [FastMoneyPro_Remit]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_SendTransaction] Script Date: 9/6/2023 6:22:09 PM ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
ALTER PROC [dbo].[proc_SendTransaction]
|
|
@User VARCHAR(100) = NULL
|
|
,@SenderId INT = NULL
|
|
,@sIpAddress VARCHAR(20) = NULL
|
|
,@ReceiverId INT = NULL
|
|
,@rFirstName VARCHAR(50) = NULL
|
|
,@rMiddleName VARCHAR(50) = NULL
|
|
,@rLastName VARCHAR(50) = NULL
|
|
,@rIdType VARCHAR(50) = NULL
|
|
,@rIdNo VARCHAR(30) = NULL
|
|
,@rIdIssue VARCHAR(10) = NULL
|
|
,@rIdExpiry VARCHAR(10) = NULL
|
|
,@rDob VARCHAR(10) = NULL
|
|
,@rMobileNo VARCHAR(20) = NULL
|
|
,@rNativeCountry VARCHAR(50) = NULL
|
|
,@rStateId INT = NULL
|
|
,@rDistrictId INT = NULL
|
|
,@rAddress VARCHAR(100) = NULL
|
|
,@rCity VARCHAR(50) = NULL
|
|
,@rEmail VARCHAR(50) = NULL
|
|
,@rAccountNo VARCHAR(50) = NULL
|
|
,@sCountryId INT = NULL
|
|
,@pCountryId INT = NULL
|
|
,@deliveryMethodId INT = NULL
|
|
,@pBankId BIGINT = NULL
|
|
,@pBranchId BIGINT = NULL
|
|
,@collCurr VARCHAR(3) = NULL
|
|
,@payoutCurr VARCHAR(3) = NULL
|
|
,@collAmt MONEY = NULL
|
|
,@payoutAmt MONEY = NULL
|
|
,@transferAmt MONEY = NULL
|
|
,@exRate MONEY = NULL
|
|
,@calBy CHAR(1) = NULL
|
|
,@tpExRate DECIMAL(30, 12) = NULL
|
|
,@payOutPartnerId BIGINT = NULL
|
|
,@forexSessionId VARCHAR(40) = NULL
|
|
,@kftcLogId BIGINT = NULL
|
|
,@paymentType VARCHAR(20) = NULL
|
|
,@scDiscount MONEY = NULL
|
|
,@PurposeOfRemittance VARCHAR(100) = NULL
|
|
,@SourceOfFund VARCHAR(100) = NULL
|
|
,@PurposeOfRemittanceOther VARCHAR(100) = NULL
|
|
,@SourceOfFundOther VARCHAR(100) = NULL
|
|
,@RelWithSender VARCHAR(200) = NULL
|
|
,@SourceType CHAR(1) = NULL
|
|
,@schemeId BIGINT = NULL
|
|
,@processId VARCHAR(40) = NULL
|
|
,@flag VARCHAR(100)
|
|
,@controlNo VARCHAR(20) = NULL
|
|
,@PartnerPin VARCHAR(20) = NULL
|
|
,@PartnerId VARCHAR(20) = NULL
|
|
,@tranId BIGINT = NULL
|
|
,@errorCode INT = NULL
|
|
,@Message NVARCHAR(500) = NULL
|
|
,@sAdd2 NVARCHAR(150) = NULL
|
|
,@goodsOrigin VARCHAR(100) = NULL
|
|
,@goodsType VARCHAR(100) = NULL
|
|
,@portOfShipment VARCHAR(100) = NULL
|
|
,@discountedFee MONEY = NULL
|
|
AS
|
|
-----------------------------------------------------------
|
|
-- For Broadcast notification , @flag = 'send'
|
|
-- #101 - MOBILE CHANGES , #361 - MULTI-LINGUAL
|
|
-- #476 - Changes in dotransaction Payment of Import Good
|
|
-- #101 - set error code as 19 for unapproved customer
|
|
-- Disable ProcBroadCastMobile @Flag='TRANSACTION_SUCCESS'
|
|
-- #495 Added condition for @sourceOfFundOther and @purposeOfRemittanceOther
|
|
-- Fix issue related with Bank id invalid add @pBankId_O,@payOutPartnerId_O
|
|
--#643 Mobile transaction wrongly flag for Questionnaire require due to Visa Status
|
|
-- #717 - insert visaStatus in tranSendersTemp
|
|
-- check mobileApprovedDate instead of approved date
|
|
-- #756 Duplicate pin generated
|
|
-- insert into controllist for M
|
|
--#767 Relationship displayed blank for mobile transaction.
|
|
-- #767 relationship other
|
|
-- #790 Change column to store relationship others for Mobile transaction
|
|
--#810 Missing sending commission in mobile Txn voucher
|
|
--#831 Disabled customer allowed to do Mobile txn
|
|
--#820 Donga wrong commission for mobile txn
|
|
--#Bug #1192 Sender Expiry not check from Mobile Transaction
|
|
-- #1003 - Reward Points, @flag = 'Send'
|
|
-- #1498 - TF NO Balance
|
|
-- #1590 - Customer Loyalty
|
|
-- #11358 - show branch routing number for mobile transaction in search transaction , pbankBranchName
|
|
-- #12985 - invalid routing no case
|
|
-----------------------------------------------------------
|
|
SET NOCOUNT ON;
|
|
SET XACT_ABORT ON;
|
|
|
|
BEGIN TRY
|
|
DECLARE @complianceRuleId INT
|
|
,@cAmtUSD MONEY
|
|
,@complienceMessage VARCHAR(1000) = NULL
|
|
,@shortMsg VARCHAR(100) = NULL
|
|
,@complienceErrorCode TINYINT = NULL
|
|
,@compErrorCode INT
|
|
,@discountType VARCHAR(2) = NULL
|
|
,@discountvalue MONEY = NULL
|
|
,@couponType VARCHAR(3) = NULL
|
|
,@discountPercent MONEY = NULL
|
|
,@couponName VARCHAR(20) = NULL
|
|
,@ServiceCharge_Temp MONEY = NULL
|
|
,@schemePremium MONEY = NULL
|
|
,@customerType INT = NULL
|
|
,@msg VARCHAR(MAX) = NULL
|
|
,@pBankId_O BIGINT = @pBankId
|
|
,@payOutPartnerId_O BIGINT = @payOutPartnerId
|
|
,@RelWithSenderOthers VARCHAR(200) = NULL
|
|
,@receiverName VARCHAR(100) = NULL
|
|
,@createdFrom VARCHAR(10) = NULL
|
|
,@tranCount INT = NULL
|
|
,@schemeCount INT = NULL
|
|
,@isEligible CHAR(1) = NULL
|
|
,@schemeCodeId INT = NULL
|
|
,@isFirstTran CHAR(1) = 'N'
|
|
,@introducer VARCHAR(25) = NULL
|
|
|
|
IF EXISTS (
|
|
SELECT *
|
|
FROM STATICDATAVALUE(NOLOCK)
|
|
WHERE VALUEID = @RelWithSender
|
|
AND TYPEID = 2100
|
|
AND isActive = 'N'
|
|
)
|
|
BEGIN
|
|
SELECT TOP 1 @receiverName = ISNULL(firstName, '') + ISNULL(' ' + middleName, '') + ISNULL(' ' + lastName1, '') + ISNULL(' ' + lastName2, '')
|
|
FROM dbo.receiverInformation RI(NOLOCK)
|
|
WHERE receiverId = @receiverId
|
|
|
|
SET @msg = 'Please update the details of receiver [ ' + @receiverName + ' ] before performing transaction!';
|
|
|
|
EXEC proc_errorHandler 21
|
|
,@msg
|
|
,NULL;
|
|
Rollback Transaction
|
|
RETURN;
|
|
END
|
|
|
|
IF EXISTS (
|
|
SELECT *
|
|
FROM STATICDATAVALUE(NOLOCK)
|
|
WHERE VALUEID = @PurposeOfRemittance
|
|
AND TYPEID = 3800
|
|
AND isActive = 'Y'
|
|
)
|
|
BEGIN
|
|
SELECT @PurposeOfRemittance = detailTitle
|
|
FROM STATICDATAVALUE(NOLOCK)
|
|
WHERE VALUEID = @PurposeOfRemittance
|
|
AND TYPEID = 3800
|
|
END
|
|
|
|
IF EXISTS (
|
|
SELECT *
|
|
FROM STATICDATAVALUE(NOLOCK)
|
|
WHERE VALUEID = @sourceOfFund
|
|
AND TYPEID = 3900
|
|
AND isActive = 'Y'
|
|
)
|
|
BEGIN
|
|
SELECT @sourceOfFund = detailTitle
|
|
FROM STATICDATAVALUE(NOLOCK)
|
|
WHERE VALUEID = @sourceOfFund
|
|
AND TYPEID = 3900
|
|
END
|
|
|
|
SELECT @pcountryId = cm.countryId
|
|
,@RelWithSenderOthers = ISNULL(relationOther, otherRelationDesc)
|
|
FROM receiverInformation RI(NOLOCK)
|
|
INNER JOIN countryMaster CM(NOLOCK) ON CM.countryName = RI.country
|
|
WHERE RI.receiverId = @ReceiverId
|
|
|
|
IF EXISTS (
|
|
SELECT *
|
|
FROM STATICDATAVALUE(NOLOCK)
|
|
WHERE VALUEID = @RelWithSender
|
|
AND TYPEID = 2100
|
|
AND isActive = 'Y'
|
|
)
|
|
BEGIN
|
|
IF (@RelWithSender = '11339')
|
|
BEGIN
|
|
SET @RelWithSender = 'Other (please specify) :' + ISNULL(@RelWithSenderOthers, '');
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @RelWithSender = detailTitle
|
|
FROM STATICDATAVALUE(NOLOCK)
|
|
WHERE VALUEID = @RelWithSender
|
|
AND TYPEID = 2100
|
|
END
|
|
END
|
|
|
|
DECLARE @isRealTime BIT = 0 , @TRANSFER_MODE varchar(10)='';
|
|
|
|
|
|
SELECT @payOutPartnerId = AGENTID
|
|
,@isRealTime = isRealTime
|
|
FROM TblPartnerwiseCountry(NOLOCK)
|
|
WHERE CountryId = @pCountryId
|
|
AND IsActive = 1
|
|
AND ISNULL(PaymentMethod, @deliveryMethodId) = @deliveryMethodId
|
|
AND IsMobileEnabled = 1
|
|
|
|
IF @payOutPartnerId IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 3
|
|
,'Oops, something went wrong! Please perform the transaction again. Route is missing.'
|
|
,NULL
|
|
|
|
RETURN;
|
|
END
|
|
|
|
IF EXISTS (
|
|
SELECT *
|
|
FROM API_BANK_LIST_MASTER(NOLOCK)
|
|
WHERE MASTER_BANK_ID = @pBankId
|
|
AND IS_ACTIVE = '1'
|
|
)
|
|
BEGIN
|
|
SELECT @pBankId = AB.BANK_ID ,@TRANSFER_MODE= ab.TRANSFER_MODE
|
|
FROM API_BANK_LIST AB(NOLOCK)
|
|
INNER JOIN API_BANK_LIST_MASTER ABM(NOLOCK) ON AB.JME_BANK_CODE = ABM.JME_BANK_CODE
|
|
WHERE MASTER_BANK_ID = @pBankId
|
|
AND ABM.IS_ACTIVE = '1'
|
|
AND AB.API_PARTNER_ID = @payOutPartnerId
|
|
END
|
|
|
|
IF @flag = 'SEND'
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT TOP 1 'X'
|
|
FROM dbo.customerMaster(NOLOCK)
|
|
WHERE username = @user
|
|
AND mobileverifieddate IS NOT NULL
|
|
)
|
|
BEGIN
|
|
EXEC proc_errorHandler 19
|
|
,'You are not authorized to perform transaction, please contact JME Support!'
|
|
,NULL;
|
|
|
|
RETURN;
|
|
END
|
|
|
|
DECLARE @remittanceAllowed int,@idExpiryDate DATETIME
|
|
|
|
SELECT @remittanceAllowed = remittanceAllowed,@idExpiryDate=idExpiryDate FROM customerMaster(NOLOCK)
|
|
WHERE CUSTOMERID = @SenderId
|
|
|
|
IF ISNULL(@remittanceAllowed, 0) = '0'
|
|
BEGIN
|
|
SELECT @MSG = 'You are not authorized to perform transaction, please contact JME Support!'
|
|
|
|
EXEC proc_errorHandler 19
|
|
,@MSG
|
|
,NULL
|
|
|
|
RETURN
|
|
END
|
|
|
|
IF @idExpiryDate < GETDATE()
|
|
BEGIN
|
|
SELECT @MSG = 'Your ID with us has expired. Please upload new ID details in “Renew ID” or contact JME support.'
|
|
EXEC proc_errorHandler 22
|
|
,@MSG
|
|
,NULL
|
|
RETURN;
|
|
END
|
|
--DECLARE @kycStatus INT
|
|
|
|
--SELECT @kycStatus = kycStatus
|
|
--FROM TBL_CUSTOMER_KYC(NOLOCK)
|
|
--WHERE CUSTOMERID = @senderId
|
|
-- AND ISDELETED = 0
|
|
----AND kycStatus=11044
|
|
--ORDER BY KYC_DATE
|
|
|
|
--IF ISNULL(@kycStatus, 0) <> 11044
|
|
--BEGIN
|
|
-- IF @kycStatus IS NOT NULL
|
|
-- SELECT @MSG = 'KYC for selected customer is not completed, it is in status:' + detailTitle
|
|
-- FROM staticDataValue(NOLOCK)
|
|
-- WHERE valueId = @kycStatus
|
|
-- ELSE
|
|
-- SELECT @MSG = 'Please complete KYC status first'
|
|
|
|
-- EXEC proc_errorHandler 2
|
|
-- ,@MSG
|
|
-- ,NULL;
|
|
|
|
-- RETURN
|
|
--END
|
|
|
|
IF @paymentType IS NULL
|
|
SET @paymentType = 'WALLET'
|
|
|
|
DECLARE @sCurrCostRate FLOAT
|
|
,@sCurrHoMargin FLOAT
|
|
,@pCurrCostRate FLOAT
|
|
,@customerRate MONEY
|
|
,@agentCrossSettRate FLOAT
|
|
,@iServiceCharge MONEY
|
|
,@iTAmt MONEY
|
|
,@iPAmt MONEY
|
|
,@place INT
|
|
,@currDecimal INT
|
|
,@agentAvlLimit MONEY
|
|
,@serviceCharge MONEY
|
|
,@sCountry VARCHAR(50) = 'Japan'
|
|
,@sAgent BIGINT
|
|
,@sAgentName VARCHAR(100)
|
|
,@sBranch INT
|
|
,@sBranchName VARCHAR(100)
|
|
,@sSuperAgent INT
|
|
,@sSuperAgentName VARCHAR(100)
|
|
,@senderName VARCHAR(100)
|
|
,@sIdNo VARCHAR(50)
|
|
,@sIdType VARCHAR(50)
|
|
,@sMobile VARCHAR(15)
|
|
,@pAgent BIGINT
|
|
,@pSuperAgent BIGINT
|
|
,@pSuperAgentName VARCHAR(100)
|
|
,@pAgentName VARCHAR(100)
|
|
,@controlNoEncrypted VARCHAR(30)
|
|
,@tempCompId BIGINT
|
|
,@pBranch INT
|
|
,@pBranchName VARCHAR(100)
|
|
,@pCountry VARCHAR(100)
|
|
,@RcreatedFrom VARCHAR(5)
|
|
,@ROtpVerified BIT
|
|
|
|
SELECT @sCountryId = 113
|
|
,@sBranch = 394395
|
|
|
|
SELECT @SenderId = customerId ,
|
|
@createdFrom = createdFrom
|
|
FROM customerMaster(NOLOCK)
|
|
WHERE USERNAME = @User
|
|
|
|
|
|
IF NOT EXISTS(SELECT 1 FROM
|
|
(SELECT TOP 1 customerId FROM TRANSENDERS TS (NOLOCK)
|
|
inner join remittran (nolock) rt on rt.id = ts.tranId
|
|
WHERE customerId = @SenderId AND rt.tranStatus <> 'CANCEL' AND RT.tranType='M'
|
|
UNION ALL
|
|
SELECT TOP 1 customerId FROM TRANSENDERSTEMP TT (NOLOCK)
|
|
inner join remittrantemp (nolock) rt on rt.id = tt.tranId
|
|
WHERE customerId = @SenderId AND rt.tranStatus <> 'CANCEL' AND rt.tranType='M'
|
|
) a where customerId = @SenderId
|
|
)
|
|
BEGIN
|
|
SET @isFirstTran = 'Y'
|
|
END
|
|
|
|
|
|
SELECT @sAgent = sAgent
|
|
,@sAgentName = sAgentName
|
|
,@sBranch = sBranch
|
|
,@sBranchName = sBranchName
|
|
,@sSuperAgent = sSuperAgent
|
|
,@sSuperAgentName = sSuperAgentName
|
|
FROM dbo.FNAGetBranchFullDetails(@sBranch)
|
|
|
|
SELECT @pCountry = COUNTRYNAME
|
|
FROM COUNTRYMASTER(NOLOCK)
|
|
WHERE COUNTRYID = @pCountryId
|
|
|
|
SELECT TOP 1 @pAgent = AM.agentId
|
|
--,@pCountryId = AM.agentCountryId
|
|
FROM agentMaster AM(NOLOCK)
|
|
WHERE AM.parentId = @payOutPartnerId
|
|
AND agentType = 2903
|
|
AND AM.isSettlingAgent = 'Y'
|
|
AND AM.isApiPartner = 1
|
|
|
|
SELECT @pSuperAgentName = sSuperAgentName
|
|
,@pSuperAgent = sSuperAgent
|
|
,@pAgent = sAgent
|
|
,@pAgentName = sAgentName
|
|
FROM dbo.FNAGetBranchFullDetails(@pAgent)
|
|
|
|
SELECT @pBranch = @pAgent
|
|
,@pBranchName = @pAgentName
|
|
|
|
DECLARE @StateId INT
|
|
,@DistrictId INT
|
|
|
|
IF @receiverId IS NOT NULL
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT '1'
|
|
FROM dbo.receiverInformation(NOLOCK)
|
|
WHERE receiverId = @ReceiverId
|
|
)
|
|
BEGIN
|
|
EXEC proc_errorHandler 4
|
|
,'Receiver Data Not Match !'
|
|
,NULL;
|
|
|
|
RETURN;
|
|
END
|
|
|
|
SELECT TOP 1 @receiverName = ISNULL(firstName, '') + ISNULL(' ' + middleName, '') + ISNULL(' ' + lastName1, '') + ISNULL(' ' + lastName2, '')
|
|
,@StateId = AI.STATE_ID
|
|
,@DistrictId = AC.CITY_ID
|
|
,@RcreatedFrom = ISNULL(ri.createdFrom, 'C')
|
|
,@ROtpVerified = ISNULL(ri.isOTPVerified, 0)
|
|
FROM dbo.receiverInformation RI(NOLOCK)
|
|
LEFT JOIN API_STATE_LIST AI(NOLOCK) ON AI.STATE_NAME = RI.STATE
|
|
AND AI.API_PARTNER_ID = @payOutPartnerId
|
|
LEFT JOIN API_CITY_LIST AC(NOLOCK) ON AC.STATE_ID = AI.STATE_ID
|
|
AND AC.CITY_NAME = RI.DISTRICT
|
|
WHERE receiverId = @receiverId
|
|
|
|
--IF(@RcreatedFrom='M' AND @ROtpVerified=0 )
|
|
--BEGIN
|
|
-- EXEC proc_errorHandler 4
|
|
-- ,'Receiver Data Not Match !'
|
|
-- ,NULL;
|
|
-- RETURN;
|
|
--END
|
|
END
|
|
ELSE
|
|
SET @receiverName = ISNULL(@rFirstName, '') + ISNULL(' ' + @rMiddleName, '') + ISNULL(' ' + @rLastName, '')
|
|
|
|
IF @rFirstName IS NULL
|
|
AND @receiverId IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 5
|
|
,'Receiver name cannot be empty'
|
|
,NULL;
|
|
|
|
RETURN;
|
|
END
|
|
|
|
IF ISNULL(@exRate, 0) = 0
|
|
BEGIN
|
|
EXEC proc_errorHandler 6
|
|
,'Transaction cannot be proceed.Exchange Rate not defined'
|
|
,NULL
|
|
|
|
RETURN
|
|
END
|
|
|
|
IF @pAgent IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 3
|
|
,'Oops, something went wrong.Please perform the transaction again'
|
|
,NULL
|
|
|
|
RETURN;
|
|
END
|
|
|
|
DECLARE @OccupationId INT
|
|
,@sNaCountryId INT
|
|
,@visaStatusId INT
|
|
DECLARE @visaStatusText VARCHAR(200)
|
|
|
|
SELECT TOP 1 @agentAvlLimit = dbo.FNAGetCustomerAvailableBalance(@SenderId)
|
|
,@senderName = fullName
|
|
,@sIdNo = idNumber
|
|
,@sIdType = idType
|
|
,@sMobile = mobile
|
|
,@customerType = customerType
|
|
,@OccupationId = OCCUPATION
|
|
,@sNaCountryId = NATIVECOUNTRY
|
|
,@visaStatusId = VISASTATUS
|
|
,@visaStatusText = SV.detailTitle
|
|
,@sAdd2 = ISNULL(additionalAddress, '')
|
|
FROM customerMaster CM(NOLOCK)
|
|
LEFT JOIN STATICDATAVALUE SV(NOLOCK) ON SV.valueId = CM.visaStatus
|
|
WHERE username = @User
|
|
AND customerId = @SenderId
|
|
|
|
IF ISNULL(@paymentType, '') NOT IN ('wallet')
|
|
BEGIN
|
|
EXEC proc_errorHandler 7
|
|
,'Invalid payment method.Please perform the transaction again!'
|
|
,NULL;
|
|
|
|
RETURN;
|
|
END
|
|
|
|
IF @user IN ('demo.gme@gmeremit.com')
|
|
BEGIN
|
|
EXEC proc_errorHandler 8
|
|
,'You can not send money through test GME acocunt :('
|
|
,NULL;
|
|
|
|
RETURN;
|
|
END
|
|
|
|
IF ISNULL(@collAmt, 0) = 0
|
|
BEGIN
|
|
EXEC proc_errorHandler 9
|
|
,'Collection Amount is missing. Cannot send transaction'
|
|
,NULL;
|
|
|
|
RETURN;
|
|
END;
|
|
|
|
SET @controlNo = '21' + LEFT(CAST(ABS(CHECKSUM(NEWID())) AS VARCHAR(10)) + '0000000000', 7)
|
|
|
|
IF EXISTS (
|
|
SELECT TOP 1 'X'
|
|
FROM controlNoList WITH (NOLOCK)
|
|
WHERE controlNo = @controlNo
|
|
)
|
|
BEGIN
|
|
SET @controlNo = '21' + LEFT(CAST(ABS(CHECKSUM(NEWID())) AS VARCHAR(10)) + '0000000000', 7)
|
|
|
|
--SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo);
|
|
IF EXISTS (
|
|
SELECT TOP 1 'X'
|
|
FROM controlNoList WITH (NOLOCK)
|
|
WHERE controlNo = @controlNo
|
|
)
|
|
BEGIN
|
|
EXEC proc_errorHandler 10
|
|
,'Technical error occurred. Please try again'
|
|
,NULL;
|
|
|
|
RETURN;
|
|
END
|
|
END;
|
|
|
|
SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo);
|
|
|
|
IF @deliveryMethodId = 2
|
|
AND @pCountryId <> '151'
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT TOP 1 'A'
|
|
FROM api_bank_list(NOLOCK)
|
|
WHERE BANK_ID = @pBankId
|
|
AND PAYMENT_TYPE_ID IN (
|
|
0
|
|
,2
|
|
)
|
|
AND IS_ACTIVE = 1
|
|
)
|
|
BEGIN
|
|
EXEC proc_errorHandler 11
|
|
,'Invalid bank selected'
|
|
,NULL
|
|
|
|
RETURN
|
|
END
|
|
|
|
IF @raccountNo IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 12
|
|
,'Account number cannot be blank'
|
|
,NULL
|
|
|
|
RETURN
|
|
END
|
|
END;
|
|
|
|
--4. Get Exchange Rate Details------------------------------------------------------------------------------------------------------------------
|
|
DECLARE @pCurrHoMargin FLOAT
|
|
|
|
SELECT @customerRate = customerRate
|
|
,@sCurrCostRate = sCurrCostRate
|
|
,@sCurrHoMargin = sCurrHoMargin
|
|
,@pCurrCostRate = pCurrCostRate
|
|
,@agentCrossSettRate = agentCrossSettRate
|
|
,@serviceCharge = serviceCharge
|
|
,@iPAmt = pAmt
|
|
,@schemeId = schemeId
|
|
,@pCurrHoMargin = pCurrHoMargin
|
|
,@schemeCount = CAST( sharingValue AS INT)
|
|
,@schemeCodeId= schemeId
|
|
FROM exRateCalcHistory(NOLOCK)
|
|
WHERE FOREX_SESSION_ID = @forexSessionId
|
|
AND [USER_ID] = @user
|
|
|
|
DECLARE @pAgentCommCurrency VARCHAR(3)
|
|
,@pAgentComm MONEY
|
|
|
|
SELECT @pAgentCommCurrency = DBO.FNAGetPayCommCurrency(@sSuperAgent, @sAgent, @sBranch, @SCOUNTRYID, @pSuperAgent, @pBranch, @pCountryId)
|
|
|
|
IF (LEN(ISNULL(@TRANSFER_MODE, ''))<1
|
|
AND @pCountryId = '203'
|
|
AND @pAgent = '394133'
|
|
AND @deliveryMethodId = '2'
|
|
) -- DONGA Bank Deposit not real time
|
|
BEGIN
|
|
SET @pAgentComm = (@payoutAmt * 0.17) / 100;
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @pAgentComm = amount
|
|
FROM dbo.FNAGetPayComm(@sAgent, @sCountryId, NULL, NULL, @pCountryId, NULL, @pAgent, @pAgentCommCurrency, @deliveryMethodId, @collAmt, @payoutAmt, @serviceCharge, @transferAmt, NULL)
|
|
END
|
|
|
|
IF @customerRate IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 6
|
|
,'Transaction cannot be proceed. Exchange Rate not defined'
|
|
,NULL
|
|
|
|
RETURN
|
|
END
|
|
|
|
-- Customer Loyalty
|
|
EXEC PROC_Customer_LoyaltyV2 @flag = 'check-eligible-v2'
|
|
,@isEligible = @isEligible OUT
|
|
,@referralCode = @introducer
|
|
,@tranCount = @trancount OUT
|
|
,@schemeCount = @schemeCount OUT
|
|
,@customerId = @senderId
|
|
,@createdFrom = 'M'
|
|
|
|
print '@isEligible.Send' + @isEligible;
|
|
print '@@trancount.Send' + CAST(@trancount AS VARCHAR);
|
|
IF @isEligible = 'Y'
|
|
BEGIN
|
|
SET @iServiceCharge = 0
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
--Get Service Charge----------------------------------------------------------------------------------------------------------------------
|
|
DECLARE @iServiceChargeTemp MONEY
|
|
SELECT @iServiceChargeTemp = ISNULL(amount, - 1)
|
|
FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @collAmt, @collCurr)
|
|
|
|
--SELECT @iServiceCharge = ISNULL(@iServiceChargeTemp,0) - ISNULL(@discountedFee,0)
|
|
|
|
IF @iServiceCharge < 0 -- @iServiceCharge = - 1
|
|
BEGIN
|
|
EXEC proc_errorHandler 13
|
|
,'Transaction cannot be proceed. Service Charge is not defined'
|
|
,NULL
|
|
|
|
RETURN
|
|
END
|
|
END
|
|
print @iServiceCharge;
|
|
print @serviceCharge;
|
|
IF ISNULL(@iServiceCharge, 0) <> ISNULL(@serviceCharge, 1)
|
|
BEGIN
|
|
EXEC proc_errorHandler 14
|
|
,'Transaction cannot be proceed. Amount detail not match'
|
|
,NULL
|
|
|
|
RETURN
|
|
END
|
|
|
|
--End Service Charge-------------------------------------------------------------------------------------------------------------------------------------
|
|
--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 15
|
|
,'Amount detail not match. Please re-calculate the amount again'
|
|
,NULL
|
|
|
|
RETURN
|
|
END
|
|
|
|
IF dbo.FNA_GET_AVAILABLE_BALANCE_POINTS(@senderId) < ISNULL(@discountedFee, 0)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1
|
|
,'You do not have sufficient points for redeem!'
|
|
,NULL
|
|
RETURN;
|
|
END
|
|
|
|
SELECT @iTAmt = @collAmt - @iServiceCharge + ISNULL(@discountedFee, 0)
|
|
|
|
SELECT TOP 1 @place = place
|
|
,@currDecimal = currDecimal
|
|
FROM currencyPayoutRound(NOLOCK)
|
|
WHERE ISNULL(isDeleted, 'N') = 'N'
|
|
AND currency = @payoutCurr
|
|
AND tranType IS NULL;
|
|
|
|
SET @currDecimal = ISNULL(@currDecimal, 0)
|
|
SET @place = ISNULL(@place, 0)
|
|
SET @iPAmt = @iTAmt * @CustomerRate
|
|
|
|
IF @payoutAmt - @iPAmt <= 1
|
|
SET @iPAmt = @payoutAmt
|
|
|
|
----## WHILE CALCULATING FROM PAYOUT AMOUNT CONSIDARING 10 VND
|
|
IF ISNULL(@iPAmt, 0) <> ISNULL(@payoutAmt, 1)
|
|
BEGIN
|
|
--SET @Msg = 'Amount detail not match. Please re-calculate the amount again.' + CAST(@iPAmt AS VARCHAR) + ' - ' + CAST(@payoutAmt AS VARCHAR)
|
|
EXEC proc_errorHandler 15
|
|
,'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 = @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
|
|
DECLARE @agentRefId VARCHAR(50) = NEWID()
|
|
|
|
----Compliance Checking 1-> Block, 2-> Hold, 3-> Questionnaire
|
|
CREATE TABLE #TBL_COMPLIANCE_RESULT (
|
|
ERROR_CODE INT
|
|
,MSG VARCHAR(2000)
|
|
,RULE_ID INT
|
|
,SHORT_MSG VARCHAR(1000)
|
|
,[TYPE] VARCHAR(10)
|
|
,IS_D0C_REQUIRED BIT
|
|
)
|
|
|
|
INSERT INTO #TBL_COMPLIANCE_RESULT (
|
|
ERROR_CODE
|
|
,MSG
|
|
,RULE_ID
|
|
,SHORT_MSG
|
|
,[TYPE]
|
|
,IS_D0C_REQUIRED
|
|
)
|
|
EXEC [PROC_COMPLIANCE_CHECKING_NEW] @flag = 'core'
|
|
,@user = @user
|
|
,@sIdType = @sIdType
|
|
,@sIdNo = @sIdNo
|
|
,@receiverName = @receiverName
|
|
,@amount = @iTAmt
|
|
,@customerId = @senderId
|
|
,@pCountryId = @pCountryId
|
|
,@deliveryMethod = @deliveryMethodId
|
|
,@professionId = @OccupationId
|
|
,@receiverMobile = @rMobileNo
|
|
,@accountNo = @raccountNo
|
|
,@receiverId = @receiverId
|
|
,@sNaCountryId = @sNaCountryId
|
|
,@visaStatus = @visaStatusId
|
|
|
|
IF EXISTS (
|
|
SELECT *
|
|
FROM #TBL_COMPLIANCE_RESULT
|
|
WHERE ERROR_CODE <> 0
|
|
)
|
|
BEGIN
|
|
IF EXISTS (
|
|
SELECT *
|
|
FROM #TBL_COMPLIANCE_RESULT
|
|
WHERE ERROR_CODE IN (1)
|
|
) --transaction blocked
|
|
BEGIN
|
|
INSERT INTO ComplianceLog (
|
|
senderName
|
|
,senderCountry
|
|
,senderIdType
|
|
,senderIdNumber
|
|
,senderMobile
|
|
,receiverName
|
|
,receiverCountry
|
|
,payOutAmt
|
|
,complianceId
|
|
,complianceReason
|
|
,complainceDetailMessage
|
|
,createdBy
|
|
,createdDate
|
|
,agentRefId
|
|
,isDocumentRequired
|
|
)
|
|
SELECT @senderName
|
|
,@sCountry
|
|
,@sIdType
|
|
,@sIdNo
|
|
,@sMobile
|
|
,@receiverName
|
|
,@pCountry
|
|
,@collAmt
|
|
,RULE_ID
|
|
,SHORT_MSG
|
|
,MSG
|
|
,@user
|
|
,GETDATE()
|
|
,@agentRefId
|
|
,IS_D0C_REQUIRED
|
|
FROM #TBL_COMPLIANCE_RESULT
|
|
|
|
SELECT @MSG = MSG
|
|
FROM #TBL_COMPLIANCE_RESULT
|
|
WHERE ERROR_CODE IN (1)
|
|
--EXEC proc_errorHandler 1, @MSG, NULL
|
|
END
|
|
|
|
IF EXISTS (
|
|
SELECT *
|
|
FROM #TBL_COMPLIANCE_RESULT
|
|
WHERE ERROR_CODE IN (
|
|
2
|
|
,3
|
|
)
|
|
) --transaction hold/questionnaire
|
|
BEGIN
|
|
DELETE
|
|
FROM remitTranComplianceTemp
|
|
WHERE agentRefId = @agentRefId
|
|
|
|
INSERT remitTranComplianceTemp (
|
|
csDetailTranId
|
|
,matchTranId
|
|
,agentRefId
|
|
)
|
|
SELECT RULE_ID
|
|
,NULL
|
|
,@agentRefId
|
|
FROM #TBL_COMPLIANCE_RESULT
|
|
WHERE ERROR_CODE IN (
|
|
2
|
|
,3
|
|
)
|
|
ORDER BY ISNULL(IS_D0C_REQUIRED, 0) DESC
|
|
END
|
|
|
|
INSERT INTO ComplianceLog (
|
|
senderName
|
|
,senderCountry
|
|
,senderIdType
|
|
,senderIdNumber
|
|
,senderMobile
|
|
,receiverName
|
|
,receiverCountry
|
|
,payOutAmt
|
|
,complianceId
|
|
,complianceReason
|
|
,complainceDetailMessage
|
|
,createdBy
|
|
,createdDate
|
|
,agentRefId
|
|
,isDocumentRequired
|
|
)
|
|
SELECT @senderName
|
|
,@sCountry
|
|
,@sIdType
|
|
,@sIdNo
|
|
,@sMobile
|
|
,@receiverName
|
|
,@pCountry
|
|
,@collAmt
|
|
,RULE_ID
|
|
,SHORT_MSG
|
|
,MSG
|
|
,@user
|
|
,GETDATE()
|
|
,@agentRefId
|
|
,IS_D0C_REQUIRED
|
|
FROM #TBL_COMPLIANCE_RESULT
|
|
END
|
|
|
|
--checking for visa status questionnaire
|
|
IF EXISTS (
|
|
SELECT *
|
|
FROM VW_VISA_STATUS_QUESTIONNAIRE
|
|
WHERE VISA_ID = @visaStatusId
|
|
)
|
|
BEGIN
|
|
INSERT INTO ComplianceLog (
|
|
senderName
|
|
,senderCountry
|
|
,senderIdType
|
|
,senderIdNumber
|
|
,senderMobile
|
|
,receiverName
|
|
,receiverCountry
|
|
,payOutAmt
|
|
,complianceId
|
|
,complianceReason
|
|
,complainceDetailMessage
|
|
,createdBy
|
|
,createdDate
|
|
,agentRefId
|
|
,isDocumentRequired
|
|
)
|
|
SELECT @senderName
|
|
,@sCountry
|
|
,@sIdType
|
|
,@sIdNo
|
|
,@sMobile
|
|
,@receiverName
|
|
,@pCountry
|
|
,@collAmt
|
|
,0
|
|
,'Compliance Hold/Questionnaire due to Visa Status: ' + @visaStatusText
|
|
,'Compliance Hold/Questionnaire due to Visa Status: ' + @visaStatusText
|
|
,@user
|
|
,GETDATE()
|
|
,@agentRefId
|
|
,0
|
|
|
|
INSERT remitTranComplianceTemp (
|
|
csDetailTranId
|
|
,matchTranId
|
|
,agentRefId
|
|
,reason
|
|
)
|
|
SELECT 0
|
|
,NULL
|
|
,@agentRefId
|
|
,'Questionnaire require due to Visa Status'
|
|
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 10 rt.id
|
|
,rt.controlNo
|
|
,rt.cAmt
|
|
,rt.receiverName
|
|
,rec.idType
|
|
,rec.idNumber
|
|
,rt.createdDate
|
|
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
|
|
)
|
|
)
|
|
ORDER BY rt.createdDate DESC
|
|
|
|
IF EXISTS (
|
|
SELECT TOP 1 'X'
|
|
FROM @remitTranTemp
|
|
WHERE cAmt = @collAmt
|
|
AND (receiverName = @receiverName)
|
|
AND DATEDIFF(MI, dot, GETDATE()) <= 2
|
|
)
|
|
BEGIN
|
|
EXEC proc_errorHandler 16
|
|
,'Similar transaction found. Please perform the transaction after 2 minutes.'
|
|
,NULL;
|
|
Rollback Transaction ;
|
|
RETURN;
|
|
END;
|
|
|
|
DECLARE @countryRisk INT
|
|
,@OccupationRisk INT
|
|
,@compFinalRes VARCHAR(5)
|
|
-- #########country and occupation risk point
|
|
DECLARE @deliveryMethod VARCHAR(30)
|
|
,@pBankName VARCHAR(100)
|
|
,@pBankBranchName VARCHAR(100)
|
|
,@pBankRowId BIGINT
|
|
|
|
SELECT TOP 1 @pCountry = COUNTRYNAME
|
|
FROM countryMaster(NOLOCK)
|
|
WHERE countryId = @pCountryId
|
|
|
|
SELECT TOP 1 @deliveryMethod = typeTitle
|
|
FROM serviceTypeMaster(NOLOCK)
|
|
WHERE serviceTypeId = @deliveryMethodId
|
|
|
|
SELECT TOP 1 @pBankName = bank_name
|
|
,@pBankRowId = bank_id
|
|
FROM api_bank_list
|
|
WHERE bank_id = @pBankId
|
|
AND is_Active = 1
|
|
|
|
SELECT TOP 1 @pBankBranchName = branch_name + isnull(BRANCH_CODE1,'')
|
|
FROM api_bank_branch_list
|
|
WHERE bank_id = @pBankRowId
|
|
AND branch_id = @pBranchId
|
|
AND is_Active = 1
|
|
|
|
DECLARE @VNo VARCHAR(20);
|
|
|
|
IF @pCountry = 'Nepal'
|
|
AND @deliveryMethod = 'CASH PAYMENT'
|
|
BEGIN
|
|
SELECT @pSuperAgent = NULL
|
|
,@pSuperAgentName = NULL
|
|
,@pAgent = NULL
|
|
,@pAgentName = NULL
|
|
|
|
SELECT @pBankName = '[ANY WHERE]'
|
|
END
|
|
|
|
DECLARE @PayerId INT = NULL
|
|
|
|
--GET PAYER DETAILS IN CASE OF TF
|
|
IF @payOutPartnerId = 394130
|
|
AND @deliveryMethod = 'BANK DEPOSIT'
|
|
BEGIN
|
|
SELECT @PayerId = PayerId
|
|
FROM BankPayerSetup(NOLOCK)
|
|
WHERE BankId = @pBankId
|
|
AND IsDefault = 1
|
|
|
|
IF @PayerId IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 17
|
|
,'No default payer mapped for current bank, please contact JME Support!'
|
|
,NULL;
|
|
Rollback Transaction ;
|
|
RETURN;
|
|
END
|
|
END
|
|
|
|
BEGIN TRANSACTION;
|
|
|
|
IF @PurposeOfRemittanceOther IS NOT NULL
|
|
BEGIN
|
|
SET @PurposeOfRemittanceOther = 'Other (please specify) :' + @PurposeOfRemittanceOther
|
|
END
|
|
|
|
IF @SourceOfFundOther IS NOT NULL
|
|
BEGIN
|
|
SET @SourceOfFundOther = 'Other (please specify) :' + @SourceOfFundOther
|
|
END
|
|
|
|
IF (@pBranchId IS NULL OR @pBranchId='0')
|
|
BEGIN
|
|
select @pBranchId = bankLocation FROM receiverInformation WHERE receiverId = @ReceiverId
|
|
|
|
IF(ISNULL(@pBranchId,0)=0 and ( @payOutPartnerId='394414' and @deliveryMethod = 'BANK DEPOSIT'))
|
|
BEGIN
|
|
|
|
SET @msg = 'Please update the Routing Branch of receiver [ ' + @receiverName + ' ] before performing transaction!';
|
|
|
|
EXEC proc_errorHandler 21
|
|
,@msg
|
|
,NULL;
|
|
Rollback Transaction ;
|
|
RETURN;
|
|
END
|
|
|
|
END
|
|
|
|
|
|
INSERT INTO remitTranTemp (
|
|
controlNo
|
|
,sCurrCostRate
|
|
,sCurrHoMargin
|
|
,pCurrCostRate
|
|
,pCurrHoMargin
|
|
,agentCrossSettRate
|
|
,customerRate
|
|
,serviceCharge
|
|
,handlingFee
|
|
,pAgentComm
|
|
,pAgentCommCurrency
|
|
,promotionCode
|
|
,sSuperAgent
|
|
,sSuperAgentName
|
|
,sAgent
|
|
,sAgentName
|
|
,sBranch
|
|
,sBranchName
|
|
,sCountry
|
|
,pSuperAgent
|
|
,pSuperAgentName
|
|
,pAgent
|
|
,pAgentName
|
|
,pCountry
|
|
,paymentMethod
|
|
,pBank
|
|
,pBankName
|
|
,pBankBranch
|
|
,pBankBranchName
|
|
,accountNo
|
|
,collCurr
|
|
,tAmt
|
|
,cAmt
|
|
,pAmt
|
|
,payoutCurr
|
|
,relWithSender
|
|
,purposeOfRemit
|
|
,sourceOfFund
|
|
,tranStatus
|
|
,payStatus
|
|
,createdDate
|
|
,createdDateLocal
|
|
,createdBy
|
|
,tranType
|
|
,senderName
|
|
,receiverName
|
|
,isOnlineTxn
|
|
,schemeId
|
|
,pState
|
|
,pDistrict
|
|
,sRouteId
|
|
,schemePremium
|
|
,collMode
|
|
,PAYERID
|
|
,routedBy
|
|
,rewardPoints
|
|
,rewardType
|
|
,isBonusUpdated
|
|
)
|
|
SELECT TOP 1 @controlNoEncrypted
|
|
,@sCurrCostRate
|
|
,@sCurrHoMargin
|
|
,@pCurrCostRate
|
|
,@pCurrHoMargin
|
|
,@agentCrossSettRate
|
|
,@customerRate
|
|
,@serviceCharge
|
|
,ISNULL(@scDiscount, 0)
|
|
,@pAgentComm
|
|
,@pAgentCommCurrency
|
|
,NULL
|
|
,@sSuperAgent
|
|
,@sSuperAgentName
|
|
,@sAgent
|
|
,@sAgentName
|
|
,@sBranch
|
|
,@sBranchName
|
|
,@sCountry
|
|
,@pSuperAgent
|
|
,@pSuperAgentName
|
|
,@pAgent
|
|
,@pAgentName
|
|
,@pCountry
|
|
,@deliveryMethod
|
|
,@pBankId
|
|
,@pBankName
|
|
,@pBranchId
|
|
,@pBankBranchName
|
|
,@raccountNo
|
|
,@collCurr
|
|
,@iTAmt
|
|
,@collAmt
|
|
,@payoutAmt
|
|
,@payoutCurr
|
|
,@RelWithSender
|
|
,ISNULL(@PurposeOfRemittance, @PurposeOfRemittanceOther)
|
|
,ISNULL(@sourceOfFund, @SourceOfFundOther)
|
|
,'Hold'
|
|
,'Unpaid'
|
|
,GETDATE()
|
|
,GETUTCDATE()
|
|
,@user
|
|
,'M'
|
|
,@senderName
|
|
,@receiverName
|
|
,'Y'
|
|
,@schemeId
|
|
,@StateId
|
|
,@DistrictId
|
|
,0
|
|
,ISNULL(@schemePremium, 0)
|
|
,'Bank Deposit'
|
|
,@PayerId
|
|
,CAST(@payOutPartnerId_O AS VARCHAR) + '|' + CAST(@pBankId_O AS VARCHAR)
|
|
,ISNULL(@discountedFee, 0)
|
|
,CASE
|
|
WHEN ISNULL(@discountedFee, 0) > 0
|
|
THEN 'REDEEM'
|
|
ELSE NULL
|
|
END
|
|
,'N'
|
|
|
|
SET @tranId = SCOPE_IDENTITY();
|
|
|
|
INSERT INTO tranSendersTemp (
|
|
tranId
|
|
,customerId
|
|
,membershipId
|
|
,firstName
|
|
,middleName
|
|
,lastName1
|
|
,lastName2
|
|
,fullName
|
|
,country
|
|
,[address]
|
|
,STATE
|
|
,district
|
|
,address2
|
|
,zipCode
|
|
,city
|
|
,email
|
|
,homePhone
|
|
,workPhone
|
|
,mobile
|
|
,nativeCountry
|
|
,dob
|
|
,placeOfIssue
|
|
,idType
|
|
,idNumber
|
|
,idPlaceOfIssue
|
|
,issuedDate
|
|
,validDate
|
|
,occupation
|
|
,countryRiskPoint
|
|
,customerRiskPoint
|
|
,ipAddress
|
|
,visaStatus
|
|
)
|
|
SELECT TOP 1 @tranId
|
|
,@senderId
|
|
,membershipId
|
|
,firstName
|
|
,middleName
|
|
,lastName1
|
|
,lastName2
|
|
,@senderName
|
|
,sc.countryName
|
|
,ISNULL(city, '') + ISNULL(', ' + streetUnicode, '')
|
|
,STATE
|
|
,streetUnicode
|
|
,@sAdd2
|
|
,zipCode
|
|
,city
|
|
,email
|
|
,homePhone
|
|
,workPhone
|
|
,LEFT(mobile, 15)
|
|
,nativeCountry = nc.countryName
|
|
,dob
|
|
,c.placeOfIssue
|
|
,sdv.detailTitle
|
|
,c.idNumber
|
|
,c.placeOfIssue
|
|
,c.idIssueDate
|
|
,c.idExpiryDate
|
|
,c.occupation
|
|
,@countryRisk
|
|
,(@countryRisk + @OccupationRisk)
|
|
,@sIpAddress
|
|
,c.visaStatus
|
|
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
|
|
|
|
IF @ReceiverId IS NULL
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT TOP 1 'X'
|
|
FROM receiverInformation(NOLOCK)
|
|
WHERE fullName = @receiverName
|
|
AND customerId = @senderId
|
|
)
|
|
BEGIN
|
|
INSERT INTO receiverInformation (
|
|
customerId
|
|
,firstName
|
|
,middleName
|
|
,lastName1
|
|
,country
|
|
,address
|
|
,city
|
|
,email
|
|
,homePhone
|
|
,mobile
|
|
,relationship
|
|
,STATE
|
|
,district
|
|
,fullName
|
|
,nativeCountry
|
|
,goodsOrigin
|
|
,goodsType
|
|
,portOfShipment
|
|
,relationOther
|
|
)
|
|
SELECT @senderId
|
|
,@rFirstName
|
|
,@rMiddleName
|
|
,@rLastName
|
|
,@pCountry
|
|
,@rAddress
|
|
,@rCity
|
|
,@rEmail
|
|
,@rMobileNo
|
|
,@rMobileNo
|
|
,@RelWithSender
|
|
,@rStateId
|
|
,@rDistrictId
|
|
,@receiverName
|
|
,@rNativeCountry
|
|
,@goodsOrigin
|
|
,@goodsType
|
|
,@portOfShipment
|
|
,@RelWithSenderOthers
|
|
|
|
SET @ReceiverId = SCOPE_IDENTITY()
|
|
END;
|
|
--ELSE
|
|
-- BEGIN
|
|
-- SELECT TOP 1 @ReceiverId = receiverId
|
|
-- FROM receiverInformation(nolock)
|
|
-- WHERE fullName = @receiverName AND customerId = @senderId;
|
|
--END;
|
|
END;
|
|
|
|
INSERT INTO tranReceiversTemp (
|
|
tranId
|
|
,customerId
|
|
,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
|
|
,goodsOrigin
|
|
,goodsType
|
|
,portOfShipment
|
|
)
|
|
SELECT TOP 1 @tranId
|
|
,@ReceiverId
|
|
,firstName
|
|
,middleName
|
|
,lastName1
|
|
,lastName2
|
|
,@receiverName
|
|
,@pCountry
|
|
,[address]
|
|
,[state]
|
|
,district
|
|
,zipCode
|
|
,city
|
|
,email
|
|
,homePhone
|
|
,workPhone
|
|
,mobile
|
|
,NULL
|
|
,@rDob
|
|
,NULL
|
|
,ISNULL(@rIdType, idType)
|
|
,ISNULL(@rIdNo, idNumber)
|
|
,NULL
|
|
,@rIdIssue
|
|
,@RelWithSender
|
|
,@rIdExpiry
|
|
,NULL
|
|
,@goodsOrigin
|
|
,@goodsType
|
|
,@portOfShipment
|
|
FROM receiverInformation(NOLOCK)
|
|
WHERE receiverId = @ReceiverId
|
|
|
|
/*For duplicate pin check*/
|
|
INSERT INTO controlNoList (
|
|
controlNo
|
|
,createdby
|
|
)
|
|
SELECT @controlNo
|
|
,'M'
|
|
|
|
----IF @paymentType = 'WALLET'
|
|
--EXEC proc_UpdateCustomerBalance @controlNo = @controlNoEncrypted, @type = 'DEDUCT'
|
|
----## map locked ex rate with transaction for history
|
|
UPDATE exRateCalcHistory
|
|
SET controlNo = @controlNoEncrypted
|
|
,AGENT_TXN_REF_ID = @tranId
|
|
,isExpired = 1
|
|
WHERE FOREX_SESSION_ID = @forexSessionId
|
|
|
|
-- UPDATE FOR CUSTOMER LOYALTY
|
|
-- EXEC PROC_Customer_Loyalty @flag = 'check-eligible' , @isEligible = @isEligible OUT -- CHECKED ABOVE
|
|
|
|
EXEC PROC_Customer_LoyaltyV2 @flag = 'update-v2'
|
|
,@customerId = @senderId
|
|
,@createdFrom = 'M'
|
|
,@tranId = @tranId
|
|
,@createdBy = @user
|
|
,@controlNo = @controlNo
|
|
,@isManualSc = 'N'
|
|
,@referralCode = @introducer
|
|
,@serviceCharge = @iServiceCharge
|
|
|
|
|
|
--------------------------#########------------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
|
|
,reason
|
|
)
|
|
SELECT @tranId
|
|
,csDetailTranId
|
|
,matchTranId
|
|
,reason
|
|
FROM remitTranComplianceTemp WITH (NOLOCK)
|
|
WHERE agentRefId = @agentRefId
|
|
|
|
SET @compFinalRes = 'C'
|
|
END
|
|
|
|
UPDATE ComplianceLog
|
|
SET TRANID = @tranId
|
|
WHERE agentRefId = @agentRefId
|
|
|
|
IF (
|
|
ISNULL(@compFinalRes, '') <> ''
|
|
OR ISNULL(@ofacRes, '') <> ''
|
|
OR ISNULL(@receiverOfacRes, '') <> ''
|
|
)
|
|
BEGIN
|
|
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 = @tranId
|
|
END
|
|
ELSE IF (
|
|
@compFinalRes <> ''
|
|
AND (
|
|
ISNULL(@ofacRes, '') = ''
|
|
OR ISNULL(@receiverOfacRes, '') = ''
|
|
)
|
|
)
|
|
BEGIN
|
|
UPDATE remitTranTemp
|
|
SET tranStatus = 'Compliance Hold'
|
|
WHERE id = @tranId
|
|
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 = @tranId
|
|
END
|
|
END
|
|
|
|
--Compliance checking done
|
|
DECLARE @hasSufficientBalance CHAR(1) = 'Y'
|
|
IF @agentAvlLimit < @payoutAmt
|
|
BEGIN
|
|
SET @hasSufficientBalance = 'N'
|
|
INSERT INTO pushNotificationHistroy(customerId,body,title,createDate,imageURL,sentId,Type,isReservation,isRead,isSend,category, isClickable)
|
|
SELECT @SenderId,'Tran ID : '+CAST(@tranId AS VARCHAR)+' . Your transaction has been processed successfully but your balance is insufficient. Please load your wallet.','Insufficent Balance.',getdate(),'',@tranId,0,0,0,0,'INFO', 'Y'
|
|
END
|
|
|
|
--New logic for referral
|
|
IF ISNULL(@discountedFee, 0) > 0
|
|
EXEC proc_InsertRewardPoints @Flag = 'DEBIT', @CustomerId = @senderId, @rewardValue = @discountedFee, @TranId = @tranId
|
|
|
|
EXEC proc_InsertRewardPoints @Flag = 'TRANSACTION', @CustomerId = @senderId, @TranId = @tranId
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION;
|
|
|
|
SELECT 0 errorCode
|
|
,'Transaction has been sent successfully' msg
|
|
,@tranId id
|
|
,@controlNo extra
|
|
,ISNULL(@isRealTime, 0) extra2
|
|
,@hasSufficientBalance extra3
|
|
|
|
RETURN
|
|
|
|
-- For BroadCast Notification
|
|
--EXEC ProcBroadCastMobile @Flag='TRANSACTION_SUCCESS', @RowId=@customerId, @ControlNo=@controlNo, @CustomerId= @customerId
|
|
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
|
|
|