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.
 
 

3358 lines
168 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_sendIRHTP] Script Date: 10/30/2023 3:42:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[proc_sendIRHTP] (
@flag VARCHAR(50)
,@user VARCHAR(30)
,@txnPWD VARCHAR(100) = NULL
,@agentRefId VARCHAR(20) = NULL
,@senderId VARCHAR(50) = NULL
,@sfName VARCHAR(100) = NULL
,@smName VARCHAR(100) = NULL
,@slName VARCHAR(100) = NULL
,@slName2 VARCHAR(100) = NULL
,@sIdType VARCHAR(100) = NULL
,@sIdNo VARCHAR(50) = NULL
,@sIdValid DATETIME = NULL
,@sdob DATETIME = NULL
,@sTel VARCHAR(20) = NULL
,@sMobile VARCHAR(20) = NULL
,@sNaCountry VARCHAR(50) = NULL
,@scity VARCHAR(100) = NULL
,@sPostCode VARCHAR(50) = NULL
,@sAdd1 NVARCHAR(150) = NULL
,@sAdd2 NVARCHAR(150) = NULL
,@sEmail VARCHAR(100) = NULL
,@sgender VARCHAR(100) = NULL
,@smsSend CHAR(1) = NULL
,@sCompany VARCHAR(100) = NULL
,@sDcInfo VARCHAR(50) = NULL
,@sIpAddress VARCHAR(50) = NULL
,@benId VARCHAR(50) = NULL
,@rfName VARCHAR(100) = NULL
,@rmName VARCHAR(100) = NULL
,@rlName VARCHAR(100) = NULL
,@rlName2 VARCHAR(100) = NULL
,@rIdType VARCHAR(100) = NULL
,@rIdNo VARCHAR(50) = NULL
,@rIdValid DATETIME = NULL
,@rdob DATETIME = NULL
,@rTel VARCHAR(20) = NULL
,@rMobile VARCHAR(20) = NULL
,@rNaCountry VARCHAR(50) = NULL
,@rcity VARCHAR(100) = NULL
,@rPostCode VARCHAR(50) = NULL
,@rAdd1 VARCHAR(150) = NULL
,@rAdd2 VARCHAR(150) = NULL
,@rEmail VARCHAR(100) = NULL
,@raccountNo VARCHAR(50) = NULL
,@rgender VARCHAR(100) = NULL
,@salaryRange VARCHAR(150) = NULL
,@pCountry VARCHAR(50) = NULL -- pay country
,@pCountryId INT = NULL -- PAY COUNTRY ID
,@pSuperAgent INT = NULL --payout Super Agent
,@deliveryMethod VARCHAR(50) = NULL -- payment mode
,@deliveryMethodId INT = NULL -- payment mode ID
,@pBank INT = NULL
,@pBankName VARCHAR(100) = NULL
,@pBankBranch VARCHAR(30) = NULL
,@pBankBranchName VARCHAR(100) = NULL
,@pAgent INT = NULL
,@pAgentName VARCHAR(100) = NULL
,@pBranch INT = NULL
,@pBranchName VARCHAR(100) = NULL
,@pBankType CHAR(1) = 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 FLOAT = NULL
,@schemeType VARCHAR(50) = NULL
,@couponTranNo VARCHAR(20) = NULL
,@purpose VARCHAR(150) = NULL
,@sourceOfFund VARCHAR(150) = NULL
,@relationship VARCHAR(100) = NULL
,@occupation VARCHAR(100) = NULL
,@payMsg VARCHAR(1000) = NULL
,@company VARCHAR(200) = NULL
,@nCust CHAR(1) = NULL
,@enrollCust CHAR(1) = NULL
,@controlNo VARCHAR(20) = NULL
,@agentId INT = NULL --payout
,@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
,@id BIGINT = NULL
,@sessionId VARCHAR(50) = NULL
,@cancelrequestId INT = NULL
,@salary VARCHAR(10) = NULL
,@memberCode VARCHAR(20) = NULL
,@schemeCode VARCHAR(20) = NULL
,@cwPwd VARCHAR(10) = NULL
,@ttName VARCHAR(200) = NULL
,@ofacRes VARCHAR(MAX) = NULL
,@ofacReason VARCHAR(200) = NULL
,@voucherDetails XML = NULL
,@RBATxnRisk VARCHAR(15) = NULL
,@RBACustomerRisk VARCHAR(15) = NULL
,@RBACustomerRiskValue MONEY = NULL
,@pLocation BIGINT = NULL
,@pLocationText VARCHAR(100) = NULL
,@pSubLocation BIGINT = NULL
,@pSubLocationText VARCHAR(100) = NULL
,@pTownId VARCHAR(100) = NULL
,@isManualSc CHAR(1) = NULL
,@manualSc MONEY = NULL
,@sCustStreet NVARCHAR(100) = NULL
,@sCustLocation INT = NULL
,@sCustomerType INT = NULL
,@sCustBusinessType INT = NULL
,@sCustIdIssuedCountry INT = NULL
,@sCustIdIssuedDate VARCHAR(25) = NULL
,@receiverId INT = NULL
,@payoutPartner INT = NULL
,@customerDepositedBank INT = NULL
,@introducer VARCHAR(100) = NULL
,@isOnbehalf VARCHAR(1) = NULL
,@payerId BIGINT = NULL
,@payerBranchId BIGINT = NULL
,@IsFromTabPage CHAR(1) = NULL
,@customerPassword VARCHAR(20) = NULL
,@referralCode VARCHAR(20) = NULL
,@isAdditionalCDDI CHAR(1) = NULL
,@additionalCDDIXml NVARCHAR(MAX) = NULL
,@tpExRate FLOAT = NULL
,@tpPCurr VARCHAR(10) = NULL
,@tpRefNo VARCHAR(30) = NULL
,@tpTranId VARCHAR(30) = NULL
,@tpRefNo2 VARCHAR(30) = NULL
,@calcBy VARCHAR(10) = NULL
,@promotionCode INT = NULL
,@promotionAmount VARCHAR(150) = NULL
,@relationOther VARCHAR(150) = NULL
,@purposeOther VARCHAR(150) = NULL
,@txnRequestFromAgent VARCHAR(10) = NULL
,@txnRequestRowId BIGINT = NULL
,@goodsOrigin VARCHAR(200) = NULL
,@goodsType VARCHAR(200) = NULL
,@portOfShipment VARCHAR(200) = NULL
,@visaStatus INT = NULL
,@trackBy VARCHAR(50) = NULL
,@partnerId INT = NULL
,@exRateId VARCHAR(30) = NULL
,@nameAsPerBank VARCHAR(150) = NULL
,@calculatedOriginalSc MONEY = NULL
)
AS
SET NOCOUNT ON;
SET XACT_ABORT ON;
--------------------------------------------
--July 12 --> added flags (questionnaire) for Non Permit Visa
--July 14 --> JME-557 - Add compliance Log for Non Permit Visa
--> replaced hard code with VW_VISA_STATUS_QUESTIONNAIRE
--Aug 05 --JME-567 ->add col 'receiverNameAlt' changes to show BENEFICIARY NAME AS PER BANK
--Aug 11 --> set pBankName from apibanklist JME-568
--#134 -> Allow edit option of address in Town Area
--Replace with FNAGetCustomerAddress
--Sep 23 ->#178 -> Show only Roman in Remittance Statement
--#334 : OFAC screening changes.
-- #739 Ime pay
-- #5968 - service charge revised - loyalty , @FLAG = 'exrate' , 'i'
--#9069 -error when calculated using receiving amt
-- #9776 - Service Charge calcaulation for Validation , @flag = 'v'
---- removed password validation for txn
BEGIN TRY
BEGIN
DECLARE @sCurrCostRate FLOAT
,@sCurrHoMargin FLOAT
,@pCurrCostRate FLOAT
,@pCurrHoMargin FLOAT
,@sCurrAgentMargin FLOAT
,@pCurrAgentMargin FLOAT
,@sCurrSuperAgentMargin FLOAT
,@pCurrSuperAgentMargin FLOAT
,@customerRate FLOAT
,@sAgentSettRate FLOAT
,@pDateCostRate FLOAT
,@agentCrossSettRate FLOAT
,@treasuryTolerance FLOAT
,@customerPremium FLOAT
,@schemePremium FLOAT
,@sharingValue MONEY
,@sharingType CHAR(1)
,@sAgentComm MONEY
,@sAgentCommCurrency VARCHAR(3)
,@sSuperAgentComm MONEY
,@sSuperAgentCommCurrency VARCHAR(3)
,@pAgentComm MONEY
,@pAgentCommCurrency VARCHAR(3)
,@pSuperAgentComm MONEY
,@pSuperAgentCommCurrency VARCHAR(3)
,@promotionType INT
,@pSuperAgentName VARCHAR(100)
,@pStateId INT
,@agentType INT
,@senderName VARCHAR(100)
,@pAgentMapCode VARCHAR(10)
,@pBranchMapCode VARCHAR(10)
,@F_ANYWHERE CHAR(1)
,@TRN_TYPE VARCHAR(100)
,@complienceMessage VARCHAR(500)
,@complienceErrorCode TINYINT
,@shortMsg VARCHAR(100)
--## USED TO BIND DATA FOR MTRADE
DECLARE @sederNationalityCode VARCHAR(3)
,@receiverNationalityCode VARCHAR(3)
,@rBankCode VARCHAR(20)
,@rBankBranchCode VARCHAR(20)
,@pBankCode VARCHAR(20)
,@pBankBranchCode VARCHAR(20)
,@pAgentCode VARCHAR(20)
,@tranCount INT
,@schemeCount INT
,@isEligible CHAR(1) = 'N'
,@schemeCodeId INT
,@isFreeSc CHAR(1) = 'N'
,@calcOriginalSc MONEY = 0
IF ISNULL(@relationship, '') <> 'other (please specify)'
SET @relationOther = NULL
IF ISNULL(@purpose, '') <> 'other (please specify)'
SET @purposeOther = NULL
DECLARE @xAmt MONEY
,@baseCurrency VARCHAR(3)
,@limitBal MONEY
,@sendingCustType INT
,@msg VARCHAR(200)
DECLARE @iServiceCharge MONEY
,@iTAmt MONEY
,@iPAmt MONEY
,@iScDiscount MONEY
,@iCustomerRate FLOAT
,@iCollDetailAmt MONEY
DECLARE @place INT
,@currDecimal INT
DECLARE @cisMasterId INT
,@compIdResult VARCHAR(300)
,@perDayCustomerLimit MONEY
DECLARE @controlNoEncrypted VARCHAR(20)
DECLARE @csMasterId INT
,@complianceRes VARCHAR(20)
,@totalRows INT
,@count INT
,@compFinalRes VARCHAR(20)
DECLARE @csMasterRec TABLE (
rowId INT IDENTITY(1, 1)
,masterId INT
)
--SELECT @sBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
DECLARE @customerTotalAmt2 MONEY = 0
DECLARE @tellerBalance MONEY
,@tellerLimit MONEY
,@sendPerTransaction MONEY
,@vaultBalance MONEY
,@vaultLimit MONEY
DECLARE @scValue MONEY
,@scAction CHAR(2)
,@scOffer MONEY
,@exRateOffer FLOAT
,@scDiscount MONEY
,@limit MONEY
SET @raccountNo = UPPER(REPLACE(@raccountNo, ' ', ''))
IF @pBankBranch = 'NA'
SET @pBankBranch = NULL
IF @salary = 'undefined'
SET @salary = NULL
IF @salaryRange = 'undefined'
SET @salaryRange = NULL
IF @pBankBranchName IN (
'Select'
,'undefined'
)
SET @pBankBranchName = 'Any Branch'
IF @rIdType IN (
'Select..'
,'Select'
)
SET @rIdType = NULL
DECLARE @exRateCalByPartner INT
IF @flag IN (
'V'
,'I'
)
BEGIN
IF ISNULL(@senderId, 0) = 0
OR (ISNULL(@senderId, '') = '')
BEGIN
SELECT '1' ErrCode
,'Invalid sender selected, please refresh page and try sending again!' Msg
,NULL id
RETURN
END
IF NOT EXISTS (
SELECT 'X'
FROM countryIdType CID WITH (NOLOCK)
INNER JOIN staticDataValue SV WITH (NOLOCK) ON CID.IdTypeId = SV.valueId
INNER JOIN (
SELECT IDTYPE
FROM CUSTOMERMASTER(NOLOCK)
WHERE CUSTOMERID = @senderId
) CM ON CM.IDTYPE = SV.VALUEID
WHERE countryId = 113
AND ISNULL(isDeleted, 'N') <> 'Y'
AND ISNULL(SV.ISACTIVE, 'Y') = 'Y'
AND (
spFlag IS NULL
OR ISNULL(spFlag, 0) = 5200
)
)
BEGIN
SELECT '1' ErrCode
,'Customer ID type is not valid, please update ID details first!' Msg
,NULL id
RETURN
END
--CHECKING OF BRANCH/USER CASH HOLD LIMIT
IF EXISTS (
SELECT *
FROM AGENTMASTER
WHERE AGENTID = @SAGENT
AND ISINTL = 1
)
AND ISNULL(@INTRODUCER, '') <> ''
BEGIN
SELECT '1' ErrCode
,'Agent''s and introducer can not be selected at same time!' Msg
,NULL id
RETURN
END
DECLARE @RULETYPE CHAR(1)
,@LIMITERRORCODE INT
,@BRANCH_ID_FOR_LIMIT VARCHAR(20)
,@INTRODUCER_LIMIT VARCHAR(20)
IF NOT EXISTS (
SELECT *
FROM APPLICATIONUSERS(NOLOCK)
WHERE USERNAME = @USER
AND AGENTID = @SAGENT
)
AND ISNULL(@INTRODUCER, '') = ''
SET @INTRODUCER_LIMIT = @SAGENT
ELSE IF ISNULL(@INTRODUCER, '') <> ''
SET @INTRODUCER_LIMIT = @INTRODUCER
EXEC PROC_CHECK_BRANCH_USER_CASH_HOLD_LIMIT @USER = @USER
,@INTRODUCER = @INTRODUCER_LIMIT
,@CAMT = @CAMT
,@ERRORCODE = @LIMITERRORCODE OUT
,@ERRORMSG = @msg OUT
,@RULETYPE = @RULETYPE OUT
--select @RULETYPE,@ERRORCODE
IF @LIMITERRORCODE <> 0
AND @RULETYPE = 'B'
AND @COLLMODE = 'CASH COLLECT'
BEGIN
SELECT '1' ErrCode
,'Branch/User cash hold limit is exceeded, please contact head office!' Msg
,NULL id
RETURN
END
--CHECK IF PAYOUT PARTNER IS ACTIVE OR NOT AND CHECK STATUS
IF @payoutPartner IS NULL
BEGIN
SELECT '1' ErrCode
,'Payout partner not defined yet for receiving country!' Msg
,NULL id
RETURN
END
IF NOT EXISTS (
SELECT 1
FROM TblPartnerwiseCountry(NOLOCK)
WHERE AgentId = @payoutPartner
AND IsActive = 1
)
AND @PCOUNTRY <> 'VIETNAM'
BEGIN
SELECT '1' ErrCode
,'Payout partner is not active please retry by choosing country again!' Msg
,NULL id
RETURN
END
SELECT @exRateCalByPartner = ISNULL(exRateCalByPartner, 0)
FROM TblPartnerwiseCountry(NOLOCK)
WHERE CountryId = @pCountryId
AND IsActive = 1
AND ISNULL(PaymentMethod, @deliveryMethodId) = @deliveryMethodId
--CHECKING CUSTOMER KYC STATUS
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'
SELECT '1' ErrCode
,@MSG Msg
,NULL id
RETURN
END
--GET PAYOUT AGENT DETAILS
SELECT @PAGENT = AGENTID
FROM AGENTMASTER(NOLOCK)
WHERE PARENTID = @payoutPartner
AND ISNULL(ISSETTLINGAGENT, 'N') = 'Y';
SELECT @pSuperAgent = sSuperAgent
,@pSuperAgentName = sSuperAgentName
,@pAgent = sAgent
,@pAgentName = sAgentName
,@pBranch = sBranch
,@pBranchName = sBranchName
FROM dbo.FNAGetBranchFullDetails(@PAGENT)
SELECT @sSuperAgent = sSuperAgent
,@sSuperAgentName = sSuperAgentName
,@sAgent = sAgent
,@sAgentName = sAgentName
,@sBranch = sBranch
,@sBranchName = sBranchName
FROM dbo.FNAGetBranchFullDetails(@sBranch)
IF EXISTS (
SELECT 'X'
FROM receiveTranLimit(NOLOCK)
WHERE COUNTRYID = @pCountryId
AND sendingCountry = @sCountryId
AND ISNULL(TRANTYPE, @deliveryMethodId) = @deliveryMethodId
AND branchSelection = 'Not Required'
)
BEGIN
SET @pBankBranch = NULL
SET @pBankBranchName = NULL
END
END
SET @sAgentCommCurrency = 'JPY'
IF @flag = 'exRate'
BEGIN
IF @partnerId IS NOT NULL --AND @pCountryId = '203'
SET @payoutPartner = @partnerId
ELSE
SELECT @payoutPartner = AGENTID
,@exRateCalByPartner = ISNULL(exRateCalByPartner, 0)
FROM TblPartnerwiseCountry(NOLOCK)
WHERE CountryId = @pCountryId
AND IsActive = 1
AND ISNULL(PaymentMethod, @deliveryMethod) = @deliveryMethod
IF @payoutPartner IS NOT NULL
BEGIN
--GET PAYOUT AGENT DETAILS
SELECT @PAGENT = AGENTID
FROM AGENTMASTER(NOLOCK)
WHERE PARENTID = @payoutPartner
AND ISNULL(ISSETTLINGAGENT, 'N') = 'Y';
SELECT @pSuperAgent = sSuperAgent
,@pSuperAgentName = sSuperAgentName
,@pAgent = sAgent
,@pAgentName = sAgentName
,@pBranch = sBranch
,@pBranchName = sBranchName
FROM dbo.FNAGetBranchFullDetails(@PAGENT)
END
ELSE
BEGIN
SELECT '1' ErrCode
,'Partner not yet mapped for the selected country!' Msg
,NULL id
RETURN
END
DECLARE @rowId INT
,@errorCode CHAR(1) = 0
SELECT @scValue = 0
,@scOffer = 0
,@exRateOffer = 0
,@scDiscount = 0
--1. Get payout currency
SELECT @pCurr = pCurrency
FROM dbo.exRateTreasury WITH (NOLOCK)
WHERE pCountry = @pCountryId
AND pAgent = @pAgent
IF @pCurr IS NULL
SELECT @pCurr = pCurrency
FROM dbo.exRateTreasury WITH (NOLOCK)
WHERE pCountry = @pCountryId
AND pAgent IS NULL
SELECT @place = place
,@currDecimal = currDecimal
FROM currencyPayoutRound WITH (NOLOCK)
WHERE ISNULL(isDeleted, 'N') = 'N'
AND currency = @pCurr
AND ISNULL(tranType, @deliveryMethod) = @deliveryMethod
SET @currDecimal = ISNULL(@currDecimal, 0)
IF @pCurr IS NULL
BEGIN
SELECT '1' ErrCode
,'Currency not been defined yet for receiving country' Msg
RETURN
END
IF ISNULL(@tpExRate, 0) = 0
BEGIN
SELECT '1' ErrCode
,'Third Party Exchange rate fetching error for currency (' + @pCurr + ')' Msg
RETURN
END
PRINT @sCountryId;
PRINT @sAgent;
PRINT @sBranch;
PRINT @collCurr;
PRINT @pCountryId;
PRINT @pAgent;
PRINT @pCurr;
PRINT @deliveryMethodId;
SELECT @pCurrHoMargin = pCurrHoMargin
FROM dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethodId)
SELECT @exRate = @tpExRate - ISNULL(@pCurrHoMargin, 0)
-- LOYALTY FREE SC
EXEC PROC_Customer_LoyaltyV2 @flag = 'check-eligible-v2'
,@isEligible = @isEligible OUT
,@referralCode = @introducer
,@tranCount = @trancount OUT
,@schemeCount = @schemeCount OUT
,@customerId = @senderId
,@createdFrom = 'I'
print @isEligible
--SELECT TOP 1 @schemeCount = txnCount
--FROM schemeSetup(NOLOCK)
--ORDER BY createdDate DESC
IF ISNULL(@exRate, 0) = 0
BEGIN
SELECT '1' ErrCode
,'Exchange rate not defined yet for receiving currency (' + @pCurr + ')' Msg
,NULL id
RETURN
END
IF ISNULL(@cAmt, 0.00) <> 0.00
BEGIN
IF @isEligible = 'Y'
BEGIN
SET @serviceCharge = 0
END
ELSE
BEGIN
SELECT @calcOriginalSc = amount
FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethod, @cAmt, @collCurr)
IF ISNULL(@isManualSc, 'N') = 'N'
BEGIN
SELECT @serviceCharge = @calcOriginalSc -- amount
-- [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethod, @cAmt, @collCurr)
END
ELSE
BEGIN
SET @serviceCharge = ISNULL(@manualSc, 0)
IF @cAmt <> @tAmt + @serviceCharge
BEGIN
EXEC proc_errorHandler 1
,'Please click on Calculate or Click out side the Service Charge input Box, after editing Service Charge!'
,NULL
RETURN
END
END
IF @serviceCharge IS NULL
AND ISNULL(@isManualSc, 'N') = 'N'
BEGIN
SELECT '1' ErrCode
,'Service charge not defined yet for receiving country' Msg
,NULL id
RETURN;
END
END
IF @scAction = 'PD' -- Percent Discount
BEGIN
SET @scOffer = (@scValue / 100) * @serviceCharge
SET @scDiscount = (@scValue / 100) * @serviceCharge
END
ELSE IF @scAction = 'FD' -- Flat Discount
BEGIN
SET @scDiscount = @scValue
END
ELSE IF @scAction = 'FV' -- Fixed Value
BEGIN
SET @scOffer = @scValue
SET @scDiscount = @serviceCharge - @scValue
END
SET @tAmt = @cAmt - @serviceCharge + @scDiscount
SET @pAmt = @tAmt * (@exRate + @exRateOffer)
--SET @pAmt = ROUND(@pAmt, @currDecimal, 1)
SET @pAmt = FLOOR(@pAmt)
--IF @place IS NOT NULL
-- SET @pAmt = ROUND(@pAmt, -@place, 1)
END
ELSE
BEGIN
--SET @tAmt = ROUND(@pAmt/(@exRate + @exRateOffer),0)
SET @tAmt = CEILING(@pAmt / (@exRate + @exRateOffer))
IF @isEligible = 'Y'
BEGIN
SET @serviceCharge = 0
END
ELSE
BEGIN
SELECT @calcOriginalSc = ISNULL(amount,'0.00')
FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethod, @tAmt, @collCurr)
IF ISNULL(@isManualSc, 'N') = 'N'
BEGIN
SELECT @serviceCharge = @calcOriginalSc -- amount
-- FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethod, @tAmt, @collCurr)
END
ELSE
BEGIN
SET @serviceCharge = ISNULL(@manualSc, 0)
END
IF @serviceCharge IS NULL
BEGIN
SELECT '1' ErrCode
,'Service charge not defined yet for receiving country' Msg
,NULL id
RETURN;
END
END
IF @scAction = 'PD'
BEGIN
SET @scOffer = (@scValue / 100) * @serviceCharge
SET @scDiscount = (@scValue / 100) * @serviceCharge
END
ELSE IF @scAction = 'FD'
BEGIN
SET @scDiscount = @scValue
END
ELSE IF @scAction = 'FV'
BEGIN
SET @scOffer = @scValue
SET @scDiscount = @serviceCharge - @scValue
END
SET @cAmt = (@tAmt + @serviceCharge - @scDiscount)
SET @cAmt = CEILING(@cAmt)
END
--New validation negative coll amt due to manual service charge added
IF @pAmt <= 0
OR @tAmt <= 0
OR @cAmt <= 0
BEGIN
SELECT '1' ErrCode
,'Invalid payout/transfer amount/collect amount found!' Msg
,NULL id
RETURN;
END
----validate cash hold limit of branch/user
--EXEC PROC_CHECK_BRANCH_USER_CASH_HOLD_LIMIT @USER = @USER, @CAMT = @CAMT, @ERRORCODE = @LIMITERRORCODE OUT
-- , @ERRORMSG = @msg OUT, @RULETYPE = @RULETYPE OUT
--IF @LIMITERRORCODE <> 0 AND @RULETYPE = 'B' AND @collMode = 'CASH COLLECT'
--BEGIN
-- SELECT '1' ErrCode, 'Branch/User cash hold limit is exceeded, please contact head office!' Msg,NULL id
-- RETURN
--END
--4. Validate Country Sending Limit
EXEC PROC_CHECKCOUNTRYLIMIT @flag = 's-limit'
,@cAmt = @cAmt
,@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 ErrCode
,@msg Msg
RETURN;
END
--Validate Country Sending Limit END
--5. Validate Country Receiving Limit
EXEC PROC_CHECKCOUNTRYLIMIT @flag = 'r-limit'
,@cAmt = @cAmt
,@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 ErrCode
,@msg Msg
RETURN;
END
--Validate Country Receiving Limit
SET @msg = 'Success'
SELECT @errorCode ErrCode
,@msg Msg
,scCharge = @serviceCharge
,exRate = @exRate
,place = @place
,pCurr = @pCurr
,currDecimal = @currDecimal
,pAmt = @pAmt
,sAmt = @tAmt
,place = @place
,disc = 0.00
,collAmt = @cAmt
,exRateOffer = @exRateOffer
,scOffer = @scDiscount
,scAction = @scAction
,scValue = @scValue
,scDiscount = @scDiscount
,tpExRate = @tpExRate
,exRateConfirmId = @exRateId
,isFreeSc = @isFreeSc
,calcOriginalSc = @calcOriginalSc
END
ELSE IF @flag = 'v'
BEGIN
DECLARE @AVAILABLEBALANCE MONEY
IF @nCust = 'N'
BEGIN
IF ISNULL(@senderId, 0) = 0
BEGIN
EXEC proc_errorHandler 1
,'Please choose Sender'
,NULL
RETURN
END
SELECT @AVAILABLEBALANCE = DBO.FNAGetCustomerAvailableBalance(@senderId)
IF (ISNULL(@AVAILABLEBALANCE, 0) < @CAMT)
AND (@collMode = 'Bank Deposit')
BEGIN
EXEC proc_errorHandler 1
,'Collect Amount can not be greater then Available Balance!'
,NULL
RETURN
END
END
IF @sfName IS NULL
BEGIN
EXEC proc_errorHandler 1
,'Sender First Name missing'
,NULL
RETURN
END
IF @sNaCountry IS NULL
BEGIN
EXEC proc_errorHandler 1
,' Sender Native Country missing'
,NULL
RETURN
END
IF @rfName IS NULL
BEGIN
EXEC proc_errorHandler 1
,'New Receiver First Name missing'
,NULL
RETURN
END
IF ISNULL(@deliveryMethod, '') = ''
BEGIN
EXEC proc_errorHandler 1
,'Please choose payment mode'
,NULL
RETURN
END
IF @serviceCharge IS NULL
BEGIN
EXEC proc_errorHandler 1
,'Service Charge missing'
,NULL
RETURN
END
IF ISNULL(@tAmt, 0) = 0
BEGIN
EXEC proc_errorHandler 1
,'Transfer Amount missing'
,NULL
RETURN
END
IF ISNULL(@exRate, 0) = 0
BEGIN
EXEC proc_errorHandler 1
,'Exchange Rate missing'
,NULL
RETURN
END
IF ISNULL(@cAmt, 0) = 0
BEGIN
EXEC proc_errorHandler 1
,'Collection Amount is missing. Cannot send transaction'
,NULL
RETURN
END
IF @serviceCharge > @cAmt
BEGIN
EXEC proc_errorHandler 1
,'Collection Amount is less than service charge.'
,NULL
RETURN
END
IF @serviceCharge > @cAmt
BEGIN
EXEC proc_errorHandler 1
,'Collection Amount is less than service charge.'
,NULL
RETURN
END
IF @deliveryMethod = 'Bank Deposit'
BEGIN
IF @pBank IS NULL
BEGIN
EXEC proc_errorHandler 1
,'Please select bank'
,NULL
RETURN
END
IF @raccountNo IS NULL
BEGIN
EXEC proc_errorHandler 1
,'Account number cannot be blank'
,NULL
RETURN
END
END
IF (@pBankBranch IS NOT NULL)
BEGIN
SELECT @pBank = parentId
,@pBankBranchName = agentName
FROM agentMaster WITH (NOLOCK)
WHERE agentId = @pBankBranch
SELECT @pBankName = agentName
FROM agentMaster WITH (NOLOCK)
WHERE agentId = @pBank
END
DECLARE @visaStatusText VARCHAR(200)
SELECT @sendingCustType = customerType
,@visaStatus = visaStatus
,@visaStatusText = SV.detailTitle
FROM dbo.customerMaster CM WITH (NOLOCK)
LEFT JOIN STATICDATAVALUE SV(NOLOCK) ON SV.valueId = CM.visaStatus
WHERE customerId = @senderId
--END of Credit Limit Section
SELECT @place = place
,@currDecimal = currDecimal
FROM currencyPayoutRound WITH (NOLOCK)
WHERE ISNULL(isDeleted, 'N') = 'N'
AND currency = @pCurr
AND ISNULL(tranType, @deliveryMethodId) = @deliveryMethodId
SET @currDecimal = ISNULL(@currDecimal, 0)
IF ISNULL(@tpExRate, 0) = 0
BEGIN
SELECT '1' ErrCode
,'Third Party Exchange rate fetching error for currency (' + @pCurr + ')' Msg
RETURN
END
SELECT @pCurrHoMargin = pCurrHoMargin
FROM dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethodId)
SELECT @exRate = @tpExRate - ISNULL(@pCurrHoMargin, 0)
IF @exRate IS NULL
BEGIN
SELECT '1' ErrCode
,'Exchange rate not defined yet for receiving currency (' + @pCurr + ')' Msg
RETURN
END
DECLARE @tAmtSC MONEY
EXEC PROC_Customer_LoyaltyV2 @flag = 'check-eligible-v2'
,@isEligible = @isEligible OUT
,@referralCode = @introducer
,@tranCount = @trancount OUT
,@schemeCount = @schemeCount OUT
,@customerId = @senderId
,@createdFrom = 'I'
IF @calcBy = 'cAmt'
BEGIN
-- print 'camt'
IF @isEligible = 'Y'
BEGIN
SET @iServiceCharge = 0
END
ELSE
BEGIN
IF ISNULL(@isManualSc, 'N') = 'N'
BEGIN
SELECT @iServiceCharge = ISNULL(amount, - 1)
FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @cAmt, @collCurr)
END
ELSE
BEGIN
SET @iServiceCharge = ISNULL(@manualSc, 0)
IF @cAmt <> @tAmt + @serviceCharge
BEGIN
EXEC proc_errorHandler 1
,'Please click on Calculate or Click out side the Service Charge input Box, after editing Service Charge!'
,NULL
RETURN
END
END
END
END
ELSE
BEGIN
--SET @tAmt = ROUND(@pAmt/(@exRate + @exRateOffer),0)
SET @tAmtSC = CEILING(@pAmt / (@exRate))
IF @isEligible = 'Y'
BEGIN
SET @iServiceCharge = 0
END
ELSE
BEGIN
IF ISNULL(@isManualSc, 'N') = 'N'
BEGIN
SELECT @iServiceCharge = ISNULL(amount, - 1)
FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @tAmtSC, @collCurr)
END
ELSE
BEGIN
SET @iServiceCharge = ISNULL(@manualSc, 0)
IF @cAmt <> @tAmt + @iServiceCharge
BEGIN
EXEC proc_errorHandler 1
,'Please click on Calculate or Click out side the Service Charge input Box, after editing Service Charge!'
,NULL
RETURN
END
END
END
END
IF @iServiceCharge = - 1
AND ISNULL(@isManualSc, 'N') = 'N'
BEGIN
EXEC proc_errorHandler 1
,'Transaction cannot be proceed. Service Charge is not defined'
,NULL
RETURN
END
SET @iServiceCharge = ROUND(@iServiceCharge, 2)
IF (@iServiceCharge <> @serviceCharge)
AND (ISNULL(@isManualSc, 'N') = 'N')
BEGIN
EXEC proc_errorHandler 1
,'Transaction cannot be proceed. Amount detail not match. Please check service charge'
,NULL
RETURN
END
SET @iCustomerRate = @exRate + ISNULL(@schemePremium, 0)
IF @pCurr = 'VND'
BEGIN
IF @calcBy = 'cAmt'
BEGIN
SET @iTAmt = @cAmt - @iServiceCharge
SET @iPAmt = @iTAmt * @iCustomerRate
--IF @place IS NOT NULL
-- SET @pAmt = ROUND(@pAmt, -@place, 1)
END
ELSE
BEGIN
SET @iPAmt = @pAmt
END
END
ELSE
BEGIN
SET @iTAmt = @cAmt - @iServiceCharge
SELECT @place = place
,@currDecimal = currDecimal
FROM currencyPayoutRound WITH (NOLOCK)
WHERE ISNULL(isDeleted, 'N') = 'N'
AND currency = @pCurr
AND ISNULL(tranType, @deliveryMethodId) = @deliveryMethodId
SET @currDecimal = ISNULL(@currDecimal, 0)
SET @place = ISNULL(@place, 0)
SET @iPAmt = @iTAmt * @iCustomerRate
--SET @iPAmt = ROUND(@iPAmt, @currDecimal, 1)
--IF @place IS NOT NULL
-- SET @iPAmt = ROUND(@iPAmt, -@place, 1)
END
IF @pAmt - @iPAmt <= 1
SET @iPAmt = @pAmt
IF @iPAmt <> @pAmt
BEGIN
EXEC proc_errorHandler 1
,'Amount detail not match. Please re-calculate the amount again.'
,NULL
RETURN
END
--End of service charge Checking
--send agent commission if it is external agent
DECLARE @sSettlementRate FLOAT
,@pSettlementRate FLOAT
SET @sSettlementRate = @sCurrCostRate + @sCurrHoMargin
SET @pSettlementRate = @pCurrCostRate - @pCurrHoMargin
--START OFAC Checking
DECLARE @receiverName VARCHAR(200)
,@checkNameBy VARCHAR(10)
,@matchBy CHAR(1)
SELECT @checkNameBy = TRACK_BY
FROM OFACSETTING(NOLOCK)
IF @checkNameBy IS NULL
SET @checkNameBy = 'OFAC'
IF (ISNULL(@senderId, '') = '')
SELECT @senderName = @sfName + ISNULL(' ' + @smName, '') + ISNULL(' ' + @slName, '') + ISNULL(' ' + @slName2, '')
ELSE
SELECT @senderName = firstName + ISNULL(' ' + middleName, '') + ISNULL(' ' + lastName1, '') + ISNULL(' ' + lastName2, '')
FROM dbo.customerMaster WITH (NOLOCK)
WHERE customerId = @senderId
SELECT @receiverName = @rfName + ISNULL(' ' + @rmName, '') + ISNULL(' ' + @rlName, '') + ISNULL(' ' + @rlName2, '')
DECLARE @receiverOfacRes VARCHAR(MAX)
IF @checkNameBy = 'OFAC'
BEGIN
EXEC proc_ofacTracker @flag = 't'
,@name = @senderName
,@Result = @ofacRes OUTPUT
IF @senderName = @receiverName
BEGIN
SET @receiverOfacRes = @ofacRes
END
ELSE
BEGIN
EXEC proc_ofacTracker @flag = 't'
,@name = @receiverName
,@Result = @receiverOfacRes OUTPUT
END
END
ELSE
BEGIN
SELECT @ofacRes = Dowjones.[dbo].[DJ_GET_SUSPICIOUS_NAME_MATCH_IDS_V2](@senderName)
IF @senderName = @receiverName
BEGIN
SET @receiverOfacRes = @ofacRes
END
ELSE
BEGIN
SELECT @receiverOfacRes = Dowjones.[dbo].[DJ_GET_SUSPICIOUS_NAME_MATCH_IDS_V2](@receiverName)
END
END
DECLARE @result VARCHAR(MAX)
IF ISNULL(@ofacRes, '') <> ''
BEGIN
SET @matchBy = 'S'
SET @ofacReason = 'Matched by sender name'
END
IF ISNULL(@receiverOfacRes, '') <> ''
BEGIN
SET @matchBy = 'R'
IF @senderName <> @receiverName
SET @ofacRes = ISNULL(@ofacRes + ',' + @receiverOfacRes, '' + @receiverOfacRes)
SET @ofacReason = 'Matched by receiver name'
END
IF ISNULL(@ofacRes, '') <> ''
AND ISNULL(@receiverOfacRes, '') <> ''
BEGIN
SET @matchBy = 'B'
SET @ofacReason = 'Matched by both sender name and receiver name'
END
--******************BEGINING OF NEW CUSTOMER CREATION AND ENROLLMENT********************************
DECLARE @sIdTypeId INT
SELECT @sIdTypeId = valueId
FROM staticDataValue WITH (NOLOCK)
WHERE detailTitle = @sIdType
AND typeID = 1300
SELECT @sfName = UPPER(@sfName)
,@smName = UPPER(@smName)
,@slName = UPPER(@slName)
,@slName2 = UPPER(@slName2)
SELECT @rfName = UPPER(@rfName)
,@rmName = UPPER(@rmName)
,@rlName = UPPER(@rlName)
,@rlName2 = UPPER(@rlName2)
--2. Begining of New customer Creation and enrollment or updating existing customer data---
SET @senderName = @sfName + ISNULL(' ' + @smName, '') + ISNULL(' ' + @slName, '') + ISNULL(' ' + @slName2, '')
SET @receiverName = @rfName + ISNULL(' ' + @rmName, '') + ISNULL(' ' + @rlName, '') + ISNULL(' ' + @rlName2, '')
DECLARE @sNaCountryId INT = (
SELECT countryId
FROM COUNTRYMASTER(NOLOCK)
WHERE COUNTRYNAME = @sNaCountry
)
--------#Register Receiver if not registered#---------------
DECLARE @rBankId INT = ISNULL(@pBank, @pAgent)
DECLARE @rBankBranchId INT = ISNULL(@pBankBranch, '')
EXEC PROC_CHECK_RECEIVER_REGISTRATION @flag = 'i'
,@user = @user
,@rfName = @rfName
,@rmName = @rmName
,@rlName = @rlName
,@receiverIdNo = @rIdNo
,@receiverIdType = @rIdType
,@receiverCountry = @pCountry
,@receiverAdd = @rAdd1
,@receiverCity = @rcity
,@receiverMobile = @rMobile
,@receiverPhone = @rTel
,@receiverEmail = @rEmail
,@receiverId = @receiverId OUT
,@customerId = @senderId
,@paymentMethodId = @deliveryMethodId
,@rBankId = @rBankId
,@rBankBranchId = @rBankBranchId
,@rAccountNo = @raccountNo
,@purpose = @purpose
,@relationship = @relationship
,@loginBranchId = @sBranch
,@relationOther = @relationOther
,@purposeOther = @purposeOther
,@goodsType = @goodsType
,@goodsOrigin = @goodsOrigin
,@portOfShipment = @portOfShipment
--START Compliance Checking
DECLARE @complianceRuleId INT
,@cAmtUSD MONEY
SELECT @sCurrCostRate = sCurrCostRate
,@sCurrHoMargin = sCurrHoMargin
FROM dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethodId)
IF @sCurrCostRate IS NULL
BEGIN
EXEC proc_errorHandler 1
,'Transaction cannot be proceed. Exchange Rate not defined!'
,NULL
RETURN
END
SET @sCountry = 'Japan'
--checking for visa status questionnaire
DECLARE @isVisaStatusQuestionnaire CHAR(1) = 'N'
IF EXISTS (
SELECT *
FROM VW_VISA_STATUS_QUESTIONNAIRE
WHERE VISA_ID = @visaStatus
)
BEGIN
SET @isVisaStatusQuestionnaire = 'Y'
END
IF ISNULL(@isAdditionalCDDI, 'N') = 'N'
BEGIN
CREATE TABLE #TBL_COMPLIANCE_RESULT (
ERROR_CODE INT
,MSG VARCHAR(500)
,RULE_ID INT
,SHORT_MSG VARCHAR(100)
,[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 = @tAmt
,@customerId = @senderId
,@pCountryId = @pCountryId
,@deliveryMethod = @deliveryMethodId
,@professionId = @occupation
,@receiverMobile = @rMobile
,@accountNo = @raccountNo
,@receiverId = @receiverId
,@sNaCountryId = @sNaCountryId
,@visaStatus = @visaStatus
IF EXISTS (
SELECT *
FROM #TBL_COMPLIANCE_RESULT
WHERE ERROR_CODE <> 0
)
BEGIN
--IF(@complienceErrorCode = 1)
--BEGIN
-- SELECT 101 errorCode,@shortMsg msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
--END
IF EXISTS (
SELECT *
FROM #TBL_COMPLIANCE_RESULT
WHERE ERROR_CODE IN (
2
,3
)
)
BEGIN
DELETE
FROM remitTranComplianceTemp
WHERE agentRefId = @agentRefId
INSERT remitTranComplianceTemp (
csDetailTranId
,matchTranId
,agentRefId
)
SELECT TOP 1 RULE_ID
,NULL
,@agentRefId
FROM #TBL_COMPLIANCE_RESULT
WHERE ERROR_CODE IN (
2
,3
)
--SELECT 102 errorCode,@shortMsg msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
END
--IF(@complienceErrorCode = 3)
--BEGIN
-- SELECT 103 errorCode,@shortMsg msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
--END
DELETE
FROM ComplianceLog
WHERE agentRefId = @agentRefId
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
,@cAmt
,RULE_ID
,SHORT_MSG
,MSG
,@user
,GETDATE()
,@agentRefId
,IS_D0C_REQUIRED
FROM #TBL_COMPLIANCE_RESULT
IF @isVisaStatusQuestionnaire = 'Y'
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
,@cAmt
,0
,'Compliance Hold/Questionnaire due to Visa Status: ' + @visaStatusText
,'Compliance Hold/Questionnaire due to Visa Status: ' + @visaStatusText
,@user
,GETDATE()
,@agentRefId
,0
END
END
--END OFAC/Compliance data
END
IF (@ofacRes <> '')
BEGIN
IF @checkNameBy = 'OFAC'
BEGIN
SET @result = @ofacRes + '|' + ISNULL(@ofacReason, '')
SELECT errorCode = 100
,msg = 'WARNING!!! This customer is listed on OFAC List'
,id = @result
,extra = @checkNameBy
EXEC proc_sendPageLoadData @flag = 'ofac'
,@user = @user
,@blackListIds = @ofacRes
END
ELSE
BEGIN
SET @result = @ofacRes + '|' + ISNULL(@ofacReason, '')
SELECT errorCode = 100
,msg = 'WARNING!!! This customer is listed on DJ List'
,id = @result
,extra = @checkNameBy
EXEC proc_sendPageLoadData @flag = 'ofac'
,@user = @user
,@blackListIds = @ofacRes
,@TRACK_BY = 'DJ'
END
END
SELECT *
INTO #TEMP_COMPLIANCE
FROM ComplianceLog CL(NOLOCK)
WHERE agentRefId = @agentRefId
AND CAST(CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
DECLARE @IS_TXN_IN_COMPLIANCE BIT = 0
,@isDocumentRequired CHAR(1) = 'N'
IF EXISTS (
SELECT *
FROM #TEMP_COMPLIANCE
WHERE isDocumentRequired = 1
)
BEGIN
SET @isDocumentRequired = 'Y'
END
IF EXISTS (
SELECT 1
FROM #TEMP_COMPLIANCE
)
BEGIN
IF EXISTS (
SELECT 1
FROM #TEMP_COMPLIANCE CL
INNER JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
WHERE agentRefId = @agentRefId
AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
AND nextAction = 'B'
)
BEGIN
SET @IS_TXN_IN_COMPLIANCE = 1
SELECT errorCode = 101
,MSG = 'COMPLIANCE BLOCK'
,id = @isVisaStatusQuestionnaire
,compApproveRemark = 'COMPLIANCE BLOCK'
,vtype = 'compliance'
,isDocumentRequired = 'N'
SELECT id
,csDetailRecId = ''
,[S.N.] = ROW_NUMBER() OVER (
ORDER BY id
)
,[Remarks] = complianceReason
,[Action] = CASE
WHEN nextAction = 'H'
THEN 'HOLD'
WHEN nextAction = 'B'
THEN 'Blocked'
ELSE 'Questionnaire'
END
--,[Matched Tran ID] = ''
FROM #TEMP_COMPLIANCE CL
LEFT JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
WHERE agentRefId = @agentRefId
AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
--AND nextAction = 'B'
ORDER BY CD.period
END
IF @IS_TXN_IN_COMPLIANCE = 0
AND EXISTS (
SELECT 1
FROM #TEMP_COMPLIANCE CL
INNER JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
WHERE agentRefId = @agentRefId
AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
AND nextAction = 'Q'
)
BEGIN
SET @IS_TXN_IN_COMPLIANCE = 1
SELECT errorCode = 103
,MSG = 'COMPLIANCE HOLD'
,id = @isVisaStatusQuestionnaire
,compApproveRemark = 'COMPLIANCE HOLD'
,vtype = 'compliance'
,isDocumentRequired = @isDocumentRequired
SELECT id
,csDetailRecId = ''
,[S.N.] = ROW_NUMBER() OVER (
ORDER BY id
)
,[Remarks] = complianceReason
,[Action] = CASE
WHEN nextAction = 'H'
THEN 'HOLD'
WHEN nextAction = 'B'
THEN 'Blocked'
ELSE 'Questionnaire'
END
--,[Matched Tran ID] = ''
FROM #TEMP_COMPLIANCE CL
LEFT JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
WHERE agentRefId = @agentRefId
AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
--AND nextAction = 'Q'
ORDER BY CD.period
END
IF @IS_TXN_IN_COMPLIANCE = 0
AND EXISTS (
SELECT 1
FROM #TEMP_COMPLIANCE CL
INNER JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
WHERE agentRefId = @agentRefId
AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
AND nextAction = 'H'
)
BEGIN
SELECT errorCode = 102
,MSG = 'COMPLIANCE QUESTIONNAIRE'
,id = @isVisaStatusQuestionnaire
,compApproveRemark = 'COMPLIANCE QUESTIONAIRE'
,vtype = 'compliance'
,isDocumentRequired = @isDocumentRequired
SELECT id
,csDetailRecId = ''
,[S.N.] = ROW_NUMBER() OVER (
ORDER BY id
)
,[Remarks] = complianceReason
,[Action] = CASE
WHEN nextAction = 'H'
THEN 'HOLD'
WHEN nextAction = 'B'
THEN 'Blocked'
ELSE 'Questionnaire'
END
--,[Matched Tran ID] = ''
FROM #TEMP_COMPLIANCE CL
LEFT JOIN csDetail CD(NOLOCK) ON CD.csDetailId = CL.complianceId
WHERE agentRefId = @agentRefId
AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
--AND nextAction = 'H'
ORDER BY CD.period
END
IF @IS_TXN_IN_COMPLIANCE = 0
AND EXISTS (
SELECT 1
FROM #TEMP_COMPLIANCE CL
WHERE agentRefId = @agentRefId
AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
AND complianceId = 0
)
BEGIN
SELECT errorCode = 102
,MSG = 'COMPLIANCE HOLD'
,id = @isVisaStatusQuestionnaire
,compApproveRemark = 'COMPLIANCE HOLD'
,vtype = 'compliance'
,isDocumentRequired = 'N'
SELECT id
,csDetailRecId = ''
,[S.N.] = ROW_NUMBER() OVER (
ORDER BY id
)
,[Remarks] = complianceReason
,[Action] = 'Questionnaire'
--,[Matched Tran ID] = ''
FROM ComplianceLog CL
WHERE agentRefId = @agentRefId
AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
END
END
ELSE
BEGIN
IF @isVisaStatusQuestionnaire = 'Y'
BEGIN
INSERT remitTranComplianceTemp (
csDetailTranId
,matchTranId
,agentRefId
,reason
)
SELECT TOP 1 0
,NULL
,@agentRefId
,'Questionnaire require due to Visa Status'
SELECT errorCode = 102
,MSG = 'COMPLIANCE HOLD'
,id = @isVisaStatusQuestionnaire
,compApproveRemark = 'COMPLIANCE HOLD'
,vtype = 'compliance'
,isDocumentRequired = 'N'
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
,@cAmt
,0
,'Compliance Hold/Questionnaire due to Visa Status: ' + @visaStatusText
,'Compliance Hold/Questionnaire due to Visa Status: ' + @visaStatusText
,@user
,GETDATE()
,@agentRefId
,0
SELECT id
,csDetailRecId = ''
,[S.N.] = ROW_NUMBER() OVER (
ORDER BY id
)
,[Remarks] = complianceReason
,[Action] = 'Questionnaire'
--,[Matched Tran ID] = ''
FROM ComplianceLog CL
WHERE agentRefId = @agentRefId
AND CAST(cl.CREATEDDATE AS DATE) = CAST(GETDATE() AS DATE)
END
END
SELECT 0 errorCode
,'Validation successful' msg
,@senderId id
,@receiverId Extra
--*****Check For Same Name*****
SELECT dbo.fnadecryptstring(controlno) controlNo
,tranId = rt.id
,senderName
,sIdType = sen.idType
,sIdNo = sen.idNumber
,cAmt
,pCountry
FROM vwremitTran rt WITH (NOLOCK)
INNER JOIN vwtranSenders sen WITH (NOLOCK) ON rt.id = sen.tranId
WHERE senderName = @senderName
AND createdDate BETWEEN CONVERT(VARCHAR, GETDATE(), 101)
AND CONVERT(VARCHAR, GETDATE(), 101) + ' 23:59:59'
--*****Check For Same Id*****
SELECT dbo.fnadecryptstring(controlno) controlNo
,tranId = rt.id
,senderName
,sIdType = sen.idType
,sIdNo = sen.idNumber
,cAmt
,pCountry
FROM vwremitTran rt WITH (NOLOCK)
INNER JOIN vwtranSenders sen WITH (NOLOCK) ON rt.id = sen.tranId
WHERE idType = @sIdType
AND idNumber = @sIdNo
AND createdDate BETWEEN CONVERT(VARCHAR, GETDATE(), 101)
AND CONVERT(VARCHAR, GETDATE(), 101) + ' 23:59:59'
END
ELSE IF @flag = 'i' --Send Transaction
BEGIN
--1. Field Validation-----------------------------------------------------------
IF @user IS NULL
BEGIN
EXEC proc_errorHandler 1
,'Your session has expired. Cannot send transaction'
,NULL
RETURN
END
--IF ISNULL(@IsFromTabPage, '0') != '1'
--BEGIN
-- IF NOT EXISTS (
-- SELECT 'X'
-- FROM applicationUsers WITH (NOLOCK)
-- WHERE PWD = DBO.FNAEncryptString(@txnPWD)
-- AND userName = @user
-- )
-- BEGIN
-- EXEC proc_errorHandler 1
-- ,'TXN password is invalid !'
-- ,@user
-- RETURN
-- END
--END
IF (
ISNULL(@deliveryMethod, '') = ''
OR @serviceCharge IS NULL
OR ISNULL(@cAmt, 0) = 0
OR ISNULL(@tAmt, 0) = 0
OR ISNULL(@exRate, 0) = 0
)
BEGIN
EXEC proc_errorHandler 1
,'Mandatory Field(s) missing'
,NULL
RETURN
END
IF @customerPassword IS NOT NULL
BEGIN
IF NOT EXISTS (
SELECT 1
FROM dbo.customerMaster
WHERE customerId = @senderId
AND dbo.decryptDb(customerPassword) = @customerPassword
)
BEGIN
EXEC proc_errorHandler 1
,'Customer Password is invalid !'
,NULL
RETURN
END
END
--******************BEGINING OF NEW CUSTOMER CREATION AND ENROLLMENT********************************
SELECT @sIdTypeId = valueId
FROM staticDataValue WITH (NOLOCK)
WHERE detailTitle = @sIdType
AND typeID = 1300
SELECT @sfName = UPPER(@sfName)
,@smName = UPPER(@smName)
,@slName = UPPER(@slName)
,@slName2 = UPPER(@slName2)
SELECT @rfName = UPPER(@rfName)
,@rmName = UPPER(@rmName)
,@rlName = UPPER(@rlName)
,@rlName2 = UPPER(@rlName2)
--2. Begining of New customer Creation and enrollment or updating existing customer data---
SET @senderName = @sfName + ISNULL(' ' + @smName, '') + ISNULL(' ' + @slName, '') + ISNULL(' ' + @slName2, '')
SET @receiverName = @rfName + ISNULL(' ' + @rmName, '') + ISNULL(' ' + @rlName, '') + ISNULL(' ' + @rlName2, '')
SET @sNaCountryId = (
SELECT countryId
FROM COUNTRYMASTER(NOLOCK)
WHERE COUNTRYNAME = @sNaCountry
)
SET @nCust = 'Y'
IF @nCust = 'N'
AND @senderId IS NULL
BEGIN
EXEC proc_errorHandler 1
,'Mandatory Field(s) missing'
,NULL
RETURN
END
IF @nCust = 'N'
AND @collMode = 'Bank Deposit'
BEGIN
SELECT @AVAILABLEBALANCE = DBO.FNAGetCustomerAvailableBalance(@senderId)
IF (ISNULL(@AVAILABLEBALANCE, 0) < @CAMT)
BEGIN
EXEC proc_errorHandler 1
,'Collect Amount can not be greater then Available Balance!'
,NULL
RETURN
END
END
IF ISNULL(@cAmt, 0) = 0
BEGIN
EXEC proc_errorHandler 1
,'Collection Amount is missing'
,NULL
RETURN
END
IF @serviceCharge > @cAmt
BEGIN
EXEC proc_errorHandler 1
,'Collection Amount is less than service charge.'
,NULL
RETURN
END
SET @controlNo = '21' + LEFT(CAST(ABS(CHECKSUM(NEWID())) AS VARCHAR(10)) + '0000000000', 7)
IF EXISTS (
SELECT 'X'
FROM controlNoList WITH (NOLOCK)
WHERE controlNo = @controlNo
)
BEGIN
SET @controlNo = '21' + LEFT(CAST(ABS(CHECKSUM(NEWID())) AS VARCHAR(10)) + '0000000000', 7)
IF EXISTS (
SELECT 'X'
FROM controlNoList WITH (NOLOCK)
WHERE controlNo = @controlNo
)
BEGIN
EXEC proc_errorHandler 1
,'Technical error occurred. Please try again'
,NULL
RETURN
END
END
SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
IF @deliveryMethod IN (
'Cash Payment'
,'Door to Door'
)
BEGIN
IF @deliveryMethod = 'Door to Door'
BEGIN
SET @payMsg = ' [Door To Door Location:' + @pBankBranchName + ', ' + @pBankBranchName + ' ]'
END
END
ELSE IF @deliveryMethod = 'Bank Deposit'
BEGIN
IF @pBank IS NULL
BEGIN
EXEC proc_errorHandler 1
,'Bank is required for Bank Deposit '
,NULL
RETURN
END
END
--3. Check Limit starts
SELECT @settlingAgent = agentId
FROM dbo.agentMaster(NOLOCK)
WHERE agentId = @sBranch
AND ISNULL(isSettlingAgent, 'N') = 'Y'
IF @settlingAgent IS NULL
SELECT @settlingAgent = agentId
FROM dbo.agentMaster(NOLOCK)
WHERE agentId = @sAgent
AND ISNULL(isSettlingAgent, 'N') = 'Y'
--Credit Limit Section
IF @collMode = 'Cash Collect'
BEGIN
DECLARE @sBranch1 INT
,@user1 VARCHAR(50)
,@holdType VARCHAR(20)
,@userId INT
IF EXISTS (
SELECT 1
FROM dbo.applicationUsers
WHERE agentId = @sBranch
AND userName = @user
)
BEGIN
SELECT @user1 = @user
,@sBranch1 = NULL
END
ELSE
BEGIN
SET @sBranch1 = @sBranch
END
SELECT @limitBal = availableLimit
,@holdType = CASE
WHEN ruleType = 'H'
THEN 'Hold'
ELSE 'Block'
END
FROM DBO.FNAGetUserCashLimitDetails(@user1, @sBranch1)
IF @tAmt > @limitBal
AND @holdType = 'B'
BEGIN
EXEC [proc_errorHandler] 1
,'Transfer amount exceeds Limit. Please, Check your available limit.'
,@controlNo
RETURN
END
END
--End of Credit Limit Section-------------------------------------------------------------------------------------------------------------
SET @sCountryId = 113
--Get Service Charge----------------------------------------------------------------------------------------------------------------------
DECLARE @originalSC MONEY = 0
-- LOYALTY FREE SC
EXEC PROC_Customer_LoyaltyV2 @flag = 'check-eligible-v2'
,@isEligible = @isEligible OUT
,@referralCode = @introducer
,@tranCount = @trancount OUT
,@schemeCount = @schemeCount OUT
,@customerId = @senderId
,@createdFrom = 'I'
IF @calcBy = 'cAmt'
BEGIN
IF @isEligible = 'Y'
BEGIN
SET @iServiceCharge = 0
END
ELSE
BEGIN
IF ISNULL(@isManualSc, 'N') = 'N'
BEGIN
SELECT @iServiceCharge = ISNULL(amount, - 1)
FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @cAmt, @collCurr)
SET @originalSC = @iServiceCharge
END
ELSE
BEGIN
SET @iServiceCharge = ISNULL(@manualSc, 0)
SELECT @originalSC = ISNULL(amount, - 1)
FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @cAmt, @collCurr)
IF @cAmt <> @tAmt + @iServiceCharge
BEGIN
EXEC proc_errorHandler 1
,'Please click on Calculate or Click out side the Service Charge input Box, after editing Service Charge!'
,NULL
RETURN
END
END
END
END
ELSE
BEGIN
--SET @tAmt = ROUND(@pAmt/(@exRate + @exRateOffer),0)
SET @tAmtSC = CEILING(@pAmt / (@exRate + ISNULL(@exRateOffer, 0)))
IF @isEligible = 'Y'
BEGIN
SET @iServiceCharge = 0
END
ELSE
BEGIN
IF ISNULL(@isManualSc, 'N') = 'N'
BEGIN
SELECT @iServiceCharge = ISNULL(amount, - 1)
FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @tAmtSC, @collCurr)
SET @originalSC = @iServiceCharge
END
ELSE
BEGIN
SET @iServiceCharge = ISNULL(@manualSc, 0)
SELECT @originalSC = ISNULL(amount, - 1)
FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethodId, @tAmtSC, @collCurr)
IF @cAmt <> @tAmt + @iServiceCharge
BEGIN
EXEC proc_errorHandler 1
,'Please click on Calculate or Click out side the Service Charge input Box, after editing Service Charge!'
,NULL
RETURN
END
END
END
END
IF @iServiceCharge = - 1
AND ISNULL(@isManualSc, 'N') = 'N'
BEGIN
EXEC proc_errorHandler 1
,'Transaction cannot be proceed. Service Charge is not defined'
,NULL
RETURN
END
--Earthquake relief fund
DECLARE @scDisc MONEY
IF @iServiceCharge <> @serviceCharge
AND ISNULL(@isManualSc, 'N') = 'N'
BEGIN
EXEC proc_errorHandler 1
,'Transaction cannot be proceed. Amount detail not match. Service Charge is different.'
,NULL
RETURN
END
IF (@iServiceCharge <> @calculatedOriginalSc)
AND ISNULL(@isManualSc, 'Y') = 'Y'
BEGIN
UPDATE APPLICATIONUSERS
SET freeScCounter = isnull(freeScCounter, 0) + 1
WHERE username = @user
END
--End-------------------------------------------------------------------------------------------------------------------------------------
--4. Get Exchange Rate Details------------------------------------------------------------------------------------------------------------------
SELECT @sCurrCostRate = sCurrCostRate
,@sCurrHoMargin = sCurrHoMargin
,@sCurrAgentMargin = sCurrAgentMargin
,@pCurrCostRate = pCurrCostRate
,@pCurrHoMargin = pCurrHoMargin
,@pCurrAgentMargin = pCurrAgentMargin
,@agentCrossSettRate = agentCrossSettRate
,@treasuryTolerance = treasuryTolerance
,@customerPremium = customerPremium
,@sharingValue = sharingValue
,@sharingType = sharingType
FROM dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethodId)
SELECT @customerRate = @tpExRate - ISNULL(@pCurrHoMargin, 0)
SET @pCurrCostRate = @tpExRate
IF @customerRate IS NULL
BEGIN
EXEC proc_errorHandler 1
,'Transaction cannot be proceed. Exchange Rate not defined'
,NULL
RETURN
END
SET @serviceCharge = @serviceCharge - ISNULL(@scDiscount, 0)
SET @iServiceCharge = @iServiceCharge - ISNULL(@iScDiscount, 0)
SET @tAmt = @cAmt - @serviceCharge
SET @iCustomerRate = @customerRate + ISNULL(@schemePremium, 0)
IF @pCurr = 'VND'
BEGIN
IF @calcBy = 'cAmt'
BEGIN
SET @iTAmt = @cAmt - @iServiceCharge
SET @iPAmt = @iTAmt * @iCustomerRate
--IF @place IS NOT NULL
-- SET @pAmt = ROUND(@pAmt, -@place, 1)
END
ELSE
BEGIN
SET @iPAmt = @pAmt
END
END
ELSE
BEGIN
SET @iTAmt = @cAmt - @iServiceCharge
SELECT @place = place
,@currDecimal = currDecimal
FROM currencyPayoutRound WITH (NOLOCK)
WHERE ISNULL(isDeleted, 'N') = 'N'
AND currency = @pCurr
AND ISNULL(tranType, @deliveryMethodId) = @deliveryMethodId
SET @currDecimal = ISNULL(@currDecimal, 0)
SET @place = ISNULL(@place, 0)
SET @iPAmt = @iTAmt * @iCustomerRate
--SET @iPAmt = ROUND(@iPAmt, @currDecimal, 1)
--IF @place IS NOT NULL
-- SET @iPAmt = ROUND(@iPAmt, -@place, 1)
END
IF @pAmt - @iPAmt <= 1
SET @iPAmt = @pAmt
IF @iPAmt <> @pAmt
BEGIN
EXEC proc_errorHandler 1
,'Amount detail not match. Please re-calculate the amount again.'
,NULL
RETURN
END
--6. Commission Calculation Start
--**********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
)
DECLARE @moneySendTemp TABLE (
tranNo BIGINT
,refno VARCHAR(20)
,paidAmt MONEY
,receiverName VARCHAR(200)
,receiverIdDescription VARCHAR(100)
,receiverIdDetail VARCHAR(50)
,dot DATETIME
)
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.idNumber = @sIdNo
AND (
tranStatus <> 'CancelRequest'
AND tranStatus <> 'Cancel'
)
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 = @receiverName
OR (
ISNULL(receiverIdType, '0') = @rIdType
AND ISNULL(receiverIdNumber, '0') = @rIdNo
)
)
AND DATEDIFF(MI, dot, GETDATE()) <= 5
)
BEGIN
EXEC proc_errorHandler 1
,'Similar transaction found. You can process similar transaction after 5 minutes.'
,NULL
RETURN
END
DECLARE @customerTotalSentAmt MONEY = 0
,@txnSumTobeDeducted MONEY = 0
SELECT @customerTotalSentAmt = SUM(cAmt)
FROM @remitTranTemp
SELECT @customerTotalAmt2 = SUM(paidAmt)
FROM @moneySendTemp
SELECT @txnSumTobeDeducted = ISNULL(SUM(paidAmt), 0)
FROM @moneySendTemp mst
INNER JOIN @remitTranTemp rtt ON mst.refno = rtt.controlNo
IF (ISNULL(@customerTotalAmt2, 0) + ISNULL(@customerTotalSentAmt, 0) + @cAmt - @txnSumTobeDeducted) > dbo.FNAGetPerDayCustomerLimit(@settlingAgent)
BEGIN
EXEC proc_errorHandler 1
,'Transaction cannot be proceed. Customer Limit exceeded.'
,NULL
RETURN
END
-- #########country and occupation risk point
DECLARE @countryRisk INT
,@OccupationRisk INT
,@isFirstTran CHAR(1)
SELECT @sNaCountry = CASE
WHEN @nCust = 'Y'
THEN @sNaCountry
ELSE nativeCountry
END
FROM tranSenders WITH (NOLOCK)
WHERE customerId = @senderId
IF NOT EXISTS (
SELECT 'Z'
FROM tranSenders WITH (NOLOCK)
WHERE customerId = @senderId
)
BEGIN
IF NOT EXISTS (
SELECT 'Z'
FROM tranSendersTEMP WITH (NOLOCK)
WHERE customerId = @senderId
)
SET @isFirstTran = 'Y'
ELSE
SET @isFirstTran = 'N'
END
SELECT @countryRisk = ISNULL(fatfRating, 0)
FROM countryMaster C WITH (NOLOCK)
WHERE countryName = @sNaCountry
AND ISNULL(C.isActive, 'Y') = 'Y'
AND ISNULL(C.isDeleted, 'N') = 'Y'
SELECT @OccupationRisk = ISNULL(riskFactor, 0)
FROM occupationMaster WITH (NOLOCK)
WHERE occupationId = @occupation
AND ISNULL(isActive, 'Y') = 'Y'
AND ISNULL(isDeleted, 'N') = 'Y'
--RBA
DECLARE @RBAScoreTxn MONEY
,@RBAScoreCustomer MONEY
SELECT @RBAScoreCustomer = @RBACustomerRiskValue
,@RBAScoreTxn = CASE
WHEN @RBATxnRisk = 'LOW RISK'
THEN 40
WHEN @RBATxnRisk = 'MEDIUM RISK'
THEN 50
WHEN @RBATxnRisk = 'HIGH RISK'
THEN 51
ELSE 100
END
IF @deliveryMethod = 'BANK DEPOSIT'
BEGIN
IF NOT EXISTS (
SELECT 'A'
FROM API_BANK_LIST(NOLOCK)
WHERE BANK_ID = @pBank
AND IS_ACTIVE = 1
)
BEGIN
EXEC proc_errorHandler 1
,'Invalid bank selected'
,NULL
RETURN
END
END
--##Get Voucher Details into temp table END##--
SELECT @pAgentCommCurrency = DBO.FNAGetPayCommCurrency(@sSuperAgent, @sAgent, @sBranch, @SCOUNTRYID, @pSuperAgent, @pBranch, @pCountryId)
SELECT @pAgentComm = amount
FROM dbo.FNAGetPayComm(@sAgent, @sCountryId, NULL, NULL, @pCountryId, NULL, @pAgent, @pAgentCommCurrency, @deliveryMethodId, @cAmt, @pAmt, @serviceCharge, @tAmt, NULL)
SET @sSettlementRate = @sCurrCostRate + @sCurrHoMargin
SET @pSettlementRate = @pCurrCostRate - @pCurrHoMargin
SELECT @sAgentComm = 0
,@sSuperAgentComm = 0
,@sSuperAgentCommCurrency = @sAgentCommCurrency
--END
IF EXISTS (
SELECT *
FROM REFERRAL_AGENT_WISE(NOLOCK)
WHERE REFERRAL_CODE = @introducer
AND AGENT_ID <> 0
)
BEGIN
SELECT @sAgent = AM.AGENTID
,@sAgentName = AM.AGENTNAME
,@sBranch = AM.AGENTID
,@sBranchName = AM.AGENTNAME
FROM REFERRAL_AGENT_WISE R(NOLOCK)
INNER JOIN AGENTMASTER AM(NOLOCK) ON AM.AGENTID = R.AGENT_ID
WHERE REFERRAL_CODE = @introducer
END
--UPDATE PROMOTIONAL CAMPAIGN
IF ISNULL(@promotionCode, 0) <> 0
BEGIN
EXEC PROC_PROMOTIONAL_CAMPAIGN_COUNTRY_WISE @ID = @id
,@promotionCode = @promotionCode
,@promotionAmount = @promotionAmount
END
DECLARE @ADDRESS_TBL_ROW_ID VARCHAR(80)
SELECT @sAdd2 = ISNULL(additionalAddress, '')
,@visaStatus = visastatus
,@ADDRESS_TBL_ROW_ID = district
,@sCustStreet = ISNULL(street, rtrim(ltrim(replace(replace(cast(streetunicode AS VARCHAR), '?', ''), '-', ''))))
,@sAdd1 = ISNULL(CITY, '') + ', ' + ISNULL(street, rtrim(ltrim(replace(replace(cast(streetunicode AS VARCHAR), '?', ''), '-', ''))))
FROM customermaster(NOLOCK)
WHERE customerid = @senderId
BEGIN TRANSACTION
IF (
@pCountry = 'Nepal'
AND @deliveryMethodId = 1
)
BEGIN
SELECT @pSuperAgent = NULL
,@pSuperAgentName = NULL
,@PAGENT = NULL
,@pAgentName = NULL
,@pBranch = NULL
,@pBranchName = NULL
END
SELECT @pBankName = BANK_NAME
FROM API_BANK_LIST
WHERE BANK_ID = @pbank;
INSERT INTO remitTranTemp (
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
,pSuperAgentComm
,pSuperAgentCommCurrency
,promotionCode
,promotionType
,pMessage
,sSuperAgent
,sSuperAgentName
,sAgent
,sAgentName
,sBranch
,sBranchName
,sCountry
,pSuperAgent
,pSuperAgentName
,pAgent
,pAgentName
,pBranch
,pBranchName
,pCountry
,paymentMethod
,pBank
,pBankName
,pBankBranch
,pBankBranchName
,accountNo
,pBankType
,expectedPayoutAgent
,collMode
,collCurr
,tAmt
,cAmt
,pAmt
,payoutCurr
,relWithSender
,purposeOfRemit
,sourceOfFund
,tranStatus
,payStatus
,createdDate
,createdDateLocal
,createdBy
,tranType
,voucherNo
,senderName
,receiverName
,pState
,pDistrict
,pLocation
--NEW
,isScMaunal
,originalSC
,externalBankCode
,isOnBehalf
,PayerId
,PayerBranchId
,sRouteId
,receiverNameAlt
)
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)
,0
,@sAgentComm
,@sAgentCommCurrency
,@sSuperAgentComm
,@sSuperAgentCommCurrency
,@pAgentComm
,@pAgentCommCurrency
,@pSuperAgentComm
,@pSuperAgentCommCurrency
,@introducer
,@promotionType --@promotionCode REPLACED BY ARJUN
,@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 + ISNULL(' :' + @relationOther, '')
,@purpose + ISNULL(' :' + @purposeOther, '')
,@sourceOfFund
,'Hold'
,'UNPAID'
,DBO.FNADateFormatTZ(GETDATE(), @user)
,GETDATE()
,@user
,'I'
,''
,@senderName
,@receiverName
,@pLocation
,@pSubLocation
,@pTownId
,CASE
WHEN ISNULL(@isManualSc, 'N') = 'Y'
THEN 1
ELSE 0
END
,@originalSC
,@customerDepositedBank
,CASE @isOnbehalf
WHEN 'Y'
THEN 1
ELSE 0
END
,@payerId
,@payerBranchId
,CASE @IsFromTabPage
WHEN '1'
THEN '1'
ELSE '0'
END
,@nameAsPerBank
SET @id = SCOPE_IDENTITY()
INSERT INTO controlNoList (
controlNo
,createdby
)
SELECT @controlNo
,'TF'
INSERT INTO tranSendersTemp (
tranId
,customerId
,membershipId
,firstName
,middleName
,lastName1
,lastName2
,fullName
,country
,[address]
,address2
,zipCode
,city
,email
,homePhone
,mobile
,nativeCountry
,dob
,placeOfIssue
,idType
,idNumber
,validDate
,occupation
,countryRiskPoint
,customerRiskPoint
,isFirstTran
,salary
,companyName
,cwPwd
,ttName
,dcInfo
,ipAddress
,RBA
--NEW
,STATE
,district --USE FOR STREET
,customerType
--,ttName--USE FOR BUSINESS TYPE
,idPlaceOfIssue
,visaStatus
,issuedDate
)
SELECT @id
,@senderId
,@memberCode
,@sfName
,@smName
,@slName
,@slName2
,@senderName
,@sCountry
,@sAdd1
,@sAdd2
,@sPostCode
,@scity
,@sEmail
,@sTel
,@sMobile
,@sNaCountry
,@sdob
,@sIdTypeId
,@sIdType
,@sIdNo
,@sIdValid
,@occupation
,@countryRisk
,@RBAScoreCustomer
,@isFirstTran
,@salaryRange
,@company
,@cwPwd
,@ADDRESS_TBL_ROW_ID
,@sDcInfo
,@sIpAddress
,@RBAScoreTxn
,@sCustLocation
,@sCustStreet
,@sCustomerType
--,@sCustBusinessType
,@sCustIdIssuedCountry
,@visaStatus
,@sCustIdIssuedDate
INSERT INTO tranReceiversTemp (
tranId
,customerId
,membershipId
,firstName
,middleName
,lastName1
,lastName2
,fullName
,country
,[address]
,zipCode
,city
,email
,homePhone
,workPhone
,mobile
,nativeCountry
,dob
,placeOfIssue
,idType
,idNumber
,idPlaceOfIssue
,issuedDate
,validDate
,gender
,STATE
,district
,accountNo
,goodsType
,goodsOrigin
,portOfShipment
)
SELECT @id
,@receiverId
,''
,@rfName
,@rmName
,@rlName
,@rlName2
,@receiverName
,@pCountry
,@rAdd1
,@rPostCode
,@rcity
,@rEmail
,@rTel
,@rTel
,@rMobile
,@rNaCountry
,@rdob
,NULL
,@rIdType
,@rIdNo
,NULL
,NULL
,@rIdValid
,@rgender
,@pLocationText
,@pSubLocationText
,@raccountNo
,@goodsType
,@goodsOrigin
,@portOfShipment
-- UPDATE FOR CUSTOMER LOYALTY
EXEC PROC_Customer_LoyaltyV2 @flag = 'update-v2'
,@customerId = @senderId
,@createdFrom = 'I'
,@tranId = @id
,@createdBy = @user
,@controlNo = @controlNo
,@isManualSc = @isManualSc
,@referralCode = @introducer
,@serviceCharge = @iServiceCharge
IF (@iServiceCharge <> @calculatedOriginalSc)
AND ISNULL(@isManualSc, 'Y') = 'Y'
BEGIN
UPDATE remitTranTemp
SET isScMaunal = 1
,originalSC = @calculatedOriginalSc
,company = 'M'
WHERE id = @id
END
DECLARE @SOURCE INT
,@PURPOSEID INT
,@RELATION INT
,@OCCUPATIONID INT
SELECT @SOURCE = valueId
FROM STATICDATAVALUE(NOLOCK)
WHERE detailTitle = @sourceOfFund
AND typeID = '3900'
SELECT @PURPOSEID = valueId
FROM STATICDATAVALUE(NOLOCK)
WHERE detailTitle = @purpose
AND typeID = '3800'
SELECT @RELATION = valueId
FROM STATICDATAVALUE(NOLOCK)
WHERE detailTitle = @relationship
AND typeID = '2100'
EXEC PROC_CUSTOMERMODIFYLOG @flag = 'i-fromSendPage'
,@user = @user
,@customerId = @senderId
,@mobileNumber = @sMobile
,@monthlyIncome = @salaryRange
,@email = @sEmail
,@placeofissue = @sCustIdIssuedCountry
,@occupation = @occupation
,@sourceOfFund = @SOURCE
UPDATE CUSTOMERMASTER
SET mobile = ISNULL(@sMobile, mobile)
,monthlyincome = ISNULL(@salaryRange, monthlyincome)
,email = ISNULL(@sEmail, email)
,placeofissue = ISNULL(@sCustIdIssuedCountry, placeofissue)
,occupation = ISNULL(@occupation, occupation)
,sourceOfFund = ISNULL(@SOURCE, sourceOfFund)
WHERE CUSTOMERID = @senderId
EXEC PROC_RECEIVERMODIFYLOGS @flag = 'i-fromSendPage'
,@address = @rAdd1
,@email = @rEmail
,@mobile = @rMobile
,@receiverId = @receiverId
,@customerId = @senderId
UPDATE RECEIVERINFORMATION
SET address = ISNULL(@rAdd1, address)
,mobile = ISNULL(@rMobile, mobile)
,email = ISNULL(@rEmail, email)
,purposeOfRemit = ISNULL(@PURPOSEID, purposeOfRemit)
,relationship = ISNULL(@RELATION, relationship)
,bankBranchName = ISNULL(@pBankBranchName, bankBranchName)
WHERE receiverId = @receiverId
IF @collMode = 'Cash Collect'
BEGIN
SELECT @userId = userId
FROM APPLICATIONUSERS
WHERE USERNAME = @USER
EXEC PROC_UPDATE_AVAILABALE_BALANCE @FLAG = 'SEND'
,@S_AGENT = @sAgent
,@S_USER = @userId
,@C_AMT = @cAmt
,@REFERRAL_CODE = @introducer
,@ONBEHALF = @isOnbehalf
END
ELSE
BEGIN
EXEC PROC_INSERT_JP_DEPOSIT_TXN_LOG @FLAG = 'I'
,@TRANID = @id
,@CUSTOMERID = @senderId
,@CAMT = @cAmt
END
DECLARE @PARTICULARS VARCHAR(200) = 'Send TXN: ' + @controlNo
EXEC proc_customerTxnHistory @controlNo = @controlNoEncrypted
DECLARE @XMLDATA XML;
IF ISNULL(@isAdditionalCDDI, 'N') = 'Y'
BEGIN
SET @XMLDATA = CONVERT(XML, REPLACE(@additionalCDDIXml, '&', '&amp;'), 2)
SELECT ID = p.value('@id', 'varchar(150)')
,ANSWER = p.value('@answer', 'varchar(500)')
INTO #TRANSACTION_COMPLIANCE_CDDI
FROM @XMLDATA.nodes('/root/row') AS tmp(p);
INSERT INTO TBL_TXN_COMPLIANCE_CDDI
SELECT @id
,ID
,ANSWER
FROM #TRANSACTION_COMPLIANCE_CDDI
END
----UPDATE BRANCH/AGENT CREDIT LIMIT
--EXEC Proc_AgentBalanceUpdate_INT @flag = 's',@tAmt = @cAmt ,@settlingAgent = @settlingAgent
--10. Compliance----------------------------------------------------------------------------------------------------
IF EXISTS (
SELECT 'X'
FROM remitTranComplianceTemp WITH (NOLOCK)
WHERE agentRefId = @agentRefId
)
BEGIN
INSERT INTO remitTranCompliance (
TranId
,csDetailTranId
,matchTranId
,reason
)
SELECT @id
,csDetailTranId
,matchTranId
,reason
FROM remitTranComplianceTemp WITH (NOLOCK)
WHERE agentRefId = @agentRefId
SET @compFinalRes = 'C'
UPDATE ComplianceLog
SET tranId = @id
WHERE agentRefId = @agentRefId
END
IF EXISTS (
SELECT 'X'
FROM @remitTranTemp
WHERE dot BETWEEN CONVERT(VARCHAR, GETDATE(), 101)
AND CONVERT(VARCHAR, GETDATE(), 101) + ' 23:59:59'
AND cAmt = @cAmt
AND (
receiverName = @receiverName
OR (
ISNULL(receiverIdType, '0') = @rIdType
AND ISNULL(receiverIdNumber, '0') = @rIdNo
)
)
)
BEGIN
INSERT INTO remitTranCompliance (
TranId
,csDetailTranId
,matchTranId
,reason
)
SELECT @id
,0
,tranid
,'Suspected duplicate transaction'
FROM @remitTranTemp
WHERE cAmt = @cAmt
AND (
receiverName = @receiverName
OR (
ISNULL(receiverIdType, '0') = @rIdType
AND ISNULL(receiverIdNumber, '0') = @rIdNo
)
)
SET @compFinalRes = 'C'
END
ELSE
BEGIN
IF EXISTS (
SELECT 'X'
FROM @moneySendTemp
WHERE paidAmt = @cAmt
AND (
receiverName = @receiverName
OR (
ISNULL(receiverIdDescription, '0') = @rIdType
AND ISNULL(receiverIdDetail, '0') = @rIdNo
)
)
)
BEGIN
INSERT INTO remitTranCompliance (
TranId
,csDetailTranId
,matchTranId
,reason
)
SELECT @id
,0
,tranNo
,'Suspected duplicate transaction from Inficare system'
FROM @moneySendTemp
WHERE paidAmt = @cAmt
AND (
receiverName = @receiverName
OR (
ISNULL(receiverIdDescription, '0') = @rIdType
AND ISNULL(receiverIdDetail, '0') = @rIdNo
)
)
SET @compFinalRes = 'C'
END
END
IF (
ISNULL(@compFinalRes, '') <> ''
OR ISNULL(@ofacRes, '') <> ''
)
BEGIN
CREATE TABLE #temp (
sno INT
,rmrks NVARCHAR(MAX)
)
SELECT @checkNameBy = TRACK_BY
FROM OFACSETTING(NOLOCK)
IF ISNULL(@checkNameBy, 'OFAC') = 'OFAC'
BEGIN
INSERT INTO #temp (
sno
,rmrks
)
EXEC proc_sendPageLoadData @flag = 'ofac'
,@user = @user
,@blackListIds = @ofacRes
END
ELSE
BEGIN
INSERT INTO #temp (
sno
,rmrks
)
EXEC proc_sendPageLoadData @flag = 'ofac'
,@user = @user
,@blackListIds = @ofacRes
,@TRACK_BY = 'DJ'
END
DECLARE @ofacResult NVARCHAR(MAX)
SET @ofacResult = (
SELECT *
FROM #temp
FOR JSON AUTO
)
IF (
@ofacRes <> ''
AND ISNULL(@compFinalRes, '') = ''
)
BEGIN
INSERT remitTranOfac (
TranId
,blackListId
,reason
,flag
,TRACK_BY
,ofacDetail
)
SELECT @id
,@ofacRes
,@ofacReason
,CASE
WHEN @trackBy = 'OFAC'
THEN dbo.FNAGetOFAC_Flag(@ofacRes)
ELSE 'D'
END
,@checkNameBy
,@ofacResult
UPDATE remitTranTemp
SET tranStatus = 'OFAC Hold'
WHERE controlNo = @controlNoEncrypted
END
ELSE IF (
@compFinalRes <> ''
AND ISNULL(@ofacRes, '') = ''
)
BEGIN
UPDATE remitTranTemp
SET tranStatus = 'Compliance Hold'
WHERE controlNo = @controlNoEncrypted
END
ELSE IF (
ISNULL(@compFinalRes, '') <> ''
AND ISNULL(@ofacRes, '') <> ''
)
BEGIN
INSERT remitTranOfac (
TranId
,blackListId
,reason
,flag
,TRACK_BY
,ofacDetail
)
SELECT @id
,@ofacRes
,@ofacReason
,CASE
WHEN @trackBy = 'OFAC'
THEN dbo.FNAGetOFAC_Flag(@ofacRes)
ELSE 'D'
END
,@checkNameBy
,@ofacResult
UPDATE remitTranTemp
SET tranStatus = 'OFAC/Compliance Hold'
WHERE controlNo = @controlNoEncrypted
END
END
IF @LIMITERRORCODE <> 0
AND @RULETYPE = 'H'
AND @COLLMODE = 'CASH COLLECT'
BEGIN
UPDATE remitTranTemp
SET tranStatus = CASE
WHEN tranStatus = 'Compliance Hold'
THEN 'Cash Limit/Compliance Hold'
WHEN tranStatus = 'OFAC Hold'
THEN 'Cash Limit/OFAC Hold'
WHEN tranStatus = 'OFAC/Compliance Hold'
THEN 'Cash Limit/OFAC/Compliance Hold'
ELSE 'Cash Limit Hold'
END
WHERE controlNo = @controlNoEncrypted
INSERT INTO dbo.remitTranCashLimitHold (
tranId
,approvedRemarks
,approvedBy
,approvedDate
,reason
)
VALUES (
@id
,-- tranId - bigint
NULL
,-- approvedRemarks - varchar(150)
NULL
,-- approvedBy - varchar(80)
NULL
,-- approvedDate - datetime
NULL -- reason - varchar(500)
)
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
IF (
@complianceRes = 'C'
OR @ofacRes <> ''
)
BEGIN
SELECT 101 errorCode
,'Transaction under compliance' msg
,@controlNo id
,@id extra
RETURN
END
SELECT 100 errorCode
,'Transaction has been sent successfully and is waiting for approval' msg
,@controlNo id
,@id extra
END
ELSE IF @flag = 'success'
BEGIN
UPDATE RT
SET RT.controlno = CASE
WHEN AB.BANK_CODE1 IN( 'IMEPAY','KHALTI')
AND RT.paymentMethod = 'MOBILE WALLET'
THEN dbo.FNAEncryptString(@controlNo)
ELSE dbo.FNAEncryptString(ISNULL(@tpRefNo, @controlNo))
END
,RT.controlNo2 = CASE
WHEN AB.BANK_CODE1 IN( 'IMEPAY','KHALTI')
AND RT.paymentMethod = 'MOBILE WALLET'
THEN dbo.FNAEncryptString(ISNULL(@tpRefNo, @controlNo))
ELSE dbo.FNAEncryptString(@controlNo)
END
,RT.uploadLogId = @tpTranId
,RT.sharingValue = pcurrCostRate
FROM remitTranTemp RT(NOLOCK)
LEFT JOIN API_BANK_LIST AB(NOLOCK) ON AB.BANK_ID = RT.PBANK
WHERE controlno = dbo.FNAEncryptString(@controlNo)
--UPDATE remitTranTemp
--SET controlno = dbo.FNAEncryptString(ISNULL(@tpRefNo, @controlNo))
-- ,controlNo2 = dbo.FNAEncryptString(@controlNo)
-- ,uploadLogId = @tpTranId
-- ,sharingValue = pcurrCostRate
--,pcurrCostRate = case when @tpExRate is not null then @tpExRate else pcurrCostRate end
IF EXISTS (
SELECT 'X'
FROM remitTranTemp RT(NOLOCK)
INNER JOIN API_BANK_LIST AB(NOLOCK) ON AB.BANK_ID = RT.PBANK
WHERE controlno = dbo.FNAEncryptString(@controlNo)
AND AB.BANK_CODE1 = 'IMEPAY'
AND RT.paymentMethod = 'MOBILE WALLET'
)
BEGIN
SET @tpRefNo = @controlNo
END
ELSE
BEGIN
SET @tpRefNo = ISNULL(@tpRefNo, @controlNo)
END
EXEC [proc_errorHandler] 0
,'Transaction has been sent successfully'
,@tpRefNo
RETURN
END
ELSE IF @flag = 'revertTxn'
BEGIN
SELECT @id = id
FROM remitTranTemp(NOLOCK)
WHERE controlno = dbo.FNAEncryptString(@controlNo)
DELETE
FROM TBL_BANK_DEPOSIT_TXN_MAPPING
WHERE HOLD_TRAN_ID = @ID
EXEC proc_ApproveHoldedTXN @flag = 'reject'
,@user = @user
,@id = @id
,@isTxnRealtime = 1
,@isSystemReject = 1
END
ELSE IF @flag = 'pagent'
BEGIN
SELECT routingCode
FROM agentMaster(NOLOCK)
WHERE agentId = @pAgent
END
ELSE IF @flag = 'ReProcess'
BEGIN
SELECT @sNaCountry = S.nativeCountry
,@pCountry = T.pCountry
,@pBankBranch = T.pBankBranch
,@pBank = T.pBank
,@sIdType = S.idType
,@rIdType = R.idType
FROM remitTran T(NOLOCK)
INNER JOIN tranSenders S(NOLOCK) ON S.tranId = T.id
INNER JOIN tranReceivers R(NOLOCK) ON R.tranId = T.id
WHERE T.controlNo = dbo.FNAEncryptString(@controlNo)
--****Data For TP****----
SELECT @sederNationalityCode = countryCode
FROM countryMaster(NOLOCK)
WHERE countryName = @sNaCountry
SELECT @receiverNationalityCode = countryCode
FROM countryMaster(NOLOCK)
WHERE countryName = @pCountry
SELECT @rBankBranchCode = agentCode
FROM agentmaster(NOLOCK)
WHERE agentId = @pBankBranch
SELECT @rBankCode = agentCode
,@pAgentCode = routingCode
FROM agentmaster(NOLOCK)
WHERE agentId = @pBank
SELECT errorCode = 0
,collTranId = @controlNo
,payoutAgentCd = @pAgentCode
,payoutAmount = pAmt
,payoutCurrency = payoutCurr
,payoutMode = CASE
WHEN paymentMethod = 'CASH PAYMENT'
THEN 2
ELSE 1
END
,senderFirstName = 'Tamang'
,senderMiddleName = ''
,senderLastName = 'santosh'
,senderAddress = 'hwaseong si'
,senderNationalityCd = @sederNationalityCode
,senderIdCardTypeCd = CASE @sIdType
WHEN 'Alien Registration Card'
THEN '21'
WHEN 'National ID'
THEN '9'
END
,senderIdCardTypeNo = s.idNumber
,senderMonthlySalary = ''
,receiverFirstName = 'SUMON'
,receiverMiddleName = ''
,receiverLastName = 'GHOSH'
,receiverAddress = r.address
,rIdTypeCode = CASE @sIdType
WHEN 'National ID'
THEN '9'
ELSE '21'
END
,senderPhoneNo = '821046842625'
,receiverPhoneNo = '0091970606253'
,receiverNationalityCd = @receiverNationalityCode
,receiverBankCd = @rBankCode
,receiverBankBranchCd = @rBankBranchCode
,receiverBankAcNo = t.accountNo
,receiverIdCardTypeNo = ''
,receiverIdCardTypeCd = ''
,sourceOfFundCd = '12'
,sourceOfFundText = t.sourceOfFund --Others, so we can send our source of fund text.
,reasonOfRemittanceCd = '17'
,reasonOfRemittanceText = t.purposeOfRemit
,senderOccupationCd = '99'
,remitType = 'P2P'
FROM remitTran T(NOLOCK)
INNER JOIN tranSenders S(NOLOCK) ON S.tranId = T.id
INNER JOIN tranReceivers R(NOLOCK) ON R.tranId = T.id
WHERE T.controlNo = dbo.FNAEncryptString(@controlNo)
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