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