USP_REPORT_RECURRINGGIFTMISSED
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DATETYPE | tinyint | IN | |
@DATERANGEDISPLAY | nvarchar(100) | IN | |
@ASOFDATE | datetime | IN | |
@NUMMISSED | int | IN | |
@REVENUETRANSACTIONQUERY | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@REPORTUSERID | nvarchar(128) | IN | |
@CURRENCYCODE | tinyint | IN | |
@ALTREPORTUSERID | nvarchar(128) | IN |
Definition
Copy
create procedure dbo.USP_REPORT_RECURRINGGIFTMISSED
(
@DATETYPE tinyint = null,
@DATERANGEDISPLAY nvarchar(100) = '',
@ASOFDATE datetime = null,
@NUMMISSED int = 0,
@REVENUETRANSACTIONQUERY uniqueidentifier = null,
@CONSTITUENTID uniqueidentifier = null,
@REPORTUSERID nvarchar(128) = null,
@CURRENCYCODE tinyint = 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 =
'select ''http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID='' + CONVERT(nvarchar(36),CONSTITUENT.ID) as CONSTITUENTID,
CONSTITUENT.KEYNAME,
CONSTITUENT_NF.NAME CONSTITUENTNAME,
REVENUE.DATE REVENUEDATE,
dbo.UDA_BUILDLIST(distinct DESIGNATION.NAME) DESIGNATIONLIST,
FIRSTPAYMENT.DATE FIRSTPAYMENT_DATE,
FIRSTPAYMENT.AMOUNT FIRSTPAYMENT_AMOUNT,
LASTPAYMENT.DATE LASTPAYMENT_DATE,
LASTPAYMENT.AMOUNT LASTPAYMENT_AMOUNT,
REVENUESCHEDULE.FREQUENCY,
count(distinct REVPAYMENTS.ID) TOTALPAYMENTSGIVEN,
sum(case @CURRENCYCODE when 0 then REVSPLITPAYMENTS.AMOUNT when 2 then REVSPLITPAYMENTS.TRANSACTIONAMOUNT else REVSPLITPAYMENTS.ORGANIZATIONAMOUNT end) TOTALAMOUNTGIVEN,
FIRSTPAYMENT.ISOCURRENCYCODE [FIRSTISOCURRENCYCODE],
FIRSTPAYMENT.CURRENCYSYMBOL [FIRSTCURRENCYSYMBOL],
FIRSTPAYMENT.CURRENCYSYMBOLDISPLAYSETTINGCODE [FIRSTCURRENCYSYMBOLDISPLAYSETTINGCODE],
FIRSTPAYMENT.DECIMALDIGITS [FIRSTDECIMALDIGITS],
LASTPAYMENT.ISOCURRENCYCODE [LASTISOCURRENCYCODE],
LASTPAYMENT.CURRENCYSYMBOL [LASTCURRENCYSYMBOL],
LASTPAYMENT.CURRENCYSYMBOLDISPLAYSETTINGCODE [LASTCURRENCYSYMBOLDISPLAYSETTINGCODE],
LASTPAYMENT.DECIMALDIGITS [LASTDECIMALDIGITS],
case @CURRENCYCODE when 0 then count(distinct REVSPLITPAYMENTS.BASECURRENCYID) when 2 then count(distinct REVSPLITPAYMENTS.TRANSACTIONCURRENCYID) else 1 end TOTALCURRENCYCOUNT
from
dbo.REVENUE with (nolock)
inner join dbo.REVENUESPLIT
on REVENUESPLIT.REVENUEID = REVENUE.ID
inner join REVENUESCHEDULE
on REVENUESCHEDULE.ID = REVENUE.ID
inner join CONSTITUENT with (nolock)
on REVENUE.CONSTITUENTID = CONSTITUENT.ID
left join DESIGNATION
on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
left outer join RECURRINGGIFTACTIVITY
on RECURRINGGIFTACTIVITY.SOURCEREVENUEID = REVENUE.ID
left outer join REVENUESPLIT REVSPLITPAYMENTS
on REVSPLITPAYMENTS.ID = RECURRINGGIFTACTIVITY.PAYMENTREVENUEID and REVSPLITPAYMENTS.DESIGNATIONID = DESIGNATION.ID
left outer join REVENUE REVPAYMENTS with (nolock)
on REVPAYMENTS.ID = REVSPLITPAYMENTS.REVENUEID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) CONSTITUENT_NF' + nchar(13);
set @SQLTOEXEC = @SQLTOEXEC + 'outer apply
(select top 1 REVFIRST.DATE,
sum(case @CURRENCYCODE when 0 then REVSPLITFIRST.AMOUNT when 2 then REVSPLITFIRST.TRANSACTIONAMOUNT else REVSPLITFIRST.ORGANIZATIONAMOUNT end) AMOUNT,
FIRSTCURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
FIRSTCURRENCYPROPERTIES.CURRENCYSYMBOL,
FIRSTCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
FIRSTCURRENCYPROPERTIES.DECIMALDIGITS
from REVENUE REVFIRST with (nolock)
inner join dbo.REVENUESPLIT REVSPLITFIRST on REVSPLITFIRST.REVENUEID = REVFIRST.ID
inner join dbo.RECURRINGGIFTACTIVITY RGASUB on RGASUB.PAYMENTREVENUEID = REVSPLITFIRST.ID
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then REVSPLITFIRST.BASECURRENCYID when 2 then REVSPLITFIRST.TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) FIRSTCURRENCYPROPERTIES
where RGASUB.SOURCEREVENUEID = REVENUE.ID
group by REVFIRST.ID, REVFIRST.DATE, REVFIRST.DATEADDED, FIRSTCURRENCYPROPERTIES.ISO4217, FIRSTCURRENCYPROPERTIES.CURRENCYSYMBOL, FIRSTCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE, FIRSTCURRENCYPROPERTIES.DECIMALDIGITS
order by REVFIRST.DATE, REVFIRST.DATEADDED) FIRSTPAYMENT
outer apply
(select top 1 REVLAST.DATE,
sum(case @CURRENCYCODE when 0 then REVSPLITLAST.AMOUNT when 2 then REVSPLITLAST.TRANSACTIONAMOUNT else REVSPLITLAST.ORGANIZATIONAMOUNT end) AMOUNT,
LASTCURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
LASTCURRENCYPROPERTIES.CURRENCYSYMBOL,
LASTCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
LASTCURRENCYPROPERTIES.DECIMALDIGITS
from REVENUE REVLAST with (nolock)
inner join dbo.REVENUESPLIT REVSPLITLAST on REVSPLITLAST.REVENUEID = REVLAST.ID
inner join dbo.RECURRINGGIFTACTIVITY RGASUB on RGASUB.PAYMENTREVENUEID = REVSPLITLAST.ID
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then REVSPLITLAST.BASECURRENCYID when 2 then REVSPLITLAST.TRANSACTIONCURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) LASTCURRENCYPROPERTIES
where RGASUB.SOURCEREVENUEID = REVENUE.ID
group by REVLAST.ID, REVLAST.DATE, REVLAST.DATEADDED, LASTCURRENCYPROPERTIES.ISO4217, LASTCURRENCYPROPERTIES.CURRENCYSYMBOL, LASTCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE, LASTCURRENCYPROPERTIES.DECIMALDIGITS
order by REVLAST.DATE desc, REVLAST.DATEADDED desc) LASTPAYMENT' + 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 REVENUE.TRANSACTIONTYPECODE = 2--recurring gift
and [dbo].[UFN_RECURRINGGIFT_GETMISSEDINSTALLMENTSCOUNT] (REVENUE.ID, @ASOFDATE) >= @NUMMISSED
and (@CONSTITUENTID is null or CONSTITUENT.ID = @CONSTITUENTID)
--and not (REVENUE.AMOUNT = 0 and REVENUE.TRANSACTIONAMOUNT > 0)
and (@ISADMIN = 1 or
@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1)
-- Check site security
and exists
(
select HASPERMISSION
from dbo.UFN_SITEID_MAPFROM_REVENUEID(REVENUE.ID) REVSITES
cross apply dbo.UFN_REPORT_HASUSERSITEPERMISSION(@CURRENTAPPUSERID, ''A9F0E7A8-D2B0-47E7-8B73-C9C2FE21E9FD'', REVSITES.SITEID)
)
group by CONSTITUENT.ID,
REVENUE.ID,
CONSTITUENT.KEYNAME,
CONSTITUENT_NF.NAME,
REVENUE.DATE,
FIRSTPAYMENT.DATE,
FIRSTPAYMENT.AMOUNT,
LASTPAYMENT.DATE,
LASTPAYMENT.AMOUNT,
REVENUESCHEDULE.FREQUENCY,
FIRSTPAYMENT.ISOCURRENCYCODE,
FIRSTPAYMENT.CURRENCYSYMBOL,
FIRSTPAYMENT.CURRENCYSYMBOLDISPLAYSETTINGCODE,
FIRSTPAYMENT.DECIMALDIGITS,
LASTPAYMENT.ISOCURRENCYCODE,
LASTPAYMENT.CURRENCYSYMBOL,
LASTPAYMENT.CURRENCYSYMBOLDISPLAYSETTINGCODE,
LASTPAYMENT.DECIMALDIGITS
order by
CONSTITUENT.KEYNAME, REVENUE.DATE'
exec sp_executesql @SQLTOEXEC,
N'@ASOFDATE datetime, @NUMMISSED int, @CONSTITUENTID uniqueidentifier, @ISADMIN bit, @APPUSER_IN_NONRACROLE bit, @APPUSER_IN_NOSECGROUPROLE bit, @CURRENTAPPUSERID uniqueidentifier, @CURRENCYCODE tinyint',
@ASOFDATE=@ASOFDATE, @NUMMISSED=@NUMMISSED, @CONSTITUENTID=@CONSTITUENTID, @ISADMIN=@ISADMIN, @APPUSER_IN_NONRACROLE=@APPUSER_IN_NONRACROLE, @APPUSER_IN_NOSECGROUPROLE=@APPUSER_IN_NOSECGROUPROLE, @CURRENTAPPUSERID=@CURRENTAPPUSERID, @CURRENCYCODE=@CURRENCYCODE;