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
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, '&', '&'), 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
|