USP_REPORT_CREDITCARDPROCESSING_SUMMARY
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BUSINESSPROCESSSTATUSID | nvarchar(36) | IN | |
@REPORTUSERID | nvarchar(128) | IN | |
@CURRENCYCODE | tinyint | IN | |
@ALTREPORTUSERID | nvarchar(128) | IN |
Definition
Copy
CREATE procedure dbo.USP_REPORT_CREDITCARDPROCESSING_SUMMARY
(
@BUSINESSPROCESSSTATUSID nvarchar(36),
@REPORTUSERID nvarchar(128) = null,
@CURRENCYCODE tinyint = 3,
@ALTREPORTUSERID nvarchar(128) = null
)
with execute as owner
as begin
set nocount on;
declare @TABLENAME nvarchar(255);
declare @SQL nvarchar(4000);
declare @CURRENCYID uniqueidentifier;
declare @CURRENTAPPUSERID uniqueidentifier;
set @CURRENTAPPUSERID = dbo.UFN_APPUSER_GETREPORTAPPUSERID(@REPORTUSERID, @ALTREPORTUSERID);
select @CURRENCYID = case @CURRENCYCODE
when 1 then dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
else dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID)
end;
begin try
-- Calculate total amounts and get the process date.
declare @AUTHORIZEDTOTAL money = 0;
declare @PROVISIONALTOTAL money = 0;
declare @PERMANENTTOTAL money = 0;
declare @PROCESSDATE datetime;
select @TABLENAME = BUSINESSPROCESSOUTPUT.TABLENAME
from dbo.BUSINESSPROCESSSTATUS
inner join dbo.BUSINESSPROCESSOUTPUT on BUSINESSPROCESSSTATUS.ID = BUSINESSPROCESSOUTPUT.BUSINESSPROCESSSTATUSID
where BUSINESSPROCESSSTATUS.ID = @BUSINESSPROCESSSTATUSID and BUSINESSPROCESSOUTPUT.TABLEKEY = 'OUTPUT';
if not @TABLENAME is null and not OBJECT_ID(@TABLENAME) is null
begin
set @SQL = '
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
declare @RATES table
(
FROMCURRENCYID uniqueidentifier,
RATEID uniqueidentifier
);
insert into @RATES (FROMCURRENCYID, RATEID)
select CURRENCYEXCHANGERATE.FROMCURRENCYID, CURRENCYEXCHANGERATE.ID
from dbo.CURRENCYEXCHANGERATE
where
CURRENCYEXCHANGERATE.TOCURRENCYID = @CURRENCYID
and CURRENCYEXCHANGERATE.TYPECODE in (0,1)
and CURRENCYEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
and @CURRENTDATE >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
and @CURRENTDATE <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ;
select
@AUTHORIZEDTOTAL = sum(
case when T.TRANSACTIONCURRENCYID = @CURRENCYID then T.TRANSACTIONAMOUNTAPPLIED
else dbo.UFN_CURRENCY_CONVERT(T.TRANSACTIONAMOUNTAPPLIED, RATE.RATEID)
end
)
from ' + @TABLENAME + ' as T
outer apply (
select top 1 R.RATEID from @RATES as R
where R.FROMCURRENCYID = T.TRANSACTIONCURRENCYID
) as RATE
where T.ISSUCCESSFUL = 1;
select
@PROVISIONALTOTAL = sum(
case when T.TRANSACTIONCURRENCYID = @CURRENCYID then T.TRANSACTIONAMOUNTAPPLIED
else dbo.UFN_CURRENCY_CONVERT(T.TRANSACTIONAMOUNTAPPLIED, RATE.RATEID)
end
)
from ' + @TABLENAME + ' as T
outer apply (
select top 1 R.RATEID from @RATES as R
where R.FROMCURRENCYID = T.TRANSACTIONCURRENCYID
) as RATE
where T.ISSUCCESSFUL = 0 and T.ISPERMANENTREJECTION = 0;
select
@PERMANENTTOTAL = sum(
case when T.TRANSACTIONCURRENCYID = @CURRENCYID then T.TRANSACTIONAMOUNTAPPLIED
else dbo.UFN_CURRENCY_CONVERT(T.TRANSACTIONAMOUNTAPPLIED, RATE.RATEID)
end
)
from ' + @TABLENAME + ' as T
outer apply (
select top 1 R.RATEID from @RATES as R
where R.FROMCURRENCYID = T.TRANSACTIONCURRENCYID
) as RATE
where T.ISSUCCESSFUL = 0 and T.ISPERMANENTREJECTION = 1;
select top 1
@PROCESSDATE = T.PROCESSDATE
from ' + @TABLENAME + ' as T;
';
end
exec sp_executesql @SQL, N'@CURRENCYID uniqueidentifier, @AUTHORIZEDTOTAL money output, @PROVISIONALTOTAL money output, @PERMANENTTOTAL money output, @PROCESSDATE datetime output', @CURRENCYID=@CURRENCYID, @AUTHORIZEDTOTAL=@AUTHORIZEDTOTAL output, @PROVISIONALTOTAL=@PROVISIONALTOTAL output, @PERMANENTTOTAL=@PERMANENTTOTAL output, @PROCESSDATE=@PROCESSDATE output;
select top 1
CREDITCARDPROCESSINGTRANSACTIONOUTCOME.ORIGINALBATCHNUMBER,
CREDITCARDPROCESSINGTRANSACTIONOUTCOME.RETRYBATCHNUMBER,
(BUSINESSPROCESSSTATUS.NUMBEROFEXCEPTIONS + BUSINESSPROCESSSTATUS.NUMBERPROCESSED) as TOTALCOUNT,
BUSINESSPROCESSSTATUS.NUMBEROFEXCEPTIONS as EXCEPTIONCOUNT,
BUSINESSPROCESSSTATUS.NUMBERPROCESSED as SUCCESSCOUNT,
CREDITCARDPROCESSINGTRANSACTIONOUTCOME.AUTHORIZEDCOUNT,
CREDITCARDPROCESSINGTRANSACTIONOUTCOME.PROVISIONALCOUNT,
CREDITCARDPROCESSINGTRANSACTIONOUTCOME.PERMANENTCOUNT,
@PROCESSDATE as PROCESSDATE,
@AUTHORIZEDTOTAL as AUTHORIZEDTRANSACTIONTOTAL,
@PROVISIONALTOTAL as PROVISIONALREJECTIONTOTAL,
@PERMANENTTOTAL as PERMANENTREJECTIONTOTAL,
CREDITCARDPROCESSINGTRANSACTIONOUTCOME.ATTEMPTCOUNT,
CREDITCARDPROCESSINGTRANSACTIONOUTCOME.ATTEMPTMAX,
CURRENCY.CURRENCYSYMBOL,
CURRENCY.ISO4217 as ISOCURRENCYCODE,
CURRENCY.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE,
CURRENCY.DECIMALDIGITS as CURRENCYDECIMALDIGITS,
CREDITCARDPROCESSINGTRANSACTIONOUTCOME.NEWBATCHCREATED as ISNEWBATCH
from dbo.CREDITCARDPROCESSINGTRANSACTIONOUTCOME
inner join dbo.BUSINESSPROCESSSTATUS on BUSINESSPROCESSSTATUS.ID = CREDITCARDPROCESSINGTRANSACTIONOUTCOME.ID
cross join dbo.CURRENCY
where
CREDITCARDPROCESSINGTRANSACTIONOUTCOME.ID = cast(@BUSINESSPROCESSSTATUSID as uniqueidentifier)
and CURRENCY.ID = @CURRENCYID
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end