USP_REPORT_RECONCILEDEPOSITS_GROUPEDTOTALS
Returns the data necessary for the grouped totals in the Reconcile Deposits report.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DATETOUSE | int | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@REVENUETRANSACTIONQUERY | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@REPORTUSERID | nvarchar(128) | IN | |
@ALTREPORTUSERID | nvarchar(128) | IN |
Definition
Copy
CREATE procedure dbo.USP_REPORT_RECONCILEDEPOSITS_GROUPEDTOTALS
(
@DATETOUSE int = null,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@REVENUETRANSACTIONQUERY uniqueidentifier = null,
@CONSTITUENTID uniqueidentifier = null,
@REPORTUSERID nvarchar(128) = null,
@ALTREPORTUSERID nvarchar(128) = null
)
with execute as owner
as
set nocount on;
declare @CURRENTAPPUSERID uniqueidentifier;
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
set @CURRENTAPPUSERID = dbo.UFN_APPUSER_GETREPORTAPPUSERID(@REPORTUSERID, @ALTREPORTUSERID);
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);
declare @SQLTOEXEC nvarchar(max);
declare @DBOBJECTNAME nvarchar(128);
declare @DBOBJECTTYPE smallint;
if @REVENUETRANSACTIONQUERY is not null begin
if not exists(select ID from dbo.IDSETREGISTER where ID = @REVENUETRANSACTIONQUERY) raiserror('ID set does not exist in the database.', 15, 1);
select @DBOBJECTNAME = DBOBJECTNAME, @DBOBJECTTYPE = OBJECTTYPE from dbo.IDSETREGISTER where ID = @REVENUETRANSACTIONQUERY;
if @DBOBJECTTYPE = 1 set @DBOBJECTNAME = @DBOBJECTNAME + '()';
else if @DBOBJECTTYPE = 2 set @DBOBJECTNAME = @DBOBJECTNAME + '(''' + convert(nvarchar(36), @REVENUETRANSACTIONQUERY) + ''')';
end
set @SQLTOEXEC =
';with REVENUE_CTE as
(
select
[REVENUEPAYMENTMETHOD].[PAYMENTMETHOD],
[REVENUE].[ID],
[REVENUE].[AMOUNT],
CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
CURRENCYPROPERTIES.CURRENCYSYMBOL,
CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
CURRENCYPROPERTIES.DECIMALDIGITS
from dbo.REVENUE with (nolock)
inner join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(REVENUE.BASECURRENCYID) CURRENCYPROPERTIES' + nchar(13);
if @REVENUETRANSACTIONQUERY is not null
set @SQLTOEXEC = @SQLTOEXEC + 'inner join dbo.' + @DBOBJECTNAME + ' as SELECTION on REVENUE.[ID] = SELECTION.[ID]' + nchar(13);
set @SQLTOEXEC = @SQLTOEXEC +
'where PAYMENTMETHODCODE in (0, 1, 2, 3) --Limit to Cash, Check, Credit Card, and Direct Debit
and REVENUE.TRANSACTIONTYPECODE = 0 --Limit to payment
and ' + nchar(13);
if @DATETOUSE = 0
set @SQLTOEXEC = @SQLTOEXEC +
' REVENUE.DATE between @STARTDATE and @ENDDATE ' + nchar(13);
else
set @SQLTOEXEC = @SQLTOEXEC +
' REVENUE.POSTDATE between @STARTDATE and @ENDDATE ' + nchar(13);
if @CONSTITUENTID is not null
set @SQLTOEXEC = @SQLTOEXEC + 'and REVENUE.CONSTITUENTID = @CONSTITUENTID' + nchar(13);
if @ISADMIN = 0
begin
if @APPUSER_IN_NONRACROLE = 0
set @SQLTOEXEC = @SQLTOEXEC + '
and (dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, REVENUE.CONSTITUENTID, @APPUSER_IN_NOSECGROUPROLE) = 1)' + nchar(13);
set @SQLTOEXEC = @SQLTOEXEC + '
and exists (select 1 from dbo.REVENUESPLIT where REVENUEID = [REVENUE].ID
-- Check site security
and exists
(
select HASPERMISSION
from dbo.UFN_SITEID_MAPFROM_REVENUEID(REVENUE.ID) REVSITES
cross apply dbo.UFN_REPORT_HASUSERSITEPERMISSION(@CURRENTAPPUSERID, ''9A014198-B7EB-4A06-8FDC-951207AE6D03'', REVSITES.SITEID)
))' + nchar(13);
end
set @SQLTOEXEC += '
union all
--refunds
select
[CREDITPAYMENT].[PAYMENTMETHOD],
[CREDIT].[ID],
-1 * [CREDITPAYMENT].[AMOUNT],
[CURRENCYPROPERTIES].[ISO4217] [ISOCURRENCYCODE],
[CURRENCYPROPERTIES].[CURRENCYSYMBOL],
[CURRENCYPROPERTIES].[SYMBOLDISPLAYSETTINGCODE] [CURRENCYSYMBOLDISPLAYSETTINGCODE],
[CURRENCYPROPERTIES].[DECIMALDIGITS]
from dbo.[CREDIT]
inner join dbo.[CREDITPAYMENT] on [CREDIT].[ID] = [CREDITPAYMENT].[CREDITID]
left join dbo.[REVENUESPLIT] on [REVENUESPLIT].[ID] = [CREDITPAYMENT].[REVENUESPLITID]
inner join dbo.[REVENUE] on ([REVENUE].[ID] = [CREDITPAYMENT].[REVENUEID] or [REVENUE].[ID] = [REVENUESPLIT].[REVENUEID])
outer apply dbo.UFN_CURRENCY_GETPROPERTIES([REVENUE].[BASECURRENCYID]) [CURRENCYPROPERTIES]' + nchar(13);
if @DATETOUSE = 0
set @SQLTOEXEC +=
'where [CREDIT].[DATEADDED] between @STARTDATE and @ENDDATE ' + nchar(13);
else
set @SQLTOEXEC +=
' left join dbo.[CREDITGLDISTRIBUTION] on [CREDITGLDISTRIBUTION].[CREDITPAYMENTID] = [CREDITPAYMENT].[ID]
left join dbo.[GLTRANSACTION] on [CREDITGLDISTRIBUTION].[GLTRANSACTIONID] = [GLTRANSACTION].[ID]
where [GLTRANSACTION].[POSTDATE] between @STARTDATE and @ENDDATE ' + nchar(13);
set @SQLTOEXEC +=
'and [CREDITPAYMENT].[PAYMENTMETHODCODE] in (0, 1, 2, 3) --Limit to Cash, Check, Credit Card, and Direct Debit
' + nchar(13);
if @CONSTITUENTID is not null
set @SQLTOEXEC += 'and [CREDIT].[CONSTITUENTID] = @CONSTITUENTID' + nchar(13);
if @APPUSER_IN_NONRACROLE = 0 and @ISADMIN = 0
set @SQLTOEXEC += '
and (dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, [CREDIT].[CONSTITUENTID], @APPUSER_IN_NOSECGROUPROLE) = 1)' + nchar(13);
set @SQLTOEXEC +=
'group by CREDITPAYMENT.PAYMENTMETHOD, CREDIT.ID, CREDITPAYMENT.AMOUNT, [CURRENCYPROPERTIES].[ISO4217],
[CURRENCYPROPERTIES].[CURRENCYSYMBOL], [CURRENCYPROPERTIES].[SYMBOLDISPLAYSETTINGCODE], [CURRENCYPROPERTIES].[DECIMALDIGITS]'
set @SQLTOEXEC += ')
select
''Total '' + lower([PAYMENTMETHOD]) + '': '' as [LABEL],
count([ID]) as [COUNT],
sum([AMOUNT]) as [AMOUNT],
[ISOCURRENCYCODE],
[CURRENCYSYMBOL],
[CURRENCYSYMBOLDISPLAYSETTINGCODE],
[DECIMALDIGITS]
from REVENUE_CTE' + nchar(13);
set @SQLTOEXEC = @SQLTOEXEC +
'group by [PAYMENTMETHOD], [ISOCURRENCYCODE], [CURRENCYSYMBOL],
[CURRENCYSYMBOLDISPLAYSETTINGCODE], [DECIMALDIGITS]
order by PAYMENTMETHOD'
print @SQLTOEXEC;
exec sp_executesql @SQLTOEXEC,
N'@DATETOUSE int, @STARTDATE datetime, @ENDDATE datetime, @CONSTITUENTID uniqueidentifier, @ISADMIN bit, @APPUSER_IN_NONRACROLE bit, @APPUSER_IN_NOSECGROUPROLE bit, @CURRENTAPPUSERID uniqueidentifier',
@DATETOUSE=@DATETOUSE, @STARTDATE=@STARTDATE, @ENDDATE=@ENDDATE, @CONSTITUENTID=@CONSTITUENTID, @ISADMIN=@ISADMIN, @APPUSER_IN_NONRACROLE=@APPUSER_IN_NONRACROLE, @APPUSER_IN_NOSECGROUPROLE=@APPUSER_IN_NOSECGROUPROLE, @CURRENTAPPUSERID=@CURRENTAPPUSERID;