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.
3982 lines
204 KiB
3982 lines
204 KiB
USE [FastMoneyPro_Remit]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_sendIRH] Script Date: 2/6/2024 5:26:15 PM ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
ALTER PROC [dbo].[proc_sendIRH] (
|
|
@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
|
|
,@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
|
|
,@tpExRate FLOAT = NULL
|
|
,@nameAsPerBank VARCHAR(150) = NULL
|
|
,@calculatedOriginalSc MONEY = NULL
|
|
,@paymentOption VARCHAR(100) = NULL
|
|
,@sitereference VARCHAR(200) = NULL
|
|
,@rewardAmt 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
|
|
--July 29 --> set pBankName from apibanklist
|
|
--Aug 05 --JME-567 ->add col 'receiverNameAlt' changes to show BENEFICIARY NAME AS PER BANK
|
|
--SEP 09 --#127 Donga Commission Update for non 24*7
|
|
--SEP 21 -->#134 -> Allow edit option of address in Town Area
|
|
--Sep 22 -> #109 ->Change the logic to choose highest Rate in case of Nepal
|
|
--Sep 23 ->#178 -> Show only Roman in Remittance Statement
|
|
--#334 : OFAC screening changes.
|
|
--#9776 - Service Charge calcaulation for Validation , @flag = 'v'
|
|
-- # 19238 change in @flag = 'exRate' to return exrate on the basis of payment option
|
|
-- 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)
|
|
DECLARE @xAmt MONEY
|
|
,@baseCurrency VARCHAR(3)
|
|
,@limitBal MONEY
|
|
,@sendingCustType INT
|
|
,@receivingCustType INT
|
|
,@msg VARCHAR(200)
|
|
,@exRateCalByPartner BIT
|
|
,@tranCount INT
|
|
,@schemeCount INT
|
|
,@isEligible CHAR(1) = 'N'
|
|
,@schemeCodeId INT
|
|
,@isFreeSc CHAR(1) = 'N'
|
|
,@calcOriginalSc MONEY = 0 -- added for teller quota
|
|
|
|
|
|
--SET @manualSc='0'
|
|
--SET @isManualSc='N';
|
|
|
|
IF @pBankBranch = 'NA'
|
|
SET @pBankBranch = NULL
|
|
|
|
IF ISNULL(@relationship, '') <> 'other (please specify)'
|
|
SET @relationOther = NULL
|
|
|
|
IF ISNULL(@purpose, '') <> 'other (please specify)'
|
|
SET @purposeOther = NULL
|
|
|
|
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
|
|
)
|
|
|
|
IF ISNULL(@sBranch, 0) = 0
|
|
SELECT @sBranch = agentId
|
|
FROM applicationUsers WITH (NOLOCK)
|
|
WHERE userName = @user
|
|
|
|
DECLARE @customerTotalAmt2 MONEY = 0
|
|
DECLARE @errorCode CHAR(1) = 0
|
|
DECLARE @tellerBalance MONEY
|
|
,@tellerLimit MONEY
|
|
,@sendPerTransaction MONEY
|
|
,@vaultBalance MONEY
|
|
,@vaultLimit MONEY
|
|
|
|
SELECT @sfName = LTRIM(RTRIM(@sfName))
|
|
,@smName = LTRIM(RTRIM(@smName))
|
|
,@slName = LTRIM(RTRIM(@slName))
|
|
,@slName2 = LTRIM(RTRIM(@slName2))
|
|
,@rfName = LTRIM(RTRIM(@rfName))
|
|
,@rmName = LTRIM(RTRIM(@rmName))
|
|
,@rlName = LTRIM(RTRIM(@rlName))
|
|
,@rlName2 = LTRIM(RTRIM(@rlName2))
|
|
|
|
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
|
|
|
|
--CHECK IF SC IS ALLOWED TO EDIT BY USER OR NOT
|
|
DECLARE @HAS_RIGHT_EDIT_SC CHAR(1) = 'N'
|
|
|
|
SELECT @HAS_RIGHT_EDIT_SC = dbo.FNAHasRight(@user, '40101440')
|
|
|
|
SET @raccountNo = UPPER(REPLACE(@raccountNo, ' ', ''))
|
|
|
|
IF ISNULL(@isManualSc, 'N') = 'Y'
|
|
AND @HAS_RIGHT_EDIT_SC = 'N'
|
|
BEGIN
|
|
SELECT '1' ErrCode
|
|
,'Invalid attempt to calculate SC manually!' Msg
|
|
,NULL id
|
|
|
|
RETURN
|
|
END
|
|
|
|
IF @flag = 'v-referral'
|
|
BEGIN
|
|
DECLARE @IS_ACTIVE BIT
|
|
|
|
SELECT @IS_ACTIVE = IS_ACTIVE
|
|
FROM REFERRAL_AGENT_WISE(NOLOCK)
|
|
WHERE REFERRAL_CODE = @introducer
|
|
|
|
IF @IS_ACTIVE IS NULL
|
|
BEGIN
|
|
SELECT '1' ErrCode
|
|
,'Invalid referral code!' Msg
|
|
,NULL id
|
|
|
|
RETURN
|
|
END
|
|
|
|
IF @IS_ACTIVE = 0
|
|
BEGIN
|
|
SELECT '1' ErrCode
|
|
,'Disabled referral passed!' Msg
|
|
,NULL id
|
|
|
|
RETURN
|
|
END
|
|
|
|
SELECT '0' ErrCode
|
|
,'Success!' Msg
|
|
,NULL id
|
|
|
|
RETURN
|
|
END
|
|
|
|
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 = 233
|
|
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)
|
|
END
|
|
|
|
SET @sAgentCommCurrency = 'JPY'
|
|
|
|
IF @flag = 'acBal' --Get Available Account Balance
|
|
BEGIN
|
|
SELECT @pCountryId = am.agentCountryId
|
|
FROM applicationUsers au WITH (NOLOCK)
|
|
INNER JOIN agentMaster am WITH (NOLOCK) ON au.agentId = am.agentId
|
|
WHERE userName = @user
|
|
|
|
SELECT TOP 1 @collCurr = CM.currencyCode
|
|
FROM currencyMaster CM WITH (NOLOCK)
|
|
INNER JOIN countryCurrency CC WITH (NOLOCK) ON CM.currencyId = CC.currencyId
|
|
WHERE CC.countryId = @pCountryId
|
|
AND ISNULL(cc.isDeleted, 'N') = 'N'
|
|
AND ISNULL(CC.isDefault, 'N') = 'Y'
|
|
|
|
-->> checking per day country send limit
|
|
SELECT @limitBal = D.amount
|
|
FROM csMaster M WITH (NOLOCK)
|
|
INNER JOIN csDetail D WITH (NOLOCK) ON M.csMasterId = D.csMasterId --csDetailId CHANGED BY ARJUN
|
|
WHERE sCountry = @pCountryId
|
|
AND ISNULL(M.isActive, 'Y') = 'Y'
|
|
AND ISNULL(D.isActive, 'Y') = 'Y'
|
|
|
|
IF @agentId IS NULL
|
|
SELECT @sBranch = agentId
|
|
FROM applicationUsers WITH (NOLOCK)
|
|
WHERE userName = @user
|
|
ELSE
|
|
SELECT @sBranch = @agentId
|
|
|
|
SELECT @sAgent = parentId
|
|
,@agentType = agentType
|
|
FROM agentMaster WITH (NOLOCK)
|
|
WHERE agentId = @sBranch
|
|
|
|
IF @agentType = 2903
|
|
SET @sAgent = @sBranch
|
|
|
|
SELECT @sSuperAgent = parentId
|
|
FROM agentMaster WITH (NOLOCK)
|
|
WHERE agentId = @sAgent
|
|
|
|
SELECT @settlingAgent = agentId
|
|
FROM agentMaster
|
|
WHERE agentId = @sBranch
|
|
AND isSettlingAgent = 'Y'
|
|
|
|
IF @settlingAgent IS NULL
|
|
SELECT @settlingAgent = agentId
|
|
FROM agentMaster WITH (NOLOCK)
|
|
WHERE agentId = @sAgent
|
|
AND isSettlingAgent = 'Y'
|
|
|
|
IF @settlingAgent IS NULL
|
|
SELECT @settlingAgent = agentId
|
|
FROM agentMaster WITH (NOLOCK)
|
|
WHERE agentId = @sSuperAgent
|
|
AND isSettlingAgent = 'Y'
|
|
|
|
DECLARE @limit MONEY
|
|
,@limitCurr VARCHAR(3)
|
|
,@cRateAgent FLOAT
|
|
|
|
SELECT @limit = ISNULL(dbo.FNAGetLimitBalIRH(@settlingAgent), 0)
|
|
|
|
SELECT @limitCurr = currency
|
|
FROM creditLimitInt WITH (NOLOCK)
|
|
WHERE agentId = @settlingAgent
|
|
AND ISNULL(isDeleted, 'N') = 'N'
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
|
|
SELECT availableBal = @limit
|
|
,balCurrency = @collCurr
|
|
,limExpiry = ISNULL(CONVERT(VARCHAR, expiryDate, 101), 'N/A')
|
|
,sCountryLimit = ISNULL(@limitBal, 0)
|
|
,sCurr = @collCurr
|
|
,tellerBanalce = 0
|
|
,txnPerDayCustomerLimit = dbo.FNAGetPerDayCustomerLimit(@settlingAgent)
|
|
FROM creditLimitInt cl
|
|
WHERE agentId = @settlingAgent
|
|
END
|
|
|
|
IF @flag = 'acBalByAgentId' --Get Available Account Balance
|
|
BEGIN
|
|
SET @pCountryId = 233;
|
|
|
|
--SELECT
|
|
-- @pCountryId = am.agentCountryId
|
|
--FROM applicationUsers au WITH(NOLOCK)
|
|
--INNER JOIN agentMaster am WITH(NOLOCK) ON au.agentId = am.agentId
|
|
--WHERE userName = @user
|
|
SELECT TOP 1 @collCurr = CM.currencyCode
|
|
FROM currencyMaster CM WITH (NOLOCK)
|
|
INNER JOIN countryCurrency CC WITH (NOLOCK) ON CM.currencyId = CC.currencyId
|
|
WHERE CC.countryId = @pCountryId
|
|
AND ISNULL(cc.isDeleted, 'N') = 'N'
|
|
AND ISNULL(CC.isDefault, 'N') = 'Y'
|
|
|
|
-->> checking per day country send limit
|
|
SELECT @limitBal = D.amount
|
|
FROM csMaster M WITH (NOLOCK)
|
|
INNER JOIN csDetail D WITH (NOLOCK) ON M.csMasterId = D.csMasterId --csDetailId CHANGED BY ARJUN
|
|
WHERE sCountry = @pCountryId
|
|
AND ISNULL(M.isActive, 'Y') = 'Y'
|
|
AND ISNULL(D.isActive, 'Y') = 'Y'
|
|
|
|
--IF @agentId IS NULL
|
|
-- SELECT @sBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
|
|
--ELSE
|
|
-- SELECT @sBranch = @agentId
|
|
SELECT @sAgent = parentId
|
|
,@agentType = agentType
|
|
FROM agentMaster WITH (NOLOCK)
|
|
WHERE agentId = @sBranch
|
|
|
|
IF @agentType = 2903
|
|
SET @sAgent = @sBranch
|
|
|
|
SELECT @sSuperAgent = parentId
|
|
FROM agentMaster WITH (NOLOCK)
|
|
WHERE agentId = @sAgent
|
|
|
|
SELECT @settlingAgent = agentId
|
|
FROM agentMaster
|
|
WHERE agentId = @sBranch
|
|
AND isSettlingAgent = 'Y'
|
|
|
|
IF @settlingAgent IS NULL
|
|
SELECT @settlingAgent = agentId
|
|
FROM agentMaster WITH (NOLOCK)
|
|
WHERE agentId = @sAgent
|
|
AND isSettlingAgent = 'Y'
|
|
|
|
IF @settlingAgent IS NULL
|
|
SELECT @settlingAgent = agentId
|
|
FROM agentMaster WITH (NOLOCK)
|
|
WHERE agentId = @sSuperAgent
|
|
AND isSettlingAgent = 'Y'
|
|
|
|
DECLARE @limitAmt MONEY
|
|
,@limitCurrency VARCHAR(3)
|
|
,@cRateAgentAmt FLOAT
|
|
,@userId INT
|
|
,@user1 VARCHAR(50) = NULL
|
|
,@holdType VARCHAR(10) = NULL
|
|
|
|
IF EXISTS (
|
|
SELECT 1
|
|
FROM dbo.applicationUsers
|
|
WHERE agentId = @sBranch
|
|
AND userName = @user
|
|
)
|
|
BEGIN
|
|
SELECT @user1 = @user
|
|
,@sBranch = NULL
|
|
END
|
|
|
|
--EXEC proc_sendIRH @flag = 'acBalByAgentId', @user = 'anupam', @sBranch = '394393'
|
|
--EXEC proc_sendIRH @flag = 'acBalByAgentId', @user = 'anupam', @sBranch = '394392'
|
|
SELECT @limitAmt = availableLimit
|
|
,@holdType = CASE
|
|
WHEN ruleType = 'H'
|
|
THEN 'Hold'
|
|
ELSE 'Block'
|
|
END
|
|
FROM DBO.FNAGetUserCashLimitDetails(@user1, @sBranch)
|
|
|
|
--SELECT @limitAmt = ISNULL(dbo.proc_checkUserAvailableBalance(@settlingAgent), 0)
|
|
SELECT @limitCurrency = 'JPY' -- FROM creditLimitInt WITH(NOLOCK)
|
|
--WHERE agentId = @settlingAgent AND ISNULL(isDeleted, 'N') = 'N' AND ISNULL(isActive, 'N') = 'Y'
|
|
|
|
SELECT availableBal = @limitAmt
|
|
,balCurrency = @collCurr
|
|
,limExpiry = 'N/A'
|
|
,sCountryLimit = ISNULL(@limitBal, 0)
|
|
,sCurr = @collCurr
|
|
,tellerBanalce = 0
|
|
,txnPerDayCustomerLimit = dbo.FNAGetPerDayCustomerLimit(@settlingAgent)
|
|
,holdType = @holdType
|
|
END
|
|
|
|
IF @flag = 'getReferralBal'
|
|
BEGIN
|
|
SELECT totalLimit
|
|
,availableLimit
|
|
FROM DBO.FNAGetBranchCashLimitDetails(@referralCode, 'R')
|
|
END
|
|
ELSE IF @flag = 'v' --Validation
|
|
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 @occupation IS NULL
|
|
--BEGIN
|
|
-- EXEC proc_errorHandler 1, 'Occupation is missing', NULL
|
|
-- RETURN
|
|
--END
|
|
--*****Payout Agent*****
|
|
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
|
|
|
|
SELECT @receivingCustType = customerType
|
|
FROM dbo.customerMaster WITH (NOLOCK)
|
|
WHERE customerId = @benId
|
|
|
|
--4. Exchange Rate Checking
|
|
--SET @pAgent=1006
|
|
--SET @pSuperAgent=1005
|
|
--SET @pBranch=1007
|
|
IF @pCountryId = 151
|
|
AND @deliveryMethodId = 1
|
|
BEGIN
|
|
SELECT AgentId
|
|
INTO #AgentListValidate
|
|
FROM agentMaster(NOLOCK)
|
|
WHERE extCode = 'NP ANYWHERE'
|
|
|
|
SELECT @exRate = customerRate
|
|
,@sCurrCostRate = sCurrCostRate
|
|
,@sCurrHoMargin = sCurrHoMargin
|
|
,@sCurrAgentMargin = sCurrAgentMargin
|
|
,@pCurrCostRate = pCurrCostRate
|
|
,@pCurrHoMargin = pCurrHoMargin
|
|
,@pCurrAgentMargin = pCurrAgentMargin
|
|
FROM (
|
|
SELECT ROW_NUMBER() OVER (
|
|
ORDER BY CUSTOMERRATE DESC
|
|
) ROW_NUM
|
|
,customerRate
|
|
,sCurrCostRate
|
|
,sCurrHoMargin
|
|
,sCurrAgentMargin
|
|
,pCurrCostRate
|
|
,pCurrHoMargin
|
|
,pCurrAgentMargin
|
|
,agentCrossSettRate
|
|
,treasuryTolerance
|
|
,customerPremium
|
|
,sharingValue
|
|
,sharingType
|
|
FROM #AgentListValidate A
|
|
CROSS APPLY dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, AgentId, @pCurr, @deliveryMethodId)
|
|
) X
|
|
WHERE X.ROW_NUM = 1
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @exRate = customerRate
|
|
,@sCurrCostRate = sCurrCostRate
|
|
,@sCurrHoMargin = sCurrHoMargin
|
|
,@sCurrAgentMargin = sCurrAgentMargin
|
|
,@pCurrCostRate = pCurrCostRate
|
|
,@pCurrHoMargin = pCurrHoMargin
|
|
,@pCurrAgentMargin = pCurrAgentMargin
|
|
FROM dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethodId)
|
|
END
|
|
|
|
IF @exRate IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 1
|
|
,'Transaction cannot be proceed. Exchange Rate not defined'
|
|
,NULL
|
|
|
|
RETURN
|
|
END
|
|
|
|
--New code added, referral code add #arjun
|
|
--EXEC PROC_Customer_LoyaltyV2 @flag = 'check-eligible-v2'
|
|
-- ,@isEligible = @isEligible OUT
|
|
-- ,@referralCode = @introducer
|
|
-- ,@tranCount = @trancount OUT
|
|
-- ,@schemeCount = @schemeCount OUT
|
|
-- ,@customerId = @senderId
|
|
-- ,@createdFrom = 'I'
|
|
|
|
--End of Exchange Rate Checking
|
|
--5. Service Charge Checking
|
|
DECLARE @tAmtSC MONEY
|
|
--IF EXISTS (
|
|
-- SELECT TOP 1 1
|
|
-- FROM REFERRAL_AGENT_WISE
|
|
-- WHERE REFERRAL_TYPE_CODE IN (
|
|
-- 'RB'
|
|
-- ,'RC'
|
|
-- )
|
|
-- AND REFERRAL_CODE = @introducer
|
|
-- )
|
|
--BEGIN
|
|
-- EXEC PROC_Customer_Loyalty @flag = 'check-eligible'
|
|
-- ,@isEligible = @isEligible OUT
|
|
--END
|
|
--EXEC proc_Customer_Loyalty @flag = 'get-tranCount'
|
|
-- ,@tranCount = @trancount OUT
|
|
-- ,@customerId = @senderId
|
|
|
|
--SELECT TOP 1 @schemeCount = txnCount
|
|
--FROM schemeSetup(NOLOCK)
|
|
--ORDER BY createdDate DESC
|
|
|
|
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)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @iServiceCharge = ISNULL(@manualSc, 0)
|
|
print @cAmt
|
|
print @tAmt
|
|
print @serviceCharge
|
|
print @rewardAmt
|
|
|
|
IF @cAmt <> @tAmt + @serviceCharge - ISNULL(@rewardAmt,0)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1
|
|
,'1Please 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 - ISNULL(@rewardAmt,0)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1
|
|
,'2Please 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)
|
|
|
|
PRINT @isManualSc;
|
|
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. Verify'
|
|
,NULL
|
|
|
|
RETURN
|
|
END
|
|
|
|
IF @schemeCode IS NOT NULL
|
|
BEGIN
|
|
DECLARE @scValue MONEY
|
|
,@scAction CHAR(2)
|
|
,@scOffer MONEY
|
|
,@exRateOffer FLOAT
|
|
,@scDiscount MONEY
|
|
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
|
|
PRINT '@iServiceCharge'
|
|
PRINT @iServiceCharge;
|
|
|
|
SET @iTAmt = @cAmt - @iServiceCharge + ISNULL( @rewardAmt,0)
|
|
|
|
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)
|
|
PRINT '@iTAmt'
|
|
PRINT @iTAmt;
|
|
|
|
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
|
|
--print 'a'
|
|
--print @iPAmt
|
|
--print @pAmt
|
|
-- 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)
|
|
,@matchPercentage INT
|
|
|
|
SELECT @matchPercentage = MATCH_PERCENTAGE
|
|
FROM OFACSETTING
|
|
|
|
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
|
|
)
|
|
ORDER BY ISNULL(IS_D0C_REQUIRED, 0) DESC
|
|
--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'
|
|
,@complianceChecked BIT = 0
|
|
|
|
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 = '779' + LEFT(CAST(ABS(CHECKSUM(NEWID())) AS VARCHAR(10)) + '0000000000', 9)
|
|
|
|
IF EXISTS (
|
|
SELECT 'X'
|
|
FROM controlNoList WITH (NOLOCK)
|
|
WHERE controlNo = @controlNo
|
|
)
|
|
BEGIN
|
|
SET @controlNo = '779' + LEFT(CAST(ABS(CHECKSUM(NEWID())) AS VARCHAR(10)) + '0000000000', 9)
|
|
|
|
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
|
|
|
|
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-------------------------------------------------------------------------------------------------------------
|
|
--Get Service Charge----------------------------------------------------------------------------------------------------------------------
|
|
DECLARE @originalSC MONEY = 0
|
|
|
|
SET @sCountryId = 233
|
|
|
|
--New code added, referral code add #arjun
|
|
--EXEC PROC_Customer_LoyaltyV2 @flag = 'check-eligible-v2'
|
|
-- ,@isEligible = @isEligible OUT
|
|
-- ,@referralCode = @introducer
|
|
-- ,@tranCount = @trancount OUT
|
|
-- ,@schemeCount = @schemeCount OUT
|
|
-- ,@customerId = @senderId
|
|
-- ,@createdFrom = 'I'
|
|
|
|
-- loyalty free sc
|
|
--IF EXISTS (
|
|
-- SELECT TOP 1 1
|
|
-- FROM REFERRAL_AGENT_WISE
|
|
-- WHERE REFERRAL_TYPE_CODE IN (
|
|
-- 'RB'
|
|
-- ,'RC'
|
|
-- )
|
|
-- AND REFERRAL_CODE = @introducer
|
|
-- )
|
|
--BEGIN
|
|
-- EXEC PROC_Customer_Loyalty @flag = 'check-eligible'
|
|
-- ,@isEligible = @isEligible OUT
|
|
--END
|
|
|
|
--EXEC proc_Customer_Loyalty @flag = 'get-tranCount'
|
|
-- ,@tranCount = @trancount OUT
|
|
-- ,@customerId = @senderId
|
|
|
|
--SELECT TOP 1 @schemeCount = txnCount
|
|
--FROM schemeSetup(NOLOCK)
|
|
--ORDER BY createdDate DESC
|
|
|
|
PRINT @isManualSc
|
|
PRINT '@isManualSc'
|
|
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 - ISNULL(@rewardAmt,0)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1
|
|
,'3Please 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 @tAmt = CEILING(@pAmt / (@exRate + ISNULL(@exRateOffer, 0))) + ISNULL(@rewardAmt,0)
|
|
|
|
SET @tAmt = (@pAmt / (@exRate + ISNULL(@exRateOffer, 0))) + ISNULL(@rewardAmt,0)
|
|
SET @tAmt =Cast(Round(@tAmt,2,1) as decimal(18,2));
|
|
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, @tAmt, @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)
|
|
|
|
PRINT '@cAmt'
|
|
PRINT @cAmt
|
|
PRINT '@tAmt'
|
|
PRINT @tAmt
|
|
PRINT '@iServiceCharge'
|
|
|
|
PRINT @iServiceCharge
|
|
IF @cAmt <> @tAmt + @iServiceCharge -ISNULL( @rewardAmt,0)
|
|
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
|
|
|
|
-- PRINT @iServiceCharge
|
|
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
|
|
|
|
PRINT 'osc'
|
|
PRINT @originalSc
|
|
PRINT @iServiceCharge
|
|
|
|
IF (@iServiceCharge <> @calculatedOriginalSc)
|
|
AND ISNULL(@isManualSc, 'Y') = 'Y'
|
|
BEGIN
|
|
PRINT 'condition matched'
|
|
|
|
UPDATE APPLICATIONUSERS
|
|
SET freeScCounter = isnull(freeScCounter, 0) + 1
|
|
WHERE username = @user
|
|
END
|
|
|
|
--End-------------------------------------------------------------------------------------------------------------------------------------
|
|
--4. Get Exchange Rate Details------------------------------------------------------------------------------------------------------------------
|
|
IF @pCountryId = 151
|
|
AND @deliveryMethodId = 1
|
|
BEGIN
|
|
SELECT AgentId
|
|
INTO #AgentListSend
|
|
FROM agentMaster(NOLOCK)
|
|
WHERE extCode = 'NP ANYWHERE'
|
|
|
|
SELECT @customerRate = customerRate
|
|
,@sCurrCostRate = sCurrCostRate
|
|
,@sCurrHoMargin = sCurrHoMargin
|
|
,@sCurrAgentMargin = sCurrAgentMargin
|
|
,@pCurrCostRate = pCurrCostRate
|
|
,@pCurrHoMargin = pCurrHoMargin
|
|
,@pCurrAgentMargin = pCurrAgentMargin
|
|
,@agentCrossSettRate = agentCrossSettRate
|
|
,@treasuryTolerance = treasuryTolerance
|
|
,@customerPremium = customerPremium
|
|
,@sharingValue = sharingValue
|
|
,@sharingType = sharingType
|
|
FROM (
|
|
SELECT ROW_NUMBER() OVER (
|
|
ORDER BY CUSTOMERRATE DESC
|
|
) ROW_NUM
|
|
,customerRate
|
|
,sCurrCostRate
|
|
,sCurrHoMargin
|
|
,sCurrAgentMargin
|
|
,pCurrCostRate
|
|
,pCurrHoMargin
|
|
,pCurrAgentMargin
|
|
,agentCrossSettRate
|
|
,treasuryTolerance
|
|
,customerPremium
|
|
,sharingValue
|
|
,sharingType
|
|
FROM #AgentListSend A
|
|
CROSS APPLY dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, AgentId, @pCurr, @deliveryMethodId)
|
|
) X
|
|
WHERE X.ROW_NUM = 1
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @customerRate = customerRate
|
|
,@sCurrCostRate = sCurrCostRate
|
|
,@sCurrHoMargin = sCurrHoMargin
|
|
,@sCurrAgentMargin = sCurrAgentMargin
|
|
,@pCurrCostRate = pCurrCostRate
|
|
,@pCurrHoMargin = pCurrHoMargin
|
|
,@pCurrAgentMargin = pCurrAgentMargin
|
|
,@agentCrossSettRate = agentCrossSettRate
|
|
,@treasuryTolerance = treasuryTolerance
|
|
,@customerPremium = customerPremium
|
|
,@sharingValue = sharingValue
|
|
,@sharingType = sharingType
|
|
FROM dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethodId)
|
|
END
|
|
|
|
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)
|
|
|
|
PRINT '@serviceCharge'
|
|
PRINT @serviceCharge
|
|
SET @iServiceCharge = @iServiceCharge - ISNULL(@iScDiscount, 0)
|
|
|
|
PRINT '@@iServiceCharge'
|
|
PRINT @iServiceCharge
|
|
|
|
PRINT '@rewardAmt'
|
|
PRINT @rewardAmt
|
|
SET @tAmt = @cAmt - @serviceCharge + ISNULL(@rewardAmt,0)
|
|
|
|
SET @iCustomerRate = @customerRate + ISNULL(@schemePremium, 0)
|
|
|
|
IF @pCurr = 'VND'
|
|
BEGIN
|
|
IF @calcBy = 'cAmt'
|
|
BEGIN
|
|
SET @iTAmt = @cAmt - @iServiceCharge + ISNULL(@rewardAmt,0)
|
|
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 + ISNULL(@rewardAmt,0)
|
|
|
|
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
|
|
|
|
SET @iPAmt = @iTAmt * @iCustomerRate
|
|
SET @iPAmt = ROUND(@iPAmt, @currDecimal, 1)
|
|
|
|
--IF @place IS NOT NULL
|
|
-- SET @iPAmt = ROUND(@iPAmt, -@place, 1)
|
|
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
|
|
|
|
SELECT @customerPremium= ISNULL(detaildesc,0) FROM
|
|
staticDataValue where typeID='8109' and detailTitle= @paymentOption;
|
|
|
|
|
|
--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)
|
|
|
|
IF (
|
|
LEN(ISNULL(@nameAsPerBank, '')) < 1
|
|
AND @pCountryId = '203'
|
|
AND @pAgent = '394133'
|
|
AND @deliveryMethodId = '2'
|
|
) -- DONGA Bank Deposit
|
|
BEGIN
|
|
SET @pAgentComm = (@pAmt * 0.17) / 100;
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @pAgentComm = amount
|
|
FROM dbo.FNAGetPayComm(@sAgent, @sCountryId, NULL, NULL, @pCountryId, NULL, @pAgent, @pAgentCommCurrency, @deliveryMethodId, @cAmt, @pAmt, @serviceCharge, @tAmt, NULL)
|
|
END
|
|
|
|
SET @sSettlementRate = @sCurrCostRate + @sCurrHoMargin
|
|
SET @pSettlementRate = @pCurrCostRate - @pCurrHoMargin
|
|
|
|
--IF EXISTS (SELECT 'X' FROM agentMaster(nolock) WHERE agentId = @sAgent AND ISNULL(isSettlingAgent, 'N') = 'Y' AND ISNULL(isIntl, 0) = 1 AND isApiPartner = 0 AND ISNULL(ACTASBRANCH, 'N') = 'N')
|
|
--BEGIN
|
|
-- SELECT @sAgentComm = amount, @sAgentCommCurrency = commissionCurrency FROM dbo.FNAGetSendComm(
|
|
-- @sCountryId, @sSuperAgent, @sAgent, @sBranch,
|
|
-- @pCountryId, @pSuperAgent, @pAgent, @pBankBranch,
|
|
-- @collCurr, @deliveryMethodId, @cAmt, @pAmt, @serviceCharge, NULL, NULL,
|
|
-- @sSettlementRate, @pSettlementRate)
|
|
-- SELECT @sSuperAgentComm = 0, @sSuperAgentCommCurrency = @sAgentCommCurrency
|
|
-- IF (@sAgentComm IS NULL)
|
|
-- BEGIN
|
|
-- EXEC proc_errorHandler 1, 'Transaction cannot be proceed. Commission is not defined', NULL
|
|
-- RETURN
|
|
-- END
|
|
--END
|
|
--ELSE
|
|
--BEGIN
|
|
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
|
|
|
|
DECLARE @ADDRESS_TBL_ROW_ID BIGINT
|
|
|
|
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
|
|
|
|
--IF EXISTS(SELECT * FROM REFERRAL_AGENT_WISE (NOLOCK) WHERE REFERRAL_CODE = @introducer AND AGENT_ID <> 0)
|
|
--BEGIN
|
|
-- SELECT @SAGENT = AM.AGENTID, @SAGENTNAME = AM.AGENTNAME
|
|
-- FROM AGENTMASTER AM(NOLOCK)
|
|
-- INNER JOIN REFERRAL_AGENT_WISE R(NOLOCK) ON R.AGENT_ID = AM.AGENTID
|
|
-- WHERE REFERRAL_CODE = @introducer
|
|
--END
|
|
BEGIN TRANSACTION
|
|
|
|
--ANYWHERE
|
|
--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 (NOLOCK)
|
|
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
|
|
,company
|
|
,receiverNameAlt
|
|
,depositType
|
|
,rewardPoints
|
|
,rewardType
|
|
,isBonusUpdated
|
|
)
|
|
SELECT @controlNoEncrypted
|
|
,@sCurrCostRate
|
|
,@sCurrHoMargin
|
|
,@sCurrSuperAgentMargin
|
|
,@sCurrAgentMargin
|
|
,@pCurrCostRate
|
|
,@pCurrHoMargin
|
|
,@pCurrSuperAgentMargin
|
|
,@pCurrAgentMargin
|
|
,@agentCrossSettRate
|
|
,@exRate
|
|
,@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
|
|
,@exRateId
|
|
,@nameAsPerBank
|
|
,@paymentOption
|
|
,ISNULL(@rewardAmt, 0)
|
|
,CASE
|
|
WHEN ISNULL(@rewardAmt, 0) > 0
|
|
THEN 'REDEEM'
|
|
ELSE NULL
|
|
END
|
|
,'N'
|
|
|
|
SET @id = SCOPE_IDENTITY()
|
|
|
|
INSERT INTO controlNoList (
|
|
controlNo
|
|
,createdby
|
|
)
|
|
SELECT @controlNo
|
|
,'C'
|
|
|
|
--UPDATE PROMOTIONAL CAMPAIGN
|
|
IF ISNULL(@promotionCode, 0) <> 0
|
|
BEGIN
|
|
EXEC PROC_PROMOTIONAL_CAMPAIGN_COUNTRY_WISE @ID = @id
|
|
,@promotionCode = @promotionCode
|
|
,@promotionAmount = @promotionAmount
|
|
END
|
|
|
|
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
|
|
|
|
|
|
--New code added, referral code add #arjun
|
|
EXEC PROC_Customer_LoyaltyV2 @flag = 'update-v2'
|
|
,@customerId = @senderId
|
|
,@createdFrom = 'I'
|
|
,@tranId = @id
|
|
,@createdBy = @user
|
|
,@controlNo = @controlNo
|
|
,@isManualSc = @isManualSc
|
|
,@referralCode = @introducer
|
|
,@serviceCharge = @iServiceCharge
|
|
|
|
DECLARE @NewId uniqueidentifier
|
|
SET @NewId = NEWID()
|
|
|
|
INSERT INTO TRU_TranDetail
|
|
(
|
|
refId,
|
|
email,
|
|
createddate,
|
|
orderreference,
|
|
sitereference,
|
|
Tranid,
|
|
customerid,
|
|
token,
|
|
recordStatus
|
|
)
|
|
VALUES
|
|
(
|
|
@NewId
|
|
,@user
|
|
,GETDATE()
|
|
,@controlNo
|
|
,@sitereference
|
|
,@id
|
|
,@senderId
|
|
,''
|
|
,'DRAFT'
|
|
)
|
|
|
|
-- UPDATE FOR CUSTOMER LOYALTY
|
|
--IF EXISTS (
|
|
-- SELECT TOP 1 1
|
|
-- FROM REFERRAL_AGENT_WISE
|
|
-- WHERE REFERRAL_TYPE_CODE IN (
|
|
-- 'RB'
|
|
-- ,'RC'
|
|
-- )
|
|
-- AND REFERRAL_CODE = @introducer
|
|
-- )
|
|
--BEGIN
|
|
-- IF @isEligible = 'Y'
|
|
-- BEGIN
|
|
-- EXEC PROC_Customer_Loyalty @flag = 'update'
|
|
-- ,@customerId = @SenderId
|
|
-- ,@tranId = @id
|
|
-- ,@createdFrom = 'I'
|
|
-- ,@reqTranCount = @tranCount
|
|
-- ,@schemeCount = @schemeCount
|
|
-- ,@isManualSc = @isManualSc
|
|
-- ,@serviceCharge = @iServiceCharge
|
|
-- ,@createdBy = @user
|
|
-- ,@controlNo = @controlNo
|
|
-- END
|
|
--END
|
|
|
|
IF (@iServiceCharge <> @calculatedOriginalSc)
|
|
AND ISNULL(@isManualSc, 'Y') = 'Y'
|
|
BEGIN
|
|
UPDATE remitTranTemp
|
|
SET isScMaunal = 1
|
|
,originalSC = @calculatedOriginalSc
|
|
,company = 'M'
|
|
WHERE id = @id
|
|
END
|
|
|
|
--SELECT @sourceOfFund = valueId FROM dbo.staticDataValue WHERE detailTitle = @sourceOfFund and typeID = '3900'
|
|
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'
|
|
|
|
SELECT @OCCUPATIONID = valueId
|
|
FROM STATICDATAVALUE(NOLOCK)
|
|
WHERE valueId = @occupation
|
|
AND typeID = '2000'
|
|
|
|
EXEC PROC_CUSTOMERMODIFYLOG @flag = 'i-fromSendPage'
|
|
,@user = @user
|
|
,@customerId = @senderId
|
|
,@mobileNumber = @sMobile
|
|
,@monthlyIncome = @salaryRange
|
|
,@email = @sEmail
|
|
,@placeofissue = @sCustIdIssuedCountry
|
|
,@occupation = @OCCUPATIONID
|
|
,@sourceOfFund = @SOURCE
|
|
|
|
UPDATE CUSTOMERMASTER
|
|
SET mobile = ISNULL(@sMobile, mobile)
|
|
,monthlyincome = ISNULL(@salaryRange, monthlyincome)
|
|
,email = ISNULL(@sEmail, email)
|
|
,placeofissue = ISNULL(@sCustIdIssuedCountry, placeofissue)
|
|
,occupation = ISNULL(@OCCUPATIONID, 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
|
|
|
|
--New logic for referral
|
|
IF ISNULL(@rewardAmt, 0) > 0
|
|
EXEC proc_InsertRewardPoints @Flag = 'DEBIT', @CustomerId = @senderId, @rewardPoints = @rewardAmt, @TranId = @id
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION
|
|
|
|
IF (
|
|
@complianceRes = 'C'
|
|
OR @ofacRes <> ''
|
|
)
|
|
BEGIN
|
|
SELECT 101 errorCode
|
|
,'Transaction under compliance' msg
|
|
,@controlNo id
|
|
,@id extra
|
|
,@paymentOption extra2
|
|
,@NewId extra3
|
|
|
|
RETURN
|
|
END
|
|
|
|
SELECT 100 errorCode
|
|
,'Transaction has been sent successfully and is waiting for approval' msg
|
|
,@controlNo id
|
|
,@id extra
|
|
,@paymentOption extra2
|
|
,@NewId extra3
|
|
END
|
|
ELSE IF @flag = 'exRate' --Get Exchange Rate, Service Charge, Scheme/Offer and amount details
|
|
BEGIN
|
|
IF @partnerId IS NOT NULL --AND @pCountryId = '203'
|
|
SELECT @payoutPartner = AGENTID
|
|
,@exRateCalByPartner = ISNULL(exRateCalByPartner, 0)
|
|
FROM TblPartnerwiseCountry(NOLOCK)
|
|
WHERE CountryId = @pCountryId
|
|
AND IsActive = 1
|
|
AND ISNULL(PaymentMethod, @deliveryMethod) = @deliveryMethod
|
|
AND AGENTID = @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
|
|
|
|
SELECT @scValue = 0
|
|
,@scOffer = 0
|
|
,@exRateOffer = 0
|
|
,@scDiscount = 0
|
|
|
|
--2. Find Decimal Mask for payout amount rounding
|
|
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
|
|
,NULL id
|
|
|
|
RETURN
|
|
END
|
|
|
|
IF @pCountryId = 151
|
|
AND @deliveryMethod = 1
|
|
BEGIN
|
|
SELECT AgentId
|
|
INTO #AgentList
|
|
FROM agentMaster(NOLOCK)
|
|
WHERE extCode = 'NP ANYWHERE'
|
|
|
|
SELECT @exRate = MAX(customerRate)
|
|
FROM #AgentList A
|
|
CROSS APPLY dbo.FNAGetExRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, AgentId, @pCurr, @deliveryMethod) FN
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT @exRate = dbo.FNAGetCustomerRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethod)
|
|
END
|
|
|
|
IF ISNULL(@exRate, 0) = 0
|
|
BEGIN
|
|
SELECT '1' ErrCode
|
|
,'Exchange rate not defined yet for receiving currency (' + @pCurr + ')' Msg
|
|
,NULL id
|
|
|
|
RETURN
|
|
END
|
|
|
|
IF @tpExRate > 0
|
|
BEGIN
|
|
SET @exRate = @exRate - @tpExRate
|
|
END
|
|
|
|
--New code added, referral code add #arjun
|
|
--EXEC PROC_Customer_LoyaltyV2 @flag = 'check-eligible-v2'
|
|
-- ,@isEligible = @isEligible OUT
|
|
-- ,@referralCode = @introducer
|
|
-- ,@tranCount = @trancount OUT
|
|
-- ,@schemeCount = @schemeCount OUT
|
|
-- ,@customerId = @senderId
|
|
-- ,@createdFrom = 'I'
|
|
|
|
|
|
--IF EXISTS (
|
|
-- SELECT TOP 1 1
|
|
-- FROM REFERRAL_AGENT_WISE
|
|
-- WHERE REFERRAL_TYPE_CODE IN (
|
|
-- 'RB'
|
|
-- ,'RC'
|
|
-- )
|
|
-- AND REFERRAL_CODE = @introducer
|
|
-- )
|
|
--BEGIN
|
|
-- EXEC PROC_Customer_Loyalty @flag = 'check-eligible'
|
|
-- ,@isEligible = @isEligible OUT
|
|
--END
|
|
--EXEC proc_Customer_Loyalty @flag = 'get-tranCount'
|
|
-- ,@tranCount = @trancount OUT
|
|
-- ,@customerId = @senderId
|
|
|
|
--SELECT TOP 1 @schemeCount = txnCount
|
|
--FROM schemeSetup(NOLOCK)
|
|
--ORDER BY createdDate DESC
|
|
|
|
pRINT @schemeCount;
|
|
pRINT @isEligible;
|
|
pRINT @trancount;
|
|
|
|
DECLARE @availableRewardAmt INT
|
|
SELECT @availableRewardAmt = CAST(dbo.[FNA_GET_AVAILABLE_BALANCE_POINTS](@senderId) AS INT)
|
|
|
|
IF (ISNULL(@rewardAmt ,0)> 0)
|
|
BEGIN
|
|
IF (@availableRewardAmt < ISNULL(@rewardAmt, 0))
|
|
BEGIN
|
|
SELECT '1' ErrCode
|
|
,'You do not have sufficient Rewards!'
|
|
,NULL id
|
|
RETURN;
|
|
END
|
|
END
|
|
|
|
IF(ISNULL(@rewardAmt, 0) > ISNULL(@availableRewardAmt,0))
|
|
BEGIN
|
|
SELECT '1' ErrCode
|
|
,'Please enter the valid point. The amount cannot be more than available Reward Amount!' Msg
|
|
,NULL id
|
|
|
|
RETURN
|
|
END
|
|
|
|
IF ISNULL(@cAmt, 0.00) <> 0.00
|
|
BEGIN
|
|
IF @isEligible = 'Y'
|
|
BEGIN
|
|
SET @serviceCharge = 0
|
|
SET @isFreeSc = 'Y'
|
|
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 = amount
|
|
FROM [dbo].FNAGetServiceCharge(@sCountryId, @sSuperAgent, @sAgent, @sBranch, @pCountryId, @pSuperAgent, @pAgent, @pBranch, @deliveryMethod, @cAmt, @collCurr)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @serviceCharge = ISNULL(@manualSc, 0)
|
|
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
|
|
|
|
|
|
PRINT @serviceCharge
|
|
|
|
|
|
SET @tAmt = @cAmt - @serviceCharge + @scDiscount + ISNULL(@rewardAmt,0)
|
|
SET @pAmt = @tAmt * (@exRate + @exRateOffer)
|
|
--SET @pAmt = FLOOR(@pAmt)
|
|
|
|
SET @pAmt =Cast(Round(@pAmt,2,1) as decimal(18,2));
|
|
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @tAmt = @pAmt/(@exRate + @exRateOffer);
|
|
SET @tAmt=Cast(Round(@tAmt,2,1) as decimal(18,2))
|
|
--SET @tAmt = CEILING(@pAmt / (@exRate + @exRateOffer))
|
|
|
|
IF @isEligible = 'Y'
|
|
BEGIN
|
|
SET @serviceCharge = 0
|
|
SET @isFreeSc = 'Y'
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
PRINT @tAmt;
|
|
PRINT @pAgent
|
|
PRINT @pBranch
|
|
PRINT @deliveryMethod
|
|
PRINT @collCurr
|
|
SELECT @calcOriginalSc = amount
|
|
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 = ROUND(@cAmt, 2)
|
|
--SET @cAmt = CEILING(@cAmt)
|
|
SET @cAmt =Cast(Round(@cAmt,2,1) as decimal(18,2))
|
|
|
|
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
|
|
|
|
PRINT @cAmt
|
|
PRINT @pAmt
|
|
PRINT @sCountryId
|
|
PRINT @collMode
|
|
PRINT @deliveryMethod
|
|
|
|
--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 = 0
|
|
,exRateConfirmId = 0
|
|
,IsFreeSc = @isFreeSc
|
|
,calcOriginalSc = @calcOriginalSc
|
|
END
|
|
ELSE IF @flag = 'customerRate' --Get Customer Rate
|
|
BEGIN
|
|
SELECT TOP 1 @pCurr = CM.currencyCode
|
|
FROM currencyMaster CM WITH (NOLOCK)
|
|
INNER JOIN countryCurrency CC WITH (NOLOCK) ON CM.currencyId = CC.currencyId
|
|
WHERE CC.countryId = @pCountryId
|
|
AND ISNULL(CC.isDeleted, 'N') = 'N'
|
|
|
|
IF @pCurr IS NULL
|
|
BEGIN
|
|
SELECT '1' ErrCode
|
|
,'Not defined' Msg
|
|
,NULL id
|
|
|
|
RETURN
|
|
END
|
|
|
|
SELECT @exRate = dbo.FNAGetCustomerRate(@sCountryId, @sAgent, @sBranch, @collCurr, @pCountryId, @pAgent, @pCurr, @deliveryMethod)
|
|
|
|
IF @exRate IS NULL
|
|
BEGIN
|
|
SELECT '1' ErrCode
|
|
,'Not defined' Msg
|
|
,NULL id
|
|
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @maxLimit AS MONEY
|
|
,@lCurr AS VARCHAR(10)
|
|
|
|
SELECT @maxLimit = maxLimitAmt
|
|
,@lCurr = currency
|
|
FROM sendTranLimit WITH (NOLOCK)
|
|
WHERE agentId = @sAgent
|
|
AND ISNULL(receivingCountry, ISNULL(@pCountryId, 0)) = ISNULL(@pCountryId, 0)
|
|
AND ISNULL(tranType, ISNULL(@deliveryMethod, 0)) = ISNULL(@deliveryMethod, 0)
|
|
AND currency = @collCurr
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N'
|
|
|
|
SELECT @maxLimit = maxLimitAmt
|
|
,@lCurr = currency
|
|
FROM sendTranLimit WITH (NOLOCK)
|
|
WHERE agentId IS NULL
|
|
AND ISNULL(receivingCountry, ISNULL(@pCountryId, 0)) = ISNULL(@pCountryId, 0)
|
|
AND ISNULL(tranType, ISNULL(@deliveryMethod, 0)) = ISNULL(@deliveryMethod, 0)
|
|
AND currency = @collCurr
|
|
AND ISNULL(isActive, 'N') = 'Y'
|
|
AND ISNULL(isDeleted, 'N') = 'N'
|
|
|
|
SELECT '0' ErrCode
|
|
,@exRate exRate
|
|
,@pCurr pCurr
|
|
,@maxLimit limit
|
|
,@lCurr limitCurr
|
|
END
|
|
ELSE IF @flag = 'CustdayLimit' -- CUSTOMER PER DAY LIMIT
|
|
BEGIN
|
|
DECLARE @txnSum MONEY
|
|
,@txnCount INT
|
|
,@tranId INT
|
|
,@date VARCHAR(20) = CONVERT(VARCHAR(20), GETDATE(), 111)
|
|
|
|
SELECT @limitBal = D.amount
|
|
FROM csMaster M WITH (NOLOCK)
|
|
INNER JOIN csDetail D WITH (NOLOCK) ON M.csMasterId = D.csDetailId
|
|
WHERE sCountry = @sCountryId
|
|
AND ISNULL(M.isActive, 'Y') = 'Y'
|
|
AND ISNULL(D.isActive, 'Y') = 'Y'
|
|
|
|
SELECT @txnSum = ISNULL(SUM(R.cAmt), 0)
|
|
,@txnCount = COUNT('x')
|
|
FROM remitTran R WITH (NOLOCK)
|
|
,tranSenders S WITH (NOLOCK)
|
|
WHERE R.id = S.tranId
|
|
AND S.customerId = @senderId
|
|
AND R.approvedDate BETWEEN @date
|
|
AND @date + ' 23:59:59'
|
|
|
|
SELECT ISNULL(@limitBal, 0) countryBalLimit
|
|
,ISNULL(@txnSum, 0) custDayLimit
|
|
,ISNULL(@txnCount, 0) custDayTxn
|
|
,CAST(GETDATE() AS DATE) [txnDate]
|
|
END
|
|
ELSE IF @flag = 'cti' --All transaction information (sender, receiver, payout)
|
|
BEGIN
|
|
SELECT DISTINCT c.customerId
|
|
,c.membershipId
|
|
,Name = c.firstName + ISNULL(' ' + c.middleName, '') + ISNULL(' ' + c.lastName1, '') + ISNULL(' ' + c.lastName2, '')
|
|
,c.Country
|
|
,Address
|
|
,[State]
|
|
,Phone = COALESCE(mobile, homePhone, workPhone)
|
|
,city
|
|
FROM tranSenders c WITH (NOLOCK)
|
|
WHERE c.id = @senderId
|
|
|
|
SELECT DISTINCT c.customerId
|
|
,c.membershipId
|
|
,Name = c.firstName + ISNULL(' ' + c.middleName, '') + ISNULL(' ' + c.lastName1, '') + ISNULL(' ' + c.lastName2, '')
|
|
,Country
|
|
,Address
|
|
,[State]
|
|
,Phone = COALESCE(mobile, homePhone, workPhone)
|
|
,city
|
|
FROM tranreceivers c WITH (NOLOCK)
|
|
WHERE c.id = @benId
|
|
|
|
IF @agentId > 0
|
|
BEGIN
|
|
SELECT DISTINCT am.agentId
|
|
,am.agentCode
|
|
,name = am.agentName
|
|
,address = am.agentAddress
|
|
,city = agentCity
|
|
,[State] = agentState
|
|
,Phone = COALESCE(agentMobile1, agentMobile2, agentPhone1, agentPhone2)
|
|
,Country = @pCountry
|
|
FROM agentMaster am WITH (NOLOCK)
|
|
LEFT JOIN agentCurrency ac WITH (NOLOCK) ON am.agentId = ac.agentId
|
|
WHERE am.agentId = @agentId
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SELECT agentId = NULL
|
|
,agentCode = NULL
|
|
,name = 'Any'
|
|
,address = NULL
|
|
,city = NULL
|
|
,STATE = NULL
|
|
,Phone = NULL
|
|
,country = @pCountry
|
|
END
|
|
END
|
|
ELSE IF @flag = 'controlNo'
|
|
BEGIN
|
|
SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
|
|
|
|
SELECT senderId = sen.customerId
|
|
,benId = ben.customerId
|
|
,pCountry = cm.countryId
|
|
,deliveryMethod = stm.serviceTypeId
|
|
,tAmt = trn.tAmt
|
|
,cAmt = trn.cAmt
|
|
,pAmt = trn.pAmt
|
|
,customerRate = trn.customerRate
|
|
,serviceCharge = trn.serviceCharge
|
|
,trn.collCurr
|
|
,trn.payoutCurr
|
|
,agentId = pBranch
|
|
FROM remitTran trn WITH (NOLOCK)
|
|
INNER JOIN tranSenders sen WITH (NOLOCK) ON trn.id = sen.tranId
|
|
INNER JOIN tranReceivers ben WITH (NOLOCK) ON trn.id = ben.tranId
|
|
INNER JOIN countryMaster cm WITH (NOLOCK) ON trn.pCountry = cm.countryName
|
|
INNER JOIN serviceTypeMaster stm WITH (NOLOCK) ON trn.paymentMethod = stm.typeTitle
|
|
WHERE controlNo = @controlNoEncrypted
|
|
END
|
|
ELSE IF @flag = 'senderId'
|
|
BEGIN
|
|
SELECT TOP 1 senderId = sen.customerId
|
|
,benId = ben.customerId
|
|
,pCountry = cm.countryId
|
|
,deliveryMethod = stm.serviceTypeId
|
|
,tAmt = trn.tAmt
|
|
,cAmt = trn.cAmt
|
|
,pAmt = trn.pAmt
|
|
,customerRate = trn.customerRate
|
|
,serviceCharge = trn.serviceCharge
|
|
,trn.collCurr
|
|
,trn.payoutCurr
|
|
,agentId = pBranch
|
|
FROM remitTran trn WITH (NOLOCK)
|
|
INNER JOIN tranSenders sen WITH (NOLOCK) ON trn.id = sen.tranId
|
|
INNER JOIN tranReceivers ben WITH (NOLOCK) ON trn.id = ben.tranId
|
|
INNER JOIN countryMaster cm WITH (NOLOCK) ON trn.pCountry = cm.countryName
|
|
INNER JOIN serviceTypeMaster stm WITH (NOLOCK) ON trn.paymentMethod = stm.typeTitle
|
|
WHERE sen.customerId = @senderId
|
|
ORDER BY trn.id DESC
|
|
END
|
|
ELSE IF @flag = 'chkSenderIdNo'
|
|
BEGIN
|
|
--IF EXISTS(SELECT 'X' FROM dbo.customerMaster WITH(NOLOCK) WHERE idNumber = @sIdNo AND ISNULL(isDeleted, 'N') = 'N')
|
|
--BEGIN
|
|
-- EXEC proc_errorHandler 1, 'Customer is already registered with this Id Number', NULL
|
|
-- RETURN
|
|
--END
|
|
EXEC proc_errorHandler 0
|
|
,'Success'
|
|
,NULL
|
|
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
|
|
|
|
|
|
|
|
|