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.
361 lines
10 KiB
361 lines
10 KiB
USE [FastMoneyPro_Remit]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_complianceReleaseReport] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
DROP PROCEDURE [dbo].[proc_complianceReleaseReport]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_complianceReleaseReport] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
CREATE procEDURE [dbo].[proc_complianceReleaseReport](
|
|
--declare
|
|
@flag VARCHAR(50) = NULL
|
|
,@user VARCHAR(30) = NULL
|
|
,@fromDate VARCHAR(50) = NULL
|
|
,@toDate VARCHAR(50) = NULL
|
|
,@releasedBy VARCHAR(50) = NULL
|
|
,@includesystem CHAR(1) = NULL
|
|
,@reportType VARCHAR(20) = NULL
|
|
,@idNumber VARCHAR(20) = NULL
|
|
,@customerName VARCHAR(100) = NULL
|
|
,@holdReason VARCHAR(50) = NULL
|
|
)
|
|
AS
|
|
BEGIN TRY
|
|
SET NOCOUNT ON
|
|
--SELECT @flag='s',@fromDate='2016-04-21',@toDate='2016-04-26',@releasedBy=null,@includesystem='N',@idNumber=null,@customerName=null,@reportType='Detail-Report',@holdReason=null
|
|
IF @flag ='s'
|
|
BEGIN
|
|
|
|
DECLARE @SQL VARCHAR(MAX)
|
|
|
|
IF OBJECT_ID(N'tempdb..#REASON') IS NOT NULL
|
|
DROP TABLE #REASON
|
|
|
|
SELECT
|
|
csDetailRecId
|
|
,condition
|
|
,[Remarks] = RTRIM(LTRIM(dbo.FNAGetDataValue(condition) + ' ' +
|
|
CASE WHEN checkType = 'Sum' THEN 'Transaction Amount'
|
|
WHEN checkType = 'Count' THEN 'Transaction Count' END
|
|
+ ' exceeds ' + CAST(parameter AS VARCHAR) + ' limit within ' + CAST(period AS VARCHAR)+ ' day(s) ' + dbo.FNAGetDataValue(criteria) ))
|
|
INTO #REASON
|
|
FROM csDetailRec cdr (NOLOCK)
|
|
|
|
CREATE NONCLUSTERED INDEX idx_CSDETAILrecID ON #REASON(CSDETAILrecID, [Remarks])
|
|
|
|
IF OBJECT_ID(N'tempdb..#TEMP') IS NOT NULL
|
|
DROP TABLE #TEMP
|
|
|
|
CREATE TABLE #TEMP
|
|
(
|
|
TRANID BIGINT,
|
|
APPROVEDDATE DATETIME,
|
|
APPROVEDBY VARCHAR(200)
|
|
)
|
|
|
|
SET @SQL = 'SELECT
|
|
DISTINCT TRANID, APPROVEDDATE, ISNULL(APPROVEDBY,''SYSTEM'') APPROVEDBY
|
|
FROM remittrancompliance WITH (NOLOCK)
|
|
WHERE APPROVEDDATE BETWEEN '''+ @fromDate+''' AND '''+ @toDate + ' 23:59:59:998'''
|
|
|
|
|
|
IF @includesystem='N'
|
|
BEGIN
|
|
SET @SQL=@SQL +'AND APPROVEDBY<>''SYSTEM'''
|
|
END
|
|
|
|
INSERT INTO #TEMP(TRANID,APPROVEDDATE,APPROVEDBY)
|
|
EXEC (@SQL)
|
|
|
|
--PRINT @SQL
|
|
|
|
CREATE NONCLUSTERED INDEX idx_temp ON #TEMP(TRANID, APPROVEDDATE) INCLUDE (APPROVEDBY)
|
|
ALTER TABLE #TEMP ADD TRANDATE DATETIME,TAT BIGINT,REASON VARCHAR(MAX), approvedremarks VARCHAR(MAX)
|
|
|
|
UPDATE t SET
|
|
TRANDATE= CREATEDDATELOCAL
|
|
FROM #TEMP t
|
|
INNER JOIN VWREMITTRANALL VW WITH (NOLOCK) ON T.TRANID = VW.HOLDTRANID
|
|
|
|
UPDATE t SET
|
|
TRANDATE= CREATEDDATELOCAL
|
|
FROM #TEMP t
|
|
INNER JOIN VWREMITTRANALL VW WITH (NOLOCK) ON T.TRANID = ID
|
|
WHERE HOLDTRANID IS NULL
|
|
|
|
UPDATE #TEMP SET TAT = DATEDIFF(SECOND, TRANDATE, approvedDate)
|
|
UPDATE t SET
|
|
approvedremarks = rc.approvedremarks
|
|
FROM #TEMP t
|
|
INNER JOIN remittrancompliance rc WITH (NOLOCK) on t.tranId=rc.tranId
|
|
|
|
|
|
IF @reportType='Summary-Date'
|
|
BEGIN
|
|
SELECT
|
|
[Released Date]= CONVERT(VARCHAR(10),approvedDate, 102)
|
|
,[Compliance_Average TAT(Min)]= AVG(TAT)/60
|
|
,[Compliance_MAX TAT(Min)]= MAX(TAT)/60
|
|
,[Compliance_MIN TAT(Sec)]= MIN(TAT)
|
|
,[Compliance_TXN]= COUNT(*)
|
|
FROM #TEMP
|
|
GROUP BY CONVERT(VARCHAR(10),approvedDate, 102)
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
[Released Date]= 'Total'
|
|
,[Compliance_Average TAT(Min)]= AVG(TAT)/60
|
|
,[Compliance_MAX TAT(Min)]= MAX(TAT)/60
|
|
,[Compliance_MIN TAT(Sec)]= MIN(TAT)
|
|
,[Compliance_TXN]= COUNT(*)
|
|
FROM #TEMP
|
|
ORDER BY CONVERT(VARCHAR(10),approvedDate, 102)
|
|
END
|
|
|
|
IF @reportType='Summary-User'
|
|
BEGIN
|
|
SELECT
|
|
[Released By],[Compliance_Average TAT(Min)],[Compliance_MAX TAT(Min)],[Compliance_MIN TAT(Sec)],[Compliance_TXN]
|
|
FROM (
|
|
SELECT
|
|
1 SN
|
|
,[Released By]= approvedBy
|
|
,[Compliance_Average TAT(Min)]= AVG(TAT)/60
|
|
,[Compliance_MAX TAT(Min)]= MAX(TAT)/60
|
|
,[Compliance_MIN TAT(Sec)]= MIN(TAT)
|
|
,[Compliance_TXN]= COUNT(*)
|
|
FROM #TEMP
|
|
GROUP BY approvedBy
|
|
UNION ALL
|
|
|
|
SELECT
|
|
2 SN,
|
|
[Released By]= 'Total'
|
|
,[Compliance_Average TAT(Min)]= AVG(TAT)/60
|
|
,[Compliance_MAX TAT(Min)]= MAX(TAT)/60
|
|
,[Compliance_MIN TAT(Sec)]= MIN(TAT)
|
|
,[Compliance_TXN]= COUNT(*)
|
|
FROM #TEMP
|
|
) x
|
|
ORDER BY SN, [Released By]
|
|
END
|
|
|
|
|
|
IF @reportType='Summary-Reason'
|
|
BEGIN
|
|
SELECT
|
|
R.Remarks Reason,COUNT(*) TXN
|
|
FROM remittrancompliance RC WITH (NOLOCK)
|
|
INNER JOIN #TEMP T ON RC.TRANID=T.TRANID
|
|
INNER JOIN #REASON R ON RC.CSDETAILTRANID=R.csDetailRecId
|
|
WHERE RC.REASON IS NULL
|
|
GROUP BY Remarks
|
|
|
|
UNION ALL
|
|
SELECT
|
|
RC.reason, COUNT(*) TXN
|
|
FROM remittrancompliance RC WITH (NOLOCK)
|
|
INNER JOIN #TEMP T ON RC.TRANID=T.TRANID
|
|
WHERE RC.REASON IS NOT NULL
|
|
GROUP BY RC.reason
|
|
UNION ALL
|
|
SELECT 'Unique Transaction' reason, COUNT(*) FROM #TEMP
|
|
END
|
|
|
|
IF @reportType='Detail-Report'
|
|
BEGIN
|
|
IF @holdReason is NOT NULL
|
|
BEGIN
|
|
ALTER TABLE #TEMP ADD FLAG INT
|
|
UPDATE #TEMP SET FLAG = 1 FROM #TEMP T
|
|
INNER JOIN remittrancompliance RC WITH (NOLOCK) ON T.TRANID=RC.TRANID
|
|
WHERE rc.REASON IS NOT NULL
|
|
AND RC.REASON LIKE '%'+@holdReason+'%'
|
|
|
|
UPDATE #TEMP SET FLAG=1 FROM #TEMP T
|
|
INNER JOIN remittrancompliance RC WITH (NOLOCK) ON T.TRANID=RC.TRANID
|
|
INNER JOIN (
|
|
SELECT * FROM #REASON WHERE REMARKS LIKE '%'+ @holdReason+'%'
|
|
) X ON RC.CSDETAILTRANID=X.CSDETAILRECID
|
|
WHERE rc.REASON IS NULL
|
|
DELETE FROM #TEMP WHERE FLAG IS NULL
|
|
END
|
|
|
|
;WITH temptable
|
|
AS
|
|
(
|
|
SELECT
|
|
t.TRANID,rc.REASON Remarks
|
|
FROM #TEMP T
|
|
INNER JOIN remittrancompliance RC WITH (NOLOCK) ON T.TRANID=RC.TRANID
|
|
WHERE rc.REASON IS NOT NULL
|
|
GROUP BY t.TRANID,rc.REASON
|
|
UNION ALL
|
|
SELECT
|
|
t.TRANID,r.Remarks
|
|
FROM #TEMP T
|
|
INNER JOIN remitTranCompliance RC WITH (NOLOCK) ON T.TRANID=RC.TRANID
|
|
INNER JOIN #REASON R WITH (NOLOCK) ON R.CSDETAILrecID=RC.csDetailTranId
|
|
WHERE rc.REASON IS NULL
|
|
GROUP BY t.TRANID,r.Remarks
|
|
)
|
|
|
|
UPDATE #TEMP SET reason=x.DATASOURCE
|
|
FROM #TEMP t
|
|
INNER JOIN (
|
|
SELECT
|
|
ct.tranid,
|
|
STUFF
|
|
(
|
|
(
|
|
SELECT
|
|
',' + Remarks
|
|
FROM (
|
|
SELECT
|
|
TRANID, Remarks
|
|
FROM temptable
|
|
) sht
|
|
WHERE sht.tranid = ct.tranid
|
|
FOR XML PATH('')
|
|
,type
|
|
).value('.', 'varchar(max)'), 1, 1, ''
|
|
) AS DATASOURCE
|
|
FROM (
|
|
SELECT
|
|
TRANID
|
|
FROM #TEMP
|
|
GROUP BY TRANID
|
|
) ct
|
|
--INNER JOIN #TEMP cd ON ct.TRANID = cd.TRANID
|
|
) x ON t.TRANID=x.TRANID
|
|
|
|
|
|
DECLARE @Filter VARCHAR(MAX) = ''
|
|
|
|
IF @idNumber IS NOT NULL
|
|
SET @Filter= @Filter + ' AND TS.idNumber='''+@idNumber+''''
|
|
|
|
IF @customerName is NOT NULL
|
|
SET @Filter= @Filter + ' AND TS.fullName='''+@customerName+''''
|
|
IF @releasedBy is NOT NULL
|
|
SET @Filter= @Filter + ' AND t.approvedby='''+@releasedBy+''''
|
|
|
|
|
|
--SET @SQL='
|
|
SET @SQL = '
|
|
SELECT
|
|
[S.N]= ROW_NUMBER() OVER (ORDER BY [TXN No.]),
|
|
*
|
|
FROM (
|
|
SELECT
|
|
[TXN Date]= RT.createdDate,
|
|
[TXN No.] = RT.id,
|
|
[Sender Name]= RT.senderName,
|
|
[ID Type]= TS.idType,
|
|
[ID Number]= TS.idNumber,
|
|
[Receiver Name]= RT.receiverName,
|
|
[Sending_Country]= RT.sCountry,
|
|
[Sending_Agent]= RT.sAgentName,
|
|
[Sending_Branch]= RT.sBranchName,
|
|
[Sending_User]= RT.createdBy,
|
|
[Collection_Currency]= RT.collCurr,
|
|
[Collection_Amount]= RT.cAmt,
|
|
[Receiving_Currency]= RT.payoutCurr,
|
|
[Receiving_Amount]= RT.pAmt,
|
|
[Receiving_Country]= RT.pCountry,
|
|
[Hold Reason]= t.reason,
|
|
[Approved By]=t.approvedby,
|
|
[Approved On]=t.approveddate,
|
|
[Approver Remarks]=t.approvedremarks
|
|
FROM vwremitTranAll RT WITH (NOLOCK)
|
|
INNER JOIN VWtranSendersall TS WITH (NOLOCK) ON RT.id=TS.tranId
|
|
INNER JOIN vwtranReceiversALL TR WITH (NOLOCK) ON RT.id=TR.tranId
|
|
LEFT JOIN staticDataValue SV WITH (NOLOCK) ON ts.idType = SV.detailtitle
|
|
INNER JOIN #TEMP t on RT.holdtranid=t.tranid
|
|
WHERE 1=1 ' + @Filter + '
|
|
|
|
UNION ALL
|
|
SELECT
|
|
[TXN Date]= RT.createdDate,
|
|
[TXN No.] = RT.id,
|
|
[Sender Name]= RT.senderName,
|
|
[ID Type]= TS.idType,
|
|
[ID Number]= TS.idNumber,
|
|
[Receiver Name]= RT.receiverName,
|
|
[Sending_Country]= RT.sCountry,
|
|
[Sending_Agent]= RT.sAgentName,
|
|
[Sending_Branch]= RT.sBranchName,
|
|
[Sending_User]= RT.createdBy,
|
|
[Collection_Currency]= RT.collCurr,
|
|
[Collection_Amount]= RT.cAmt,
|
|
[Receiving_Currency]= RT.payoutCurr,
|
|
[Receiving_Amount]= RT.pAmt,
|
|
[Receiving_Country]= RT.pCountry,
|
|
[Hold Reason]= t.reason,
|
|
[Approved By]=t.approvedby,
|
|
[Approved On]=t.approveddate,
|
|
[Approver Remarks]=t.approvedremarks
|
|
FROM vwremitTranAll RT WITH (NOLOCK)
|
|
INNER JOIN VWtranSendersall TS WITH (NOLOCK) ON RT.id=TS.tranId
|
|
INNER JOIN vwtranReceiversALL TR WITH (NOLOCK) ON RT.id=TR.tranId
|
|
LEFT JOIN staticDataValue SV WITH (NOLOCK) ON ts.idType = SV.detailtitle
|
|
INNER JOIN #TEMP t on RT.ID=t.tranid
|
|
WHERE RT.holdtranid IS NULL ' + @Filter + '
|
|
) x'
|
|
|
|
EXEC (@SQL)
|
|
--PRINT @SQL
|
|
END
|
|
|
|
EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
|
|
IF OBJECT_ID(N'tempdb..#filter') IS NOT NULL
|
|
DROP TABLE #filter
|
|
|
|
CREATE TABLE #filter(head varchar(200), value varchar(500))
|
|
INSERT INTO #filter(head,value)
|
|
SELECT 'From Date' head, value = @fromDate UNION ALL
|
|
SELECT 'To Date' head, value = @toDate
|
|
|
|
IF @releasedBy IS NOT NULL
|
|
INSERT INTO #filter(head,value) VALUES('released By', @releasedBy)
|
|
|
|
INSERT INTO #filter(head,value) VALUES('Include System Release', CASE WHEN @includesystem = 'Y' THEN 'YES' ELSE 'NO' END)
|
|
|
|
IF @idNumber IS NOT NULL
|
|
INSERT INTO #filter(head,value) VALUES('Id Number', @idNumber)
|
|
|
|
IF @customerName IS NOT NULL
|
|
INSERT INTO #filter(head,value) VALUES('Customer Name', @customerName)
|
|
|
|
IF @reportType IS NOT NULL
|
|
INSERT INTO #filter(head,value) VALUES('Report Type', @reportType)
|
|
|
|
IF @holdReason IS NOT NULL
|
|
INSERT INTO #filter(head,value) VALUES('Hold Reason', @holdReason)
|
|
|
|
SELECT * FROM #filter
|
|
|
|
SELECT 'Compliance Release Report' title
|
|
RETURN
|
|
END
|
|
|
|
ELSE IF @flag = 'ddl'
|
|
BEGIN
|
|
SELECT 'Transaction Amount' Value, 'Transaction Amount' Reason UNION ALL
|
|
SELECT 'Transaction Count' Value, 'Transaction Count' Reason UNION ALL
|
|
SELECT 'Multiple POS' Value, 'Multiple POS' Reason UNION ALL
|
|
SELECT 'Suspected Duplicate' Value, 'Suspected Duplicate' Reason
|
|
END
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF @@TRANCOUNT > 0
|
|
ROLLBACK TRANSACTION
|
|
SELECT 1 errorCode, ERROR_MESSAGE() msg, NULL id
|
|
END CATCH
|
|
|
|
|
|
|
|
GO
|