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.
 
 
 

215 lines
15 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_approveTranAPI_v2] Script Date: 9/27/2019 1:30:14 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE proc [dbo].[proc_approveTranAPI_v2] (
@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
@code VARCHAR(50) = NULL
,@userName VARCHAR(50) = NULL
,@password VARCHAR(50) = NULL
DECLARE @sBranch INT, @bankId INT, @pBankBranch INT, @branchMapCode VARCHAR(8), @bankBranchName VARCHAR(200), @pAgentComm MONEY
EXEC proc_GetAPI @user OUTPUT,@code OUTPUT, @userName OUTPUT, @password OUTPUT
DECLARE @controlNoEncrypted VARCHAR(100)
SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
IF @flag = 'approve' --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
SELECT 1 Code, @agentRefId agent_refId, 'Process denied for same user' [message], @controlNo refId
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 0, 'Transaction is not in authorized mode', @tranId
RETURN
END
END
IF (@tranStatus = 'CancelRequest')
BEGIN
EXEC proc_errorHandler 0, 'Transaction has been requested for cancel', @tranId
RETURN
END
IF (@tranStatus = 'Payment')
BEGIN
EXEC proc_errorHandler 0, 'Transaction already been approved and ready for payment', @tranId
RETURN
END
IF (@tranStatus = 'Paid')
BEGIN
EXEC proc_errorHandler 0, 'Transaction is not in authorized mode', @tranId
RETURN
END
IF (@tranStatus = 'Cancel')
BEGIN
EXEC proc_errorHandler 0, 'Transaction is cancelled', @tranId
RETURN
END
IF (@tranStatus = 'Lock')
BEGIN
EXEC proc_errorHandler 0, 'Transaction is locked. Please Contact HO', @tranId
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 0, 'Transfer Amount exceeds user per transaction limit.', @tranId
RETURN
END
IF(@sendTodays > @sendPerDay)
BEGIN
EXEC proc_errorHandler 0, 'User Per Day Transaction Limit exceeded.', @tranId
RETURN
END
SELECT @userId = userId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user AND ISNULL(isDeleted, 'N') = 'N'
SELECT @cAmt = cAmt FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
UPDATE remitTran SET
tranStatus = 'Payment' --Payment
,approvedBy = @user
,approvedDate = dbo.FNAGetDateInNepalTZ()
,approvedDateLocal = dbo.FNAGetDateInNepalTZ()
WHERE controlNo = @controlNoEncrypted
UPDATE userWiseTxnLimit SET
sendTodays = ISNULL(sendTodays, 0) + @cAmt
WHERE userId = @userId
EXEC proc_errorHandler 0, 'Transaction Approved Successfully', @tranId
--SELECT @code, @userName, @password, @controlNo, @agentRefId
--RETURN
DECLARE
@rCity VARCHAR(50) = NULL
,@payoutMethod CHAR(1) = NULL
,@sFullName VARCHAR(150) = NULL
,@sAddress VARCHAR(100) = NULL
,@sContactNo VARCHAR(20) = NULL
,@sIdType VARCHAR(50) = NULL
,@sIdNo VARCHAR(20) = NULL
,@sEmail VARCHAR(100) = NULL
,@rFullName VARCHAR(150) = NULL
,@rAddress VARCHAR(100) = NULL
,@rContactNo VARCHAR(20) = NULL
,@rIdType VARCHAR(50) = NULL
,@rIdNo VARCHAR(20) = NULL
,@relationship VARCHAR(50) = NULL
,@deliveryMethod VARCHAR(100) = NULL
,@pLocation INT = NULL
,@accountNo VARCHAR(50) = NULL
,@serviceCharge MONEY = NULL
,@sAgentComm MONEY = NULL
,@pAmt MONEY = NULL
,@mapCode VARCHAR(10) = NULL
,@remarks VARCHAR(200) = NULL
SELECT
@sBranch = sBranch
,@sFullName = sen.firstName + ISNULL( ' ' + sen.middleName, '') + ISNULL( ' ' + sen.lastName1, '') + ISNULL( ' ' + sen.lastName2, '')
,@sAddress = sen.[address]
,@sContactNo = sen.mobile
,@sIdType = sen.idType
,@sIdNo = sen.idNumber
,@sEmail = sen.email
,@rFullName = rec.firstName + ISNULL( ' ' + rec.middleName, '') + ISNULL( ' ' + rec.lastName1, '') + ISNULL( ' ' + rec.lastName2, '')
,@rAddress = rec.[address]
,@rContactNo = rec.mobile
,@rIdType = rec.idType
,@rIdNo = rec.idNumber
,@rCity = rec.city
,@relationship = trn.relWithSender
,@deliveryMethod = trn.paymentMethod
,@serviceCharge = trn.serviceCharge
,@cAmt = trn.cAmt
,@sAgentComm = trn.sAgentComm
,@pAgentComm = trn.pAgentComm
,@pAmt = trn.pAmt
,@pLocation = trn.pLocation
,@accountNo = trn.accountNo
,@pBankBranch = trn.pBankBranch
,@bankId = trn.pBank
,@user = trn.createdBy
,@remarks = trn.pMessage
,@tranId = trn.id
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
WHERE controlNo = @controlNoEncrypted
SELECT @mapCode = mapCodeInt FROM agentMaster WITH(NOLOCK) WHERE agentId = @sBranch
SELECT @payoutMethod = CASE WHEN @deliveryMethod = 'Cash Payment' THEN 'C' WHEN @deliveryMethod = 'Bank Deposit' THEN 'B' END
IF @deliveryMethod = 'Bank Deposit'
BEGIN
SELECT @branchMapCode = mapCodeDom FROM agentMaster WITH(NOLOCK) WHERE agentId = @bankId
SELECT @bankBranchName = agentAddress FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBankBranch
END
IF @remarks IS NOT NULL
BEGIN
EXEC proc_addCommentAPI @flag = 'i', @controlNo = @controlNo, @user = @user, @message = @remarks, @agentRefId = NULL
END
END
GO