USP_DATALIST_OPPORTUNITYPYRAMIDFUNDRAISER
Returns the opportunity pyramid for a given fundraiser.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STATUSCODE | tinyint | IN | Status |
@FUNDRAISERID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@SECURITYFEATUREID | uniqueidentifier | IN | Input parameter indicating the ID of the feature to use for site security checking. |
@SECURITYFEATURETYPE | tinyint | IN | Input parameter indicating the type of the feature to use for site security checking. |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_OPPORTUNITYPYRAMIDFUNDRAISER(
@STATUSCODE tinyint = 0,
@FUNDRAISERID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null
) as
set nocount on;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @BASECURRENCYID uniqueidentifier;
declare @USERSITEID uniqueidentifier;
select @USERSITEID = SITEID from dbo.APPUSER where ID = @CURRENTAPPUSERID;
select @BASECURRENCYID = BASECURRENCYID
from OPPORTUNITYAMOUNTBRACKETGROUP
where OPPORTUNITYAMOUNTBRACKETGROUP.ID = dbo.UFN_OPPORTUNITYAMOUNTBRACKETSGROUP_GETBYSITE(@USERSITEID)
declare @DECIMALDIGITS tinyint;
declare @ROUNDINGTYPECODE tinyint;
select
@DECIMALDIGITS = CURRENCY.DECIMALDIGITS,
@ROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE
from
dbo.CURRENCY
where
CURRENCY.ID = @BASECURRENCYID;
with AMOUNTS_CTE as (
select R.ID,
sum(O.AMOUNTINCURRENCY) as TOTALAMOUNT,
count(O.ID) as NUMOPPS
from dbo.UFN_OPPORTUNITYAMOUNTRANGES_BYGROUPANDUSER(@CURRENTAPPUSERID) R
inner join dbo.UFN_OPPORTUNITY_AMOUNTINCURRENCY_BULK(@BASECURRENCYID, @ORGANIZATIONCURRENCYID) O on O.AMOUNTINCURRENCY between R.LOWERLIMIT and R.UPPERLIMIT
inner join dbo.PROSPECTPLAN PP on PP.ID = O.PROSPECTPLANID
where ((O.STATUSCODE = @STATUSCODE and O.STATUSCODE in (1,2,3)) or (@STATUSCODE = 0 and O.STATUSCODE in (1,2,3)))
and exists (select 1 from dbo.V_OPPORTUNITYSOLICITOR OS where OS.FUNDRAISERID = @FUNDRAISERID and O.ID = OS.OPPORTUNITYID)
and
(
select count(*)
from dbo.UFN_SITEID_MAPFROM_PROSPECTPLANID(PP.ID) as PROSPECTPLANSITE
where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[PROSPECTPLANSITE].[SITEID] or (SITEID is null and [PROSPECTPLANSITE].[SITEID] is null)))
) > 0
group by R.ID
)
select
R.NAME,
R.LOWERLIMIT,
R.UPPERLIMIT,
coalesce(A.TOTALAMOUNT, 0) as TOTALAMOUNT,
coalesce(A.NUMOPPS, 0) as NUMOPPS,
R.BASECURRENCYID,
CURRENCYINFO.CURRENCYSYMBOL,
CURRENCYINFO.ISO4217,
CURRENCYINFO.DECIMALDIGITS,
CURRENCYINFO.SYMBOLDISPLAYSETTINGCODE
from
dbo.UFN_OPPORTUNITYAMOUNTRANGES_BYGROUPANDUSER(@CURRENTAPPUSERID) R
left join AMOUNTS_CTE A on R.ID = A.ID
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(R.BASECURRENCYID) as CURRENCYINFO
order by
R.LOWERLIMIT desc