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
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
|