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.
 
 
 

290 lines
9.0 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_transactionUtility] Script Date: 7/4/2019 11:35:48 AM ******/
DROP PROCEDURE [dbo].[proc_transactionUtility]
GO
/****** Object: StoredProcedure [dbo].[proc_transactionUtility] Script Date: 7/4/2019 11:35:48 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[proc_transactionUtility] (
@flag VARCHAR(50)
,@user VARCHAR(50) = NULL
,@controlNo VARCHAR(100) = NULL
,@agentId VARCHAR(100) = NULL
,@requestXML VARCHAR(MAX) = NULL
,@responseXML VARCHAR(MAX) = NULL
,@id VARCHAR(50) = NULL
,@msg VARCHAR(200) = NULL
,@holdTranId VARCHAR(50) = NULL
,@createdDate VARCHAR(50) = NULL
,@count INT = NULL
,@pass VARCHAR(50) = NULL
,@ragent VARCHAR(100) = NULL
,@agentCode VARCHAR(50) = NULL
,@sortBy VARCHAR(50) = NULL
,@sortOrder VARCHAR(5) = NULL
,@pageSize INT = NULL
,@pageNumber INT = NULL
,@bankType CHAR(1) = NULL
,@fromDate VARCHAR(50) = NULL
,@toDate VARCHAR(50) = NULL
,@rCountry VARCHAR(50) = NULL
,@bankCode VARCHAR(max) = NULL
,@accountNo VARCHAR(100) = NULL
,@accountName VARCHAR(100) = NULL
,@responseCode VARCHAR(100) = NULL
,@bankName VARCHAR(100) = NULL
,@superAgentId VARCHAR(50) = NULL
,@targetCountries VARCHAR(MAX) = NULL
)
AS
/*
*/
SET XACT_ABORT ON
SET NOCOUNT ON
BEGIN TRY
--Get list of agent and date for Sync Status in Bulk (Called by Schedular)
DECLARE
@table VARCHAR(MAX)
,@sql VARCHAR(MAX)
,@select_field_list VARCHAR(MAX)
,@riaAgentId INT = 56778
--Reprocess List
IF @flag = 'rp'
BEGIN
IF @sortBy IS NULL
SET @sortBy = 'id'
IF @sortOrder IS NULL
SET @sortOrder = 'ASC'
SET @table = '(
SELECT DISTINCT
trn.id
,ISNULL(trn.holdTranId,trn.id) holdTranId
,controlNo = dbo.FNADecryptString(trn.controlNo)
,sAgent = ams.agentName
,sBranchName
,sCountry = trn.sCountry
,rAgent = amr.agentName
,rCountry = trn.pCountry
,sender = sen.firstName + ISNULL( '' '' + sen.middleName, '''') + ISNULL( '' '' + sen.lastName1, '''') + ISNULL( '' '' + sen.lastName2, '''')
,receiver = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
,accountNo = trn.accountNo
,amt = CAST(trn.cAmt AS DECIMAL(18, 2))
,createdDate = CONVERT(VARCHAR, trn.createdDate, 101)
,createdBy = trn.createdBy
,collMode = trn.collMode
,ScOrderNo = ''''
FROM remitTran trn WITH(NOLOCK)
LEFT JOIN agentMaster ams WITH(NOLOCK) ON trn.sAgent = ams.agentId
LEFT JOIN agentMaster amr WITH(NOLOCK) ON trn.pAgent = amr.agentId
INNER JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
INNER JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
WHERE trn.approvedBy IS NOT NULL AND trn.payStatus =''Unpaid''
AND tranStatus = ''payment'' AND trn.pAgent = 1056 AND pCountry=''Nepal''
'
IF @id IS NOT NULL
SET @table = @table + ' AND trn.id = ''' + @id + ''''
IF @createdDate IS NOT NULL
SET @table = @table + ' AND TRN.createdDate between '''+@createdDate+''' and '''+@createdDate+' 23:59:59'''
IF @holdTranId IS NOT NULL
SET @table = @table + ' AND TRN.holdTranId = '''+@holdTranId+''''
IF @controlNo IS NOT NULL
SET @table = @table + ' AND TRN.controlNo = dbo.FNAEncryptString('''+@controlNo+''')'
IF @ragent IS NOT NULL
SET @table = @table + ' AND amr.agentName = '''+@ragent+''''
if @rCountry IS NOT NULL
SET @table = @table + ' AND trn.pCountry = '''+@rCountry+''''
if @superAgentId IS NOT NULL
SET @table = @table + ' AND trn.pSuperAgent = '''+@superAgentId+''''
IF @fromDate IS NOT NULL and @toDate IS NOT NULL
SET @table = @table + ' AND trn.createdDate BETWEEN ''' + @fromDate +''' AND '''+ @toDate +' 23:59:59'''
SET @table = @table + ' ) x '
SET @select_field_list ='
id
,holdTranId
,controlNo
,sAgent
,sBranchName
,sCountry
,rAgent
,collMode
,rCountry
,ScOrderNo
,sender
,receiver
,accountNo
,amt
,createdDate
,createdBy
'
PRINT @table
EXEC dbo.proc_paging
@table
,null
,@select_field_list
,null
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
RETURN
END
DECLARE @controlNoEnc VARCHAR(100) = dbo.FNAencryptString(@controlNo)
IF @flag IN ('a')
BEGIN
SELECT
controlNo = dbo.FnaDecryptString(controlNo)
,benefName = tr.firstName + ISNULL(' ' + tr.middleName,'') + ISNULL(' ' + tr.lastName1,'')
,benefAdddress = tr.address
,benefTel = tr.homePhone
,benefMobile = tr.mobile
,benefIdType = tr.idType
,benefAccIdNo = tr.idNumber
,senderName = ts.firstName + ISNULL(' ' + ts.middleName,'') + ISNULL(' ' + ts.lastName1,'')
,senderAddress = ts.address
,senderTel = ts.homePhone
,senderMobile = ts.mobile
,senderIdType = ts.idType
,senderIdNo = ts.idNumber
,purpose = rt.purposeOfRemit
,remitType = rt.paymentMethod
,rCurrency =rt.payoutCurr
,localAmount = rt.tAmt
,amount = rt.pAmt
,serviceCharge = rt.serviceCharge
,rCommission = rt.pAgentComm
,exchangeRate = rt.customerRate
,refNo = rt.id
,remarks = rt.pMessage
,[source] = rt.sourceOfFund
,tranStatus = rt.tranStatus
,payStatus = rt.payStatus
,paidBy = rt.paidBy
,paidDate = rt.paidDate
,approvedDate = CONVERT(VARCHAR, rt.approvedDate, 101)
FROM remitTran rt
INNER JOIN tranSenders ts WITH(NOLOCK) ON rt.id = ts.tranId
INNER JOIN tranReceivers tr WITH(NOLOCK) ON rt.id = tr.tranId
WHERE rt.controlNo = @controlNoEnc
END
IF @flag IN ('gbl-a')
BEGIN
SELECT
controlNo = dbo.FnaDecryptString(controlNo)
,benefName = tr.firstName + ISNULL(' ' + tr.middleName,'') + ISNULL(' ' + tr.lastName1,'')
--,benefAdddress = tr.address
--,benefTel = tr.homePhone
--,benefMobile = tr.mobile
--,benefIdType = tr.idType
--,benefAccIdNo = tr.idNumber
,senderName = ts.firstName + ISNULL(' ' + ts.middleName,'') + ISNULL(' ' + ts.lastName1,'')
--,senderAddress = ts.address
--,senderTel = ts.homePhone
--,senderMobile = ts.mobile
--,senderIdType = ts.idType
--,senderIdNo = ts.idNumber
--,purpose = rt.purposeOfRemit
,remitType = rt.paymentMethod
--,rCurrency =rt.payoutCurr
,localAmount = rt.tAmt
,amount = rt.pAmt
,serviceCharge = rt.serviceCharge
--,rCommission = rt.pAgentComm
,exchangeRate = rt.customerRate
--,refNo = rt.id
--,remarks = rt.pMessage
--,[source] = rt.sourceOfFund
,tranStatus = rt.tranStatus
,payStatus = rt.payStatus
--,paidBy = rt.paidBy
--,paidDate = rt.paidDate
,approvedDate = CONVERT(VARCHAR, rt.approvedDate, 101)
FROM remitTran rt
INNER JOIN tranSenders ts WITH(NOLOCK) ON rt.id = ts.tranId
INNER JOIN tranReceivers tr WITH(NOLOCK) ON rt.id = tr.tranId
WHERE rt.controlNo = @controlNoEnc
END
IF @flag = 'rpid'
BEGIN
--Check for authentication
IF dbo.FNACheckWsAuthentication(@user, @pass, @agentCode) <> 0
BEGIN
SELECT id, holdTranId FROM remitTran WITH(NOLOCK) WHERE 1 = 2
RETURN
END
UPDATE dbo.jobRunLog SET lastExecutionDate = GETDATE() WHERE jobName = 'Reprocess transaction'
IF ISNULL(@count, 0) < 1 SET @count = 1
--Get the list of transaction ids to process
IF OBJECT_ID('tempdb..#tempTran') IS NOT NULL
DROP TABLE #tempTran
CREATE TABLE #tempTran(id BIGINT)
INSERT INTO #tempTran(id)
SELECT DISTINCT id FROM (
SELECT TOP (50)
trn.id
FROM remitTran trn WITH(READPAST)
INNER JOIN serviceTypeMaster stm WITH(NOLOCK) ON trn.paymentMethod = stm.typeTitle
WHERE trn.approvedBy IS NOT NULL
AND trn.payStatus ='Unpaid'
AND trn.tranStatus = 'Payment'
AND ISNULL(trn.lockStatus, 'unlocked') <> 'locked'
ORDER BY trn.id ASC
) x
--Lock the transactions to make it unavailable for another process call
UPDATE remitTran SET
lockStatus = 'locked'
,lockedBy = 'system'
,lockedDate = GETDATE()
FROM remitTran rt
INNER JOIN #tempTran t ON rt.id = t.id
DECLARE @currentDate DATETIME = GETDATE()
DECLARE @txnCount INT = 0
SELECT @txnCount = COUNT('X') FROM #tempTran
IF @txnCount > 0
BEGIN
--Log with the number of transactions processed in a single batch run
INSERT INTO reprocessScheduleRunLog(createdDate, txnCount, processName)
SELECT @currentDate, txnCount = COUNT('X'), 'Process third party transaction' FROM #tempTran
END
--Return the list of transaction ids to be processed
SELECT *, processId = SCOPE_IDENTITY() FROM #tempTran
--dispose temp table
IF OBJECT_ID('tempdb..#tempTran') IS NOT NULL
DROP TABLE #tempTran
RETURN
END
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
SELECT 1 errorCode, ERROR_MESSAGE() msg, NULL id
SELECT ERROR_LINE()
END CATCH
GO