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.
 
 
 

1223 lines
31 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_loadCashRemitCard] Script Date: 7/4/2019 11:35:48 AM ******/
DROP PROCEDURE [dbo].[proc_loadCashRemitCard]
GO
/****** Object: StoredProcedure [dbo].[proc_loadCashRemitCard] Script Date: 7/4/2019 11:35:48 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[proc_loadCashRemitCard]
(
@flag VARCHAR(50) = NULL
,@user VARCHAR(50) = NULL
,@id INT = NULL
,@controlNo VARCHAR(50) = NULL
,@agentUniqueRefId VARCHAR(20) = 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
,@mapCode VARCHAR(8) = NULL
,@mapCodeDom VARCHAR(8) = NULL
,@remitCardNo VARCHAR(50) = NULL
,@benefName VARCHAR(200) = NULL
,@benefAddress VARCHAR(500) = NULL
,@benefMobile VARCHAR(50) = NULL
,@benefIdType VARCHAR(50) = NULL
,@benefIdNo VARCHAR(50) = NULL
,@senderName VARCHAR(200) = NULL
,@senderAddress VARCHAR(500) = NULL
,@senderMobile VARCHAR(50) = NULL
,@senderIdType VARCHAR(50) = NULL
,@senderIdNo VARCHAR(50) = NULL
,@senderRemitCardNo VARCHAR(50) = NULL
,@tAmt MONEY = NULL
,@serviceCharge MONEY = NULL
,@cAmt MONEY = NULL
,@pAmt MONEY = NULL
,@purposeOfRemit VARCHAR(200) = NULL
,@sourceOfFund VARCHAR(200) = NULL
,@remarks VARCHAR(MAX) = NULL
,@fromSendTrnTime VARCHAR(20) = NULL
,@toSendTrnTime VARCHAR(20) = NULL
,@txtPass VARCHAR(50) = NULL
,@sDcInfo VARCHAR(50) = NULL
,@sIpAddress VARCHAR(50) = NULL
,@payResponseCode VARCHAR(200) = NULL
,@payResponseMsg VARCHAR(200) = NULL
,@isKycApprove CHAR(1) = NULL
,@refNo VARCHAR(50) = NULL
)
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRY
CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), membershipId INT)
DECLARE
@sql VARCHAR(MAX)
,@oldValue VARCHAR(MAX)
,@newValue VARCHAR(MAX)
,@module VARCHAR(10)
,@tableAlias VARCHAR(100)
,@logIdentifier VARCHAR(50)
,@logParamMod VARCHAR(100)
,@logParamMain VARCHAR(100)
,@table VARCHAR(MAX)
,@select_field_list VARCHAR(MAX)
,@extra_field_list VARCHAR(MAX)
,@sql_filter VARCHAR(MAX)
,@modType VARCHAR(6)
,@errorMsg VARCHAR(MAX)
,@controlNoEncrypted VARCHAR(50)
,@benefAcNo VARCHAR(50)
,@sCountry VARCHAR(100)
,@sCountryId VARCHAR(30)
,@pCountry VARCHAR(100)
,@pCountryId VARCHAR(30)
,@deliveryMethod VARCHAR(50)
,@collMode VARCHAR(50)
,@sendingCustType VARCHAR(50)
,@sendingCurrency CHAR(3)
,@iCollectAmount MONEY
,@kycApproveFlag CHAR(1)
,@limitBal MONEY
,@agentType INT
IF @flag='selectByRemitCardNo'
BEGIN
IF NOT EXISTS(SELECT 'x' FROM kycMaster WITH(NOLOCK)
WHERE remitCardNo = @remitCardNo AND ISNULL(isDeleted,'N') = 'N' AND ISNULL(isActive,'Y') = 'Y')
BEGIN
EXEC proc_errorHandler 1, 'KYC Customer Not Found.', NULL
RETURN
END
SELECT
errorCode = 0 ,
fullName = ISNULL(' '+km.firstName,'')+ ISNULL(' '+km.middleName,'')+ ISNULL(' '+km.lastName,''),
pAddress = ISNULL(' '+vdcMP,'') + ISNULL(' '+wardNoT,'')+ISNULL(' '+districtP,'')+ISNULL(' '+sm.stateName,'')+ISNULL(' '+cm.countryName,''),
mobileP,
idCardType = 'Citizenship',
idCardNo = citizenshipNo,
remitCardNo
FROM kycMaster km WITH(NOLOCK)
LEFT JOIN countryMaster cm WITH(NOLOCK) ON km.countryP = cm.countryId
LEFT JOIN countryStateMaster sm WITH(NOLOCK) ON km.zoneP = sm.stateId
WHERE remitCardNo = @remitCardNo
END
--## load starter
IF @flag = 'ls'
BEGIN
DECLARE
@pBranchName VARCHAR(200),
@receiverName VARCHAR(200),
@availableLimit MONEY
SELECT
@pBranchName = pBranchName,
@sBranch = pBranch,
@receiverName = receiverName,
@pAmt = pAmt,
@remitCardNo = CASE WHEN LEN(ISNULL(rec.membershipId,'')) = 16 THEN rec.membershipId ELSE '' END
FROM remitTran rt WITH(NOLOCK)
INNER JOIN dbo.tranReceivers rec WITH(NOLOCK) ON rt.id = rec.tranId
WHERE controlNo = dbo.FNAEncryptString(@controlNo)
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 WITH(NOLOCK) 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'
SELECT
@availableLimit = ISNULL(dbo.FNAGetLimitBal(@settlingAgent), 0)
FROM creditLimit cl
LEFT JOIN currencyMaster cm WITH(NOLOCK) ON cl.currency = cm.currencyId
WHERE agentId = @settlingAgent
IF EXISTS(SELECT 'x' FROM kycMaster WITH(NOLOCK)
WHERE remitCardNo = @remitCardNo AND ISNULL(isDeleted,'N') = 'N' AND ISNULL(isActive,'Y') = 'Y')
BEGIN
SELECT
@benefName = ISNULL(' '+km.firstName,'')+ ISNULL(' '+km.middleName,'')+ ISNULL(' '+km.lastName,''),
@benefAddress = ISNULL(' '+vdcMP,'') + ISNULL(' '+wardNoT,'')+ISNULL(' '+districtP,'')+ISNULL(' '+sm.stateName,'')+ISNULL(' '+cm.countryName,''),
@benefMobile = mobileP,
@benefIdType = 'Citizenship',
@benefIdNo = citizenshipNo
FROM kycMaster km WITH(NOLOCK)
LEFT JOIN countryMaster cm WITH(NOLOCK) ON km.countryP = cm.countryId
LEFT JOIN countryStateMaster sm WITH(NOLOCK) ON km.zoneP = sm.stateId
WHERE remitCardNo = @remitCardNo
END
SELECT
remitCardNo = @remitCardNo,
controlNo = @controlNo,
pBranchName = @pBranchName,
pBranch = @sBranch,
receiverName = @receiverName,
pAmt = @pAmt,
availableBal = @availableLimit,
benefName = @benefName,
benefAddress = @benefAddress,
benefMobile = @benefMobile,
benefIdType = @benefIdType,
benefIdNo = @benefIdNo
END
--## save history
IF @flag='sh'
BEGIN
IF @user IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Your session has expired. Cannot send transaction', NULL
RETURN
END
SET @txtPass = dbo.FNAEncryptString(@txtPass)
IF NOT EXISTS(SELECT 'X' FROM applicationUsers WITH(NOLOCK) WHERE PWD = @txtPass AND userName = @user)
BEGIN
EXEC proc_errorHandler 1, 'TXN password is invalid !', @user
RETURN
END
IF(DATEDIFF(MI,CAST(dbo.FNAGetDateInNepalTZ() AS TIME), CAST(@fromSendTrnTime AS TIME))) > 0
BEGIN
EXEC proc_errorHandler 1, 'You are not authorized to send at this time', NULL
RETURN
END
IF(DATEDIFF(MI,CAST(dbo.FNAGetDateInNepalTZ() AS TIME), CAST(@toSendTrnTime AS TIME))) < 0
BEGIN
EXEC proc_errorHandler 1, 'You are not authorized to send at this time', NULL
RETURN
END
IF NOT EXISTS(SELECT 'x' FROM kycMaster WITH(NOLOCK)
WHERE remitCardNo = @remitCardNo
AND ISNULL(isDeleted,'N') = 'N'
AND ISNULL(isActive,'Y') = 'Y')
BEGIN
EXEC proc_errorHandler 1, 'KYC Customer Not Found.', NULL
RETURN
END
SELECT @agentType = agentType,
@sAgent = parentId,
@sBranchName = agentName
FROM agentMaster WITH(NOLOCK) WHERE agentId = @sBranch
IF @agentType = 2903
BEGIN
SET @sAgent = @sBranch
END
SELECT DISTINCT @sSuperAgent = parentId, @sAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @sAgent
SELECT DISTINCT @sSuperAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @sSuperAgent
SELECT @settlingAgent = agentId FROM agentMaster WHERE agentId = @sBranch AND isSettlingAgent = 'Y'
IF @settlingAgent IS NULL
SELECT @settlingAgent = agentId FROM agentMaster WHERE agentId = @sAgent AND isSettlingAgent = 'Y'
IF @settlingAgent IS NULL
SELECT @settlingAgent = agentId FROM agentMaster WHERE agentId = @sSuperAgent AND isSettlingAgent = 'Y'
SELECT @pCountry = 'Nepal'
SELECT @sCountry = 'Nepal'
SELECT @pCountryId = '151'
SELECT @sCountryId = '151'
SET @deliveryMethod = 'IME Remit Card'
SET @collMode = NULL
SET @sendingCustType = NULL
SET @sendingCurrency = 'NPR'
DECLARE @currentDate DATETIME
SET @limitBal = [dbo].FNAGetLimitBal(@settlingAgent)
SET @currentDate = dbo.FNAGetDateInNepalTz()
IF EXISTS(SELECT 'X' FROM remitTran trn WITH(NOLOCK)
LEFT JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
LEFT JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
WHERE
trn.createdDate BETWEEN CONVERT(VARCHAR,GETDATE(),101) AND CONVERT(VARCHAR,GETDATE(),101)+' 23:59:59'
AND trn.senderName = @senderName
AND trn.receiverName = @benefName
AND trn.tAmt = @tAmt
AND trn.serviceCharge = @serviceCharge
AND trn.cAmt = @cAmt
AND DATEDIFF(MI, trn.createdDate, @currentDate) <= 5)
BEGIN
EXEC proc_errorHandler 1, 'Similar Transaction Found', NULL
RETURN
END
IF @tAmt > @limitBal
BEGIN
EXEC [proc_errorHandler] 1, 'Transfer amount exceeds Limit. Please, Check your available limit.', NULL
RETURN
END
IF EXISTS (
SELECT
'X'
FROM sendTranLimit
WHERE agentId = @settlingAgent
AND (tranType = @collMode OR tranType IS NULL)
AND (paymentType = @deliveryMethod OR paymentType IS NULL)
AND (customerType = @sendingCustType OR customerType IS NULL)
AND currency = @sendingCurrency
AND (receivingCountry = @pCountry OR receivingCountry IS NULL)
AND ISNULL(minLimitAmt, 0) > @tAmt
AND ISNULL(maxLimitAmt, 0) < @tAmt
AND ISNULL(isActive, 'N') = 'Y'
)
BEGIN
EXEC [proc_errorHandler] 1, 'Agent Sending limit is exceeded.', NULL
RETURN
END
IF NOT EXISTS (
SELECT
'X'
FROM sendTranLimit
WHERE countryId = @sCountryId
AND (tranType = @collMode OR tranType IS NULL)
AND (paymentType = @deliveryMethod OR paymentType IS NULL)
AND (customerType = @sendingCustType OR customerType IS NULL)
AND currency = @sendingCurrency
AND (receivingCountry = @pCountryId OR receivingCountry IS NULL)
AND ISNULL(minLimitAmt, 0) <= @tAmt
AND ISNULL(maxLimitAmt, 0) >= @tAmt
AND ISNULL(isActive, 'N') = 'Y'
)
BEGIN
EXEC [proc_errorHandler] 1, 'Country Sending limit is not defined or exceeds.', NULL
RETURN
END
DECLARE @sAgentComm MONEY,@sSuperAgentComm MONEY
SELECT
@serviceCharge = 0
,@sAgentComm = 0
,@sSuperAgentComm = 0
IF (@cAmt IS NULL)
BEGIN
SET @cAmt = @tAmt + @serviceCharge
END
SET @iCollectAmount = @tAmt + @serviceCharge
IF(@cAmt <> @iCollectAmount)
BEGIN
EXEC [proc_errorHandler] 1, 'Collection Amount not match.', NULL
RETURN
END
SELECT @kycApproveFlag = CASE WHEN approvedDate IS NULL THEN 'N' ELSE 'Y' END,
@benefAcNo = accountNo
FROM kycMaster WITH(NOLOCK) WHERE remitCardNo = @remitCardNo
BEGIN TRANSACTION
INSERT INTO globalCardServiceHistory
(
remitCardNo
,controlNo
,sAgent
,sAgentName
,sSuperAgent
,sSuperAgentName
,sBranch
,sBranchName
,benefName
,benefAddress
,benefMobile
,benefIdType
,benefIdNo
,benefAcNo
,senderName
,senderAddress
,senderMobile
,senderIdType
,senderIdNo
,senderRemitCardNo
,collCurr
,payoutCurr
,tAmt
,cAmt
,serviceCharge
,sAgentComm
,dollarRate
,purposeOfRemit
,sourceOfFund
,remarks
,paymentMethod
,tranType
,tranStatus
,createdBy
,createdDate
,createdDateLocal
,approvedBy
,approvedDate
,approvedDateLocal
,dcInfo
,ipAddress
,refNo
)
VALUES
(
@remitCardNo
,@controlNoEncrypted
,@sAgent
,@sAgentName
,@sSuperAgent
,@sSuperAgentName
,@sBranch
,@sBranchName
,@benefName
,@benefAddress
,@benefMobile
,@benefIdType
,@benefIdNo
,@benefAcNo
,@senderName
,@senderAddress
,@senderMobile
,@senderIdType
,@senderIdNo
,@senderRemitCardNo
,'NPR'
,'NPR'
,@tAmt
,@cAmt
,@serviceCharge
,@sAgentComm
,'0'
,@purposeOfRemit
,@sourceOfFund
,@remarks
,'Card Deposit'
,'C'
,'Processing'
,@user
,GETDATE()
,DBO.FNAGetDateInNepalTZ()
,@user
,GETDATE()
,DBO.FNAGetDateInNepalTZ()
,@sDcInfo
,@sIpAddress
,@refNo
)
SET @id = @@IDENTITY
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
SELECT 0 errorCode, 'Transaction has been proceed successfully.' msg, @id id, @kycApproveFlag extra
END
--## txn detail
IF @flag ='td'
BEGIN
SELECT
controlNo = CAST(id AS VARCHAR)+'D'
,benefName = benefName
,benefAddress = benefAddress
,benefMobile = benefMobile
,benefIdType = benefIdType
,benefIdNo = benefIdNo
,benefAccNo = benefAcNo
,senderName = senderName
,senderAddress = senderAddress
,senderMobile = senderMobile
,senderIdType = senderIdType
,senderIdNo = senderIdNo
,purpose = purposeOfRemit
,remitType = 'BANK'
,payingBankBranchCd= '14'
,rCurrency = 'NPR'
,localAmount = tAmt
,amount = tAmt
,serviceCharge = serviceCharge
,pCommission = sAgentComm
,dollarRate = 1
,refNo = remitCardNo
,remarks = remarks
,[source] = sourceOfFund
,txnType = 'C'
,HitApi = '1'
,refTranNo = refNo
FROM globalCardServiceHistory WITH(NOLOCK)
WHERE id = @id AND tranStatus = 'Processing'
END
--## api error
IF @flag='ae'
BEGIN
UPDATE globalCardServiceHistory SET tranStatus='sendError' WHERE id = @id
EXEC proc_errorHandler 1, @payResponseMsg, @id
RETURN
END
--## receipt
IF @flag = 'r'
BEGIN
IF RIGHT(@controlNo,1) = 'D'
BEGIN
SELECT
tranNo = trn.id
,benefRemitCardNo = rec.membershipId
,controlNo = DBO.FNADecryptString(controlNo)
,benefName = trn.receiverName
,benefAddress = rec.address
,benefMobile = rec.mobile
,benefIdType = rec.idType
,benefIdNo = rec.idNumber
,senderName = trn.senderName
,senderAddress = sen.address
,senderMobile = sen.mobile
,senderIdType = sen.idType
,senderIdNo = sen.idNumber
,senderRemitCardNo = sen.membershipId
,collCurr = 'NPR'
,tAmt
,cAmt
,serviceCharge
,sAgentComm
,dollarRate =''
,rec.purposeOfRemit
,sourceOfFund
,pMessage
,modeOfPayment = paymentMethod
,tranType
,tranStatus
,trn.createdDate
,sAgentName = CASE WHEN trn.sAgentName = trn.sBranchName THEN trn.sSuperAgentName ELSE trn.sAgentName END
,sBranchName = trn.sBranchName
,sAgentCountry = sa.agentCountry
,sAgentLocation = sLoc.districtName
,sAgentAddress = sa.agentAddress
,agentPhone1 = sa.agentPhone1
FROM remitTran trn WITH(NOLOCK)
INNER JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
INNER JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
INNER JOIN agentMaster sa WITH(NOLOCK) ON trn.sBranch = sa.agentId
LEFT JOIN api_districtList sLoc WITH(NOLOCK) ON sa.agentLocation = sLoc.districtCode
WHERE trn.controlNo = dbo.FNAEncryptString(@controlNo)
END
ELSE
BEGIN
SELECT
tranNo = trn.id
,benefRemitCardNo = trn.remitCardNo
,controlNo = trn.id
,benefName = trn.benefName
,benefAddress = trn.benefAddress
,benefMobile = trn.benefMobile
,benefIdType = trn.benefIdType
,benefIdNo = trn.benefIdNo
,senderName = trn.senderName
,senderAddress = trn.senderAddress
,senderMobile = trn.senderMobile
,senderIdType = trn.senderIdType
,senderIdNo = trn.senderIdNo
,senderRemitCardNo = trn.senderRemitCardNo
,collCurr = 'NPR'
,tAmt
,cAmt
,serviceCharge
,sAgentComm
,dollarRate =''
,purposeOfRemit
,sourceOfFund
,pMessage = 'Transaction has been sent but waiting for approval from HO.'
,modeOfPayment = paymentMethod
,tranType
,tranStatus
,trn.createdDate
,sAgentName = CASE WHEN trn.sAgentName = trn.sBranchName THEN trn.sSuperAgentName ELSE trn.sAgentName END
,sBranchName = trn.sBranchName
,sAgentCountry = sa.agentCountry
,sAgentLocation = sLoc.districtName
,sAgentAddress = sa.agentAddress
,agentPhone1 = sa.agentPhone1
FROM globalCardServiceHistory trn WITH(NOLOCK)
INNER JOIN agentMaster sa WITH(NOLOCK) ON trn.sBranch = sa.agentId
LEFT JOIN api_districtList sLoc WITH(NOLOCK) ON sa.agentLocation = sLoc.districtCode
WHERE trn.id = @controlNo
END
DECLARE @sUserFullName VARCHAR(200),
@sUser VARCHAR(50),
@headMsg VARCHAR(MAX),
@commonMsg VARCHAR(MAX),
@countrySpecificMsg VARCHAR(MAX),
@msgType CHAR(1) = 'S'
-->> 6.Message
SELECT
@sUserFullName = ISNULL(''+firstName,'') + ISNULL(' ' + middleName, '') + ISNULL(' ' + lastName, '')
FROM applicationUsers WITH(NOLOCK) WHERE userName = @User
SELECT @sCountry = countryId FROM countryMaster WITH(NOLOCK)
WHERE countryName = (SELECT agentCountry FROM agentMaster WHERE agentId = @sAgent)
--Head Message
SELECT @headMsg = headMsg FROM message WHERE countryId = @sCountry AND ISNULL(isDeleted, 'N') = 'N' AND ISNULL(isActive, 'Inactive') = 'Active'
IF(@headMsg IS NULL)
SELECT @headMsg = headMsg FROM message WHERE countryId IS NULL AND headMsg IS NOT NULL AND ISNULL(isDeleted, 'N') = 'N' AND ISNULL(isActive, 'Inactive') = 'Active'
--Common Message
SELECT @commonMsg = commonMsg FROM message WHERE countryId = @sCountry AND ISNULL(isDeleted, 'N') <> 'Y'
IF(@commonMsg IS NULL)
SELECT @commonMsg = commonMsg FROM message WHERE countryId IS NULL AND commonMsg IS NOT NULL AND ISNULL(isDeleted, 'N') = 'N' AND ISNULL(isActive, 'Inactive') = 'Active'
--Country Specific Message
SELECT @countrySpecificMsg = countrySpecificMsg FROM message WHERE countryId = @sCountry AND ISNULL(isDeleted, 'N') <> 'Y' AND ISNULL(isActive, 'Inactive') = 'Active'
IF(@countrySpecificMsg IS NULL)
SELECT @countrySpecificMsg = countrySpecificMsg FROM message WHERE countryId IS NULL AND countrySpecificMsg IS NOT NULL AND msgType = @msgType AND ISNULL(isDeleted, 'N') = 'N' AND ISNULL(isActive, 'Inactive') = 'Active'
SELECT @headMsg AS headMsg,@commonMsg AS commonMsg, @countrySpecificMsg AS countrySpecificMsg, @sUserFullName AS sUserFullName
END
--## Send & Pay
IF @flag='sp'
BEGIN
IF @user IS NULL
BEGIN
UPDATE globalCardServiceHistory SET tranStatus='sendError' WHERE id = @id
EXEC proc_errorHandler 1, 'Your session has expired. Cannot send transaction', NULL
RETURN
END
SET @controlNo = CAST(@id AS VARCHAR(10))+ 'D'
SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
DECLARE
@tranId INT,
@customerId INT,
@ReceiverRemitCardNo VARCHAR(16),
@benefFirstName VARCHAR(200),
@benefMiddleName VARCHAR(200),
@benefLastName VARCHAR(200),
@benefPhone VARCHAR(50),
@benefEmail VARCHAR(50),
@benefCountry VARCHAR(50),
@senderFirstName VARCHAR(200),
@senderMiddleName VARCHAR(200),
@senderLastName VARCHAR(200),
@senderPhone VARCHAR(50),
@senderEmail VARCHAR(50),
@senderCountry VARCHAR(50),
@sFullName VARCHAR(500),
@rFullName VARCHAR(500)
SELECT
@ReceiverRemitCardNo = remitCardNo,
@senderRemitCardNo = senderRemitCardNo,
@sBranch = sBranch,
@tAmt = tAmt,
@rFullName = benefName,
@sFullName = senderName,
@serviceCharge = serviceCharge,
@pAmt = tAmt,
@cAmt = cAmt,
@sAgentComm = sAgentComm,
@mapCodeDom = am.mapCodeDom
FROM globalCardServiceHistory gh WITH(NOLOCK)
INNER JOIN agentMaster am WITH(NOLOCK) ON gh.sBranch = am.agentId
WHERE gh.id = @id
SELECT
@benefFirstName = firstName,
@benefMiddleName = middleName,
@benefLastName = lastName,
@benefPhone = phoneNoP,
@benefEmail = emailP,
@benefCountry = cm.countryName
FROM kycMaster km WITH(NOLOCK)
LEFT JOIN countryMaster cm WITH(NOLOCK) ON cm.countryId = km.countryP
WHERE remitCardNo = @ReceiverRemitCardNo
SELECT
@customerId = customerId
FROM customerMaster WITH(NOLOCK) WHERE membershipId = @ReceiverRemitCardNo
SELECT @pCountry = 'Nepal'
SELECT @sCountry = 'Nepal'
SELECT @pCountryId = '151'
SELECT @sCountryId = '151'
--## Start Bonus Point
IF (ISNULL(@customerId, 0) <> 0)
BEGIN
DECLARE @maxPointsPerTxn INT, @bonusSchemeId INT, @bonusUnit INT, @bonusPoint INT
SELECT @bonusSchemeId = bonusId
,@maxPointsPerTxn = maxPointsPerTxn
FROM dbo.FNAGetBonusSetupDetail(@sCountryId, @sAgent, @sBranch, @pCountryId, '')
SELECT @bonusUnit = unit, @bonusPoint = points FROM bonusOperationSetup WITH(NOLOCK) WHERE bonusSchemeId = @bonusSchemeId
IF @bonusSchemeId IS NOT NULL
BEGIN
DECLARE @txnBonusPoint FLOAT
SET @txnBonusPoint = @tAmt * (CAST(@bonusPoint AS FLOAT)/CAST(@bonusUnit AS FLOAT))
SET @txnBonusPoint = CASE WHEN @txnBonusPoint > ISNULL(@maxPointsPerTxn, 0) THEN ISNULL(@maxPointsPerTxn, 0) ELSE ISNULL(@txnBonusPoint, 0) END
UPDATE customerMaster SET
bonusPointPending = ISNULL(bonusPointPending, 0) + @txnBonusPoint
,bonusTxnCount = ISNULL(bonusTxnCount, 0) + 1
,bonusTxnAmount = ISNULL(bonusTxnAmount, 0) + @tAmt
WHERE customerId = @customerId
END
END
BEGIN TRANSACTION
INSERT INTO remitTran
(
controlNo,
serviceCharge,
sAgentComm,
pMessage,
sCountry,
sSuperAgent,
sSuperAgentName,
sAgent,
sAgentName,
sBranch,
sBranchName,
pCountry,
pSuperAgent,
pSuperAgentName,
pAgent,
pAgentName,
pBranch,
pBranchName,
pState,
pDistrict,
pLocation,
collCurr,
tAmt,
cAmt,
pAmt,
payoutCurr,
purposeOfRemit,
sourceOfFund,
tranStatus,
payStatus,
paymentMethod,
createdDate,
createdDateLocal,
createdBy,
approvedDate,
approvedDateLocal,
approvedBy,
paidDate,
paidDateLocal,
paidBy,
tranType,
senderName,
receiverName,
bonusPoint,
holdTranId,
accountNo,
controlNo2
)
SELECT
@controlNoEncrypted,
serviceCharge,
sAgentComm,
remarks,
'Nepal',
sSuperAgent,
sSuperAgentName,
sAgent,
sAgentName,
sBranch,
sBranchName,
'Nepal',
'1002',
'INTERNATIONAL MONEY EXPRESS (IME) PVT. LTD',
'20733',
'GIBL Remit Card',
'20733',
'GIBL Remit Card',
'Bagmati',
'Kathmandu',
'137',
collCurr,
tAmt,
cAmt,
tAmt,
payoutCurr,
purposeOfRemit,
sourceOfFund,
'Paid',
'Paid',
'IME Remit Card',
GETDATE(),
DBO.FNAGetDateInNepalTZ(),
@user,
GETDATE(),
DBO.FNAGetDateInNepalTZ(),
@user,
GETDATE(),
DBO.FNAGetDateInNepalTZ(),
@user,
'D',
senderName,
benefName,
@bonusPoint,
@id,
benefAcNo,
refNo
FROM globalCardServiceHistory WITH(NOLOCK) WHERE id = @id
SET @tranId = SCOPE_IDENTITY()
INSERT INTO tranReceivers
(
tranId
,customerId
,membershipId
,firstName
,middleName
,lastName1
,country
,[address]
,email
,homePhone
,mobile
,nativeCountry
,idType
,idNumber
)
SELECT
@tranId
,@customerId
,@ReceiverRemitCardNo
,@benefFirstName
,@benefMiddleName
,@benefLastName
,@benefCountry
,benefAddress
,@benefEmail
,@benefPhone
,benefMobile
,@benefCountry
,benefIdType
,benefIdNo
FROM globalCardServiceHistory WITH(NOLOCK) WHERE id = @id
IF @senderRemitCardNo IS NOT NULL
BEGIN
SELECT
@senderFirstName = firstName,
@senderMiddleName = middleName,
@senderLastName = lastName,
@senderPhone = phoneNoP,
@senderCountry = cm.countryName,
@senderEmail = emailP
FROM kycMaster km WITH(NOLOCK)
LEFT JOIN countryMaster cm WITH(NOLOCK) ON cm.countryId = km.countryP
WHERE RemitCardNo = @senderRemitCardNo
SELECT
@customerId = customerId
FROM customerMaster WITH(NOLOCK) WHERE membershipId = @senderRemitCardNo
INSERT INTO tranSenders
(
tranId
,customerId
,membershipId
,firstName
,middleName
,lastName1
,country
,[address]
,email
,homePhone
,mobile
,nativeCountry
,idType
,idNumber
)
SELECT
@tranId
,@customerId
,@senderRemitCardNo
,@senderFirstName
,@senderMiddleName
,@senderLastName
,@senderCountry
,benefAddress
,@senderEmail
,@senderPhone
,senderMobile
,@senderCountry
,senderIdType
,senderIdNo
FROM globalCardServiceHistory WITH(NOLOCK) WHERE id = @id
END
ELSE
BEGIN
INSERT INTO tranSenders
(
tranId
,firstName
,[address]
,mobile
,idType
,idNumber
,ipAddress
,dcInfo
)
SELECT
@tranId
,senderName
,senderAddress
,senderMobile
,senderIdType
,senderIdNo
,ipAddress
,dcInfo
FROM globalCardServiceHistory WITH(NOLOCK) WHERE id = @id
END
EXEC FastMoneyPro_account.dbo.[PROC_REMIT_DATA_UPDATE]
@flag = 's'
,@controlNo = @controlNo
,@mapCode = @mapCodeDom
,@sFirstName = @sFullName
,@rFirstName = @rFullName
,@cAmt = @cAmt
,@pAmt = @pAmt
,@serviceCharge = @serviceCharge
,@sAgentComm = @sAgentComm
,@pAgentComm = 0
,@deliveryMethod = 'Bank Deposit'
,@user = @user
,@tranId = @tranId
EXEC FastMoneyPro_account.dbo.PROC_REMIT_DATA_UPDATE
@flag = 'p'
,@mapCode = '20733'
,@user = @user
,@pAgentComm = 0
,@controlNo = @controlNo
DELETE FROM globalCardServiceHistory WHERE id = @id
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC [proc_errorHandler] 0, 'Transaction has been sent successfully.', @controlNo
END
--## send unpaid (unapproved customer)
IF @flag='su'
BEGIN
IF @user IS NULL
BEGIN
UPDATE globalCardServiceHistory SET tranStatus='sendError' WHERE id = @id
EXEC proc_errorHandler 1, 'Your session has expired. Cannot send transaction', NULL
RETURN
END
--SET @controlNo = '7' + LEFT(CAST(ABS(CHECKSUM(NEWID())) AS VARCHAR(10)) + '0000000000', 9) + 'D'
--SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
SET @controlNo = CAST(@id AS VARCHAR(10))+ 'D'
SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
SELECT
@ReceiverRemitCardNo = remitCardNo,
@senderRemitCardNo = senderRemitCardNo,
@sBranch = sBranch,
@tAmt = tAmt,
@rFullName = benefName,
@sFullName = senderName,
@serviceCharge = serviceCharge,
@pAmt = tAmt,
@cAmt = cAmt,
@sAgentComm = sAgentComm,
@mapCodeDom = am.mapCodeDom
FROM globalCardServiceHistory gh WITH(NOLOCK)
INNER JOIN agentMaster am WITH(NOLOCK) ON gh.sBranch = am.agentId
WHERE gh.id = @id
SELECT
@benefFirstName = firstName,
@benefMiddleName = middleName,
@benefLastName = lastName,
@benefPhone = phoneNoP,
@benefEmail = emailP,
@benefCountry = cm.countryName
FROM kycMaster km WITH(NOLOCK)
LEFT JOIN countryMaster cm WITH(NOLOCK) ON cm.countryId = km.countryP
WHERE remitCardNo = @ReceiverRemitCardNo
SELECT
@customerId = customerId
FROM customerMaster WITH(NOLOCK) WHERE membershipId = @ReceiverRemitCardNo
SELECT @pCountry = 'Nepal'
SELECT @sCountry = 'Nepal'
SELECT @pCountryId = '151'
SELECT @sCountryId = '151'
--## Start Bonus Point
IF (ISNULL(@customerId, 0) <> 0)
BEGIN
SELECT @bonusSchemeId = bonusId
,@maxPointsPerTxn = maxPointsPerTxn
FROM dbo.FNAGetBonusSetupDetail(@sCountryId, @sAgent, @sBranch, @pCountryId, '')
SELECT @bonusUnit = unit, @bonusPoint = points FROM bonusOperationSetup WITH(NOLOCK) WHERE bonusSchemeId = @bonusSchemeId
IF @bonusSchemeId IS NOT NULL
BEGIN
SET @txnBonusPoint = @tAmt * (CAST(@bonusPoint AS FLOAT)/CAST(@bonusUnit AS FLOAT))
SET @txnBonusPoint = CASE WHEN @txnBonusPoint > ISNULL(@maxPointsPerTxn, 0) THEN ISNULL(@maxPointsPerTxn, 0) ELSE ISNULL(@txnBonusPoint, 0) END
UPDATE customerMaster SET
bonusPointPending = ISNULL(bonusPointPending, 0) + @txnBonusPoint
,bonusTxnCount = ISNULL(bonusTxnCount, 0) + 1
,bonusTxnAmount = ISNULL(bonusTxnAmount, 0) + @tAmt
WHERE customerId = @customerId
END
END
BEGIN TRANSACTION
INSERT INTO remitTran
(
controlNo,
serviceCharge,
sAgentComm,
pMessage,
sCountry,
sSuperAgent,
sSuperAgentName,
sAgent,
sAgentName,
sBranch,
sBranchName,
collCurr,
tAmt,
cAmt,
pAmt,
payoutCurr,
purposeOfRemit,
sourceOfFund,
tranStatus,
payStatus,
paymentMethod,
createdDate,
createdDateLocal,
createdBy,
approvedDate,
approvedDateLocal,
approvedBy,
tranType,
senderName,
receiverName,
bonusPoint,
holdTranId,
accountNo
)
SELECT
@controlNoEncrypted,
serviceCharge,
sAgentComm,
remarks,
'Nepal',
sSuperAgent,
sSuperAgentName,
sAgent,
sAgentName,
sBranch,
sBranchName,
collCurr,
tAmt,
cAmt,
tAmt,
payoutCurr,
purposeOfRemit,
sourceOfFund,
'Payment',
'Unpaid',
'IME Remit Card',
GETDATE(),
DBO.FNAGetDateInNepalTZ(),
@user,
GETDATE(),
DBO.FNAGetDateInNepalTZ(),
@user,
'D',
senderName,
benefName,
@bonusPoint,
@id,
benefAcNo
FROM globalCardServiceHistory WITH(NOLOCK) WHERE id = @id
SET @tranId = SCOPE_IDENTITY()
INSERT INTO tranReceivers
(
tranId
,customerId
,membershipId
,firstName
,middleName
,lastName1
,country
,[address]
,email
,homePhone
,mobile
,nativeCountry
,idType
,idNumber
)
SELECT
@tranId
,@customerId
,@ReceiverRemitCardNo
,@benefFirstName
,@benefMiddleName
,@benefLastName
,@benefCountry
,benefAddress
,@benefEmail
,@benefPhone
,benefMobile
,@benefCountry
,benefIdType
,benefIdNo
FROM globalCardServiceHistory WITH(NOLOCK) WHERE id = @id
IF @senderRemitCardNo IS NOT NULL
BEGIN
SELECT
@senderFirstName = firstName,
@senderMiddleName = middleName,
@senderLastName = lastName,
@senderPhone = phoneNoP,
@senderCountry = cm.countryName,
@senderEmail = emailP
FROM kycMaster km WITH(NOLOCK)
LEFT JOIN countryMaster cm WITH(NOLOCK) ON cm.countryId = km.countryP
WHERE RemitCardNo = @senderRemitCardNo
SELECT
@customerId = customerId
FROM customerMaster WITH(NOLOCK) WHERE membershipId = @senderRemitCardNo
INSERT INTO tranSenders
(
tranId
,customerId
,membershipId
,firstName
,middleName
,lastName1
,country
,[address]
,email
,homePhone
,mobile
,nativeCountry
,idType
,idNumber
)
SELECT
@tranId
,@customerId
,@senderRemitCardNo
,@senderFirstName
,@senderMiddleName
,@senderLastName
,@senderCountry
,senderAddress
,@senderEmail
,@senderPhone
,senderMobile
,@senderCountry
,senderIdType
,senderIdNo
FROM globalCardServiceHistory WITH(NOLOCK) WHERE id = @id
END
ELSE
BEGIN
INSERT INTO tranSenders
(
tranId
,firstName
,[address]
,mobile
,idType
,idNumber
,ipAddress
,dcInfo
)
SELECT
@tranId
,senderName
,senderAddress
,senderMobile
,senderIdType
,senderIdNo
,ipAddress
,dcInfo
FROM globalCardServiceHistory WITH(NOLOCK) WHERE id = @id
END
EXEC FastMoneyPro_account.dbo.[PROC_REMIT_DATA_UPDATE]
@flag = 's'
,@controlNo = @controlNo
,@mapCode = @mapCodeDom
,@sFirstName = @sFullName
,@rFirstName = @rFullName
,@cAmt = @cAmt
,@pAmt = @pAmt
,@serviceCharge = @serviceCharge
,@sAgentComm = @sAgentComm
,@pAgentComm = 0
,@deliveryMethod = 'Bank Deposit'
,@user = @user
,@tranId = @tranId
UPDATE globalCardServiceHistory SET tranStatus='Unpaid' WHERE id = @id
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC [proc_errorHandler] 0, 'Transaction has been sent successfully, Waiting for approval. Please contact Head Office.', @controlNo
END
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
DECLARE @errorMessage VARCHAR(MAX)
SET @errorMessage = ERROR_MESSAGE()
EXEC proc_errorHandler 1, @errorMessage, @sBranch
END CATCH
GO