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.
 
 
 

514 lines
33 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_approveTran] Script Date: 9/27/2019 1:30:14 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
SELECT * FROM remitTran
EXEC proc_cancelTran @flag = 'details', @user = 'shree_b1', @tranId = '1', @controlNo = '91885218404'
*/
ALTER proc [dbo].[proc_approveTran] (
@flag VARCHAR(50)
,@controlNo VARCHAR(20) = NULL
,@user VARCHAR(30) = NULL
,@agentRefId VARCHAR(20) = NULL
,@tranId INT = NULL
,@sCountry INT = NULL
,@sFirstName VARCHAR(30) = NULL
,@sMiddleName VARCHAR(30) = NULL
,@sLastName1 VARCHAR(30) = NULL
,@sLastName2 VARCHAR(30) = NULL
,@sMemId VARCHAR(30) = NULL
,@sId BIGINT = NULL
,@sTranId VARCHAR(50) = NULL
,@rCountry INT = NULL
,@rFirstName VARCHAR(30) = NULL
,@rMiddleName VARCHAR(30) = NULL
,@rLastName1 VARCHAR(30) = NULL
,@rLastName2 VARCHAR(30) = NULL
,@rMemId VARCHAR(30) = NULL
,@rId BIGINT = NULL
,@pCountry INT = NULL
,@customerId INT = NULL
,@agentId INT = NULL
,@senderId INT = NULL
,@benId INT = NULL
,@cancelReason VARCHAR(200) = NULL
,@cAmt MONEY = NULL
,@sortBy VARCHAR(50) = NULL
,@sortOrder VARCHAR(5) = NULL
,@pageSize INT = NULL
,@pageNumber INT = NULL
)
AS
DECLARE
@select_field_list VARCHAR(MAX)
,@extra_field_list VARCHAR(MAX)
,@table VARCHAR(MAX)
,@sql_filter VARCHAR(MAX)
SET NOCOUNT ON
SET XACT_ABORT ON
SELECT @pageSize = 1000, @pageNumber = 1
DECLARE @sBranch INT
DECLARE @controlNoEncrypted VARCHAR(100)
SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
IF @flag = 'approve'
BEGIN
--Check if the approver is the same user who sent transaction
IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND createdBy = @user)
BEGIN
EXEC proc_errorHandler 1, 'Process denied for same user', @controlNoEncrypted
RETURN
END
DECLARE @tranStatus VARCHAR(20) = NULL
SELECT @sBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
SELECT @tranStatus = tranStatus, @cAmt = cAmt FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
IF @sBranch <> dbo.FNAGetHOAgentId() --Head Office
BEGIN
IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND sBranch <> @sBranch)
BEGIN
EXEC proc_errorHandler 1, 'Transaction is not in authorized mode', @controlNoEncrypted
RETURN
END
END
IF (@tranStatus = 'CancelRequest')
BEGIN
EXEC proc_errorHandler 1, 'Transaction has been requested for cancel', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Payment')
BEGIN
EXEC proc_errorHandler 1, 'Transaction already been approved and ready for payment', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Paid')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is already been paid', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Cancel')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is cancelled', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Lock')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is locked. Please Contact HO', @controlNoEncrypted
RETURN
END
DECLARE @userId INT, @sendPerTxn MONEY, @sendPerDay MONEY, @sendTodays MONEY
SELECT @userId = userId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user AND ISNULL(isDeleted, 'N') = 'N'
SELECT @sendPerDay = sendPerDay, @sendPerTxn = sendPerTxn, @sendTodays = ISNULL(sendTodays, 0) FROM userWiseTxnLimit WITH(NOLOCK) WHERE userId = @userId AND ISNULL(isActive, 'N') = 'Y' AND ISNULL(isDeleted, 'N') = 'N'
IF(@cAmt > @sendPerTxn)
BEGIN
EXEC proc_errorHandler 1, 'Transfer Amount exceeds user per transaction limit.', @controlNoEncrypted
RETURN
END
IF(@sendTodays > @sendPerDay)
BEGIN
EXEC proc_errorHandler 1, 'User Per Day Transaction Limit exceeded.', @controlNoEncrypted
RETURN
END
BEGIN TRANSACTION
UPDATE remitTran SET
tranStatus = 'Payment' --Payment
,approvedBy = @user
,approvedDate = GETDATE()
,approvedDateLocal = DBO.FNADateFormatTZ(GETDATE(), @user)
WHERE controlNo = @controlNoEncrypted
UPDATE userWiseTxnLimit SET
sendTodays = ISNULL(sendTodays, 0) + @cAmt
WHERE userId = @userId AND ISNULL(isActive, 'N') = 'Y'
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Transaction Approved Successfully', @tranId
END
ELSE IF @flag = 'reject'
BEGIN
BEGIN TRANSACTION
UPDATE remitTran SET
tranStatus = 'Cancel' --Cancel
,approvedBy = @user
,approvedDate = GETDATE()
,approvedDateLocal = DBO.FNADateFormatTZ(GETDATE(), @user)
WHERE id = @tranId
--A/C Master
SELECT @cAmt = cAmt FROM remitTran WHERE id = @tranId
UPDATE creditLimit SET
todaysSent = todaysSent - @cAmt
WHERE agentId = (
SELECT parentId FROM agentMaster WHERE agentId = (
SELECT agentId FROM applicationUsers WHERE userName = @user
)
)
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC [proc_errorHandler] 0, 'Transaction cancelled successfully', @tranId
END
ELSE IF @flag = 'details'
BEGIN
SELECT @sBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
SELECT @tranStatus = tranStatus FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
IF (@tranStatus IS NOT NULL)
BEGIN
INSERT INTO tranViewHistory(
controlNumber
,tranViewType
,agentId
,createdBy
,createdDate
)
SELECT
@controlNoEncrypted
,'A'
,@sBranch
,@user
,GETDATE()
END
ELSE
BEGIN
EXEC proc_errorHandler 1000, 'No Transaction Found', @controlNoEncrypted
RETURN
END
IF EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND sBranch <> @sBranch)
BEGIN
EXEC proc_errorHandler 1, 'Transaction is not in authorized mode', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'CancelRequest')
BEGIN
EXEC proc_errorHandler 1, 'Transaction has been requested for cancel', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Payment')
BEGIN
EXEC proc_errorHandler 1, 'Transaction already been approved and ready for payment', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Paid')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is already been paid', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Cancel')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is cancelled', @controlNoEncrypted
RETURN
END
IF (@tranStatus = 'Lock')
BEGIN
EXEC proc_errorHandler 1, 'Transaction is locked. Please Contact HO', @controlNoEncrypted
RETURN
END
EXEC proc_errorHandler 0, 'Transaction Found', @controlNoEncrypted
SELECT
trn.id
,controlNo = dbo.FNADecryptString(trn.controlNo)
,sMemId = sen.membershipId
,sCustomerId = sen.customerId
,senderName = sen.firstName + ISNULL( ' ' + sen.middleName, '') + ISNULL( ' ' + sen.lastName1, '') + ISNULL( ' ' + sen.lastName2, '')
,sCountryName = sen.country
,sStateName = sen.state
,sDistrict = sen.district
,sCity = sen.city
,sAddress = sen.address
,sContactNo = COALESCE(sen.mobile, sen.homephone, sen.workphone)
,sIdType = sen.idType
,sIdNo = sen.idNumber
,sValidDate = sen.validDate
,sEmail = sen.email
,rMemId = rec.membershipId
,rCustomerId = rec.customerId
,receiverName = rec.firstName + ISNULL( ' ' + rec.middleName, '') + ISNULL( ' ' + rec.lastName1, '') + ISNULL( ' ' + rec.lastName2, '')
,rCountryName = rec.country
,rStateName = rec.state
,rDistrict = rec.district
,rCity = rec.city
,rAddress = rec.address
,rContactNo = COALESCE(rec.mobile, rec.homephone, rec.workphone)
,rIdType = rec.idType
,rIdNo = rec.idNumber
,sBranchName = trn.sBranchName
,sAgentName = CASE WHEN trn.sAgent = trn.sBranch THEN trn.sSuperAgentName ELSE trn.sAgentName END
,sAgentLocation = sLoc.districtName
,sAgentDistrict = sa.agentDistrict
,sAgentCity = sa.agentCity
,sAgentCountry = sa.agentCountry
,pAgentName = CASE WHEN trn.pAgentName = trn.pBranchName THEN trn.pSuperAgentName ELSE trn.pAgentName END
,pBranchName = trn.pBranchName
,pAgentCountry = trn.pCountry
,pAgentState = trn.pState
,pAgentDistrict = trn.pDistrict
,pAgentLocation = pLoc.districtName
,pAgentCity = pa.agentCity
,pAgentAddress = pa.agentAddress
,trn.tAmt
,trn.serviceCharge
,handlingFee = ISNULL(trn.handlingFee, 0)
,trn.cAmt
,trn.pAmt
,relationship = ISNULL(trn.relWithSender, '-')
,purpose = ISNULL(trn.purposeOfRemit, '-')
,sourceOfFund = ISNULL(trn.sourceOfFund, '-')
,collMode = trn.collMode
,trn.collCurr
,paymentMethod = trn.paymentMethod
,trn.payoutCurr
,BranchName = trn.pBankBranchName
,trn.accountNo
,BankName = trn.pBankName
,trn.tranStatus
,trn.payStatus
,payoutMsg = ISNULL(trn.pMessage, '-')
,trn.createdBy
,trn.createdDate
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
LEFT JOIN agentMaster sa WITH(NOLOCK) ON trn.sBranch = sa.agentId
LEFT JOIN agentMaster pa WITH(NOLOCK) ON trn.pBranch = pa.agentId
LEFT JOIN api_districtList sLoc WITH(NOLOCK) ON sa.agentLocation = sLoc.districtCode
LEFT JOIN api_districtList pLoc WITH(NOLOCK) ON trn.pLocation = pLoc.districtCode
WHERE
trn.controlNo = LTRIM(RTRIM(@controlNoEncrypted))
END
--Load Data For Approve For Agent-----------------------------------------------------------------------------------------
ELSE IF @flag = 's'
BEGIN
SELECT @sBranch = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
SET @table = '(
SELECT
trn.id
,controlNo = dbo.FNADecryptString(trn.controlNo)
,sCustomerId = sen.customerId
,senderName = sen.firstName + ISNULL( '' '' + sen.middleName, '''') + ISNULL( '' '' + sen.lastName1, '''') + ISNULL( '' '' + sen.lastName2, '''')
,sCountryName = sen.country
,sStateName = sen.state
,sCity = sen.city
,sAddress = sen.address
,rCustomerId = rec.customerId
,receiverName = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
,rCountryName = rec.country
,rStateName = rec.state
,rCity = rec.city
,rAddress = rec.address
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.tranStatus = ''Hold'' AND
trn.payStatus = ''Unpaid'' AND
trn.approvedBy IS NULL AND
(trn.sBranch = ''' + CAST(@sBranch AS VARCHAR) + ''' OR trn.sAgent = ''' + CAST(@sBranch AS VARCHAR) + ''')
'
SET @sql_filter = ''
IF @controlNo IS NOT NULL
SET @table = @table + ' AND trn.controlNo = ''' + LTRIM(RTRIM(@controlNoEncrypted)) + ''''
IF @sFirstName IS NOT NULL
SET @table = @table + ' AND sen.firstName LIKE ''' + @sFirstName + '%'''
IF @sMiddleName IS NOT NULL
SET @table = @table + ' AND sen.middleName LIKE ''' + @sMiddleName + '%'''
IF @sLastName1 IS NOT NULL
SET @table = @table + ' AND sen.lastName1 LIKE ''' + @sLastName1 + '%'''
IF @sLastName2 IS NOT NULL
SET @table = @table + ' AND sen.lastName2 LIKE ''' + @sLastName2 + '%'''
IF @sMemId IS NOT NULL
SET @table = @table + ' AND sen.membershipId = ' + CAST(@sMemId AS VARCHAR)
IF @rFirstName IS NOT NULL
SET @table = @table + ' AND rec.firstName LIKE ''' + @rFirstName + '%'''
IF @rMiddleName IS NOT NULL
SET @table = @table + ' AND rec.middleName LIKE ''' + @rMiddleName + '%'''
IF @rLastName1 IS NOT NULL
SET @table = @table + ' AND rec.lastName1 LIKE ''' + @rLastName1 + '%'''
IF @rLastName2 IS NOT NULL
SET @table = @table + ' AND rec.lastName2 LIKE ''' + @rLastName2 + '%'''
IF @rMemId IS NOT NULL
SET @table = @table + ' AND c.membershipId = ' + CAST(@rMemId AS VARCHAR)
SET @select_field_list ='
id
,controlNo
,sCustomerId
,senderName
,sCountryName
,sStateName
,sCity
,sAddress
,rCustomerId
,receiverName
,rCountryName
,rStateName
,rCity
,rAddress
'
SET @table = @table + ') x'
EXEC dbo.proc_paging
@table
,@sql_filter
,@select_field_list
,@extra_field_list
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
END
----------------------------------------------------------------------------------------------------------------
ELSE IF @flag = 'sho'
BEGIN
SET @table = '(
SELECT
trn.id
,controlNo = dbo.FNADecryptString(trn.controlNo)
,sCustomerId = sen.customerId
,senderName = sen.firstName + ISNULL( '' '' + sen.middleName, '''') + ISNULL( '' '' + sen.lastName1, '''') + ISNULL( '' '' + sen.lastName2, '''')
,sCountryName = sen.country
,sStateName = sen.state
,sCity = sen.city
,sAddress = sen.address
,rCustomerId = rec.customerId
,receiverName = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
,rCountryName = rec.country
,rStateName = rec.state
,rCity = rec.city
,rAddress = rec.address
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
INNER JOIN applicationUsers au WITH(NOLOCK) ON trn.createdBy = au.userName
WHERE
trn.tranStatus = ''Hold'' AND
trn.payStatus = ''Unpaid'' AND
trn.approvedBy IS NULL AND
au.agentId = dbo.FNAGetHOAgentId()
'
SET @sql_filter = ''
IF @controlNo IS NOT NULL
SET @table = @table + ' AND trn.controlNo = ''' + @controlNoEncrypted + ''''
if @cAmt=0
set @cAmt=null
IF @cAmt IS NOT NULL
SET @table = @table + ' AND trn.cAmt = ''' + CAST(@cAmt AS VARCHAR)+ ''''
IF @sFirstName IS NOT NULL
SET @table = @table + ' AND sen.firstName LIKE ''' + @sFirstName + '%'''
IF @sMiddleName IS NOT NULL
SET @table = @table + ' AND sen.middleName LIKE ''' + @sMiddleName + '%'''
IF @sLastName1 IS NOT NULL
SET @table = @table + ' AND sen.lastName1 LIKE ''' + @sLastName1 + '%'''
IF @sLastName2 IS NOT NULL
SET @table = @table + ' AND sen.lastName2 LIKE ''' + @sLastName2 + '%'''
IF @sMemId IS NOT NULL
SET @table = @table + ' AND sen.membershipId = ' + CAST(@sMemId AS VARCHAR)
IF @rFirstName IS NOT NULL
SET @table = @table + ' AND rec.firstName LIKE ''' + @rFirstName + '%'''
IF @rMiddleName IS NOT NULL
SET @table = @table + ' AND rec.middleName LIKE ''' + @rMiddleName + '%'''
IF @rLastName1 IS NOT NULL
SET @table = @table + ' AND rec.lastName1 LIKE ''' + @rLastName1 + '%'''
IF @rLastName2 IS NOT NULL
SET @table = @table + ' AND rec.lastName2 LIKE ''' + @rLastName2 + '%'''
IF @rMemId IS NOT NULL
SET @table = @table + ' AND c.membershipId = ' + CAST(@rMemId AS VARCHAR)
SET @select_field_list ='
id
,controlNo
,sCustomerId
,senderName
,sCountryName
,sStateName
,sCity
,sAddress
,rCustomerId
,receiverName
,rCountryName
,rStateName
,rCity
,rAddress
'
SET @table = @table + ') x'
--select @table
--return;
EXEC dbo.proc_paging
@table
,@sql_filter
,@select_field_list
,@extra_field_list
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
END
----------------------------------------------------------------------------------------------------------------
ELSE IF @flag = 'va' --Verify Amount
BEGIN
IF NOT EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted)
BEGIN
EXEC proc_errorHandler 1, 'Transaction not found', NULL
END
IF NOT EXISTS(SELECT 'X' FROM remitTran WITh(NOLOCK) WHERE controlNo = @controlNoEncrypted AND cAmt = @cAmt)
BEGIN
EXEC proc_errorHandler 1, 'Collection amount doesnot match. Please enter the correct amount', NULL
RETURN
END
EXEC proc_errorHandler 0, 'Success', NULL
END
GO