USP_DATALIST_PROSPECTPLANANALYSIS
Fetches prospect plan analysis information.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SELECTIONID | uniqueidentifier | IN | |
@DATETOUSE | tinyint | IN | Date to use |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@PROSPECTPLANTYPECODEID | uniqueidentifier | IN | |
@PROSPECTPLANSTATUSCODEID | uniqueidentifier | IN | |
@INCLUDEINACTIVE | bit | IN | |
@PROSPECTSTATUSCODEID | uniqueidentifier | IN | |
@OPPORTUNITYSTATUSCODE | tinyint | IN | Opportunity status |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@CURRENCYCODE | tinyint | IN | Currency |
@SECURITYFEATUREID | uniqueidentifier | IN | |
@SECURITYFEATURETYPE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_PROSPECTPLANANALYSIS(
@SELECTIONID uniqueidentifier,
@DATETOUSE tinyint,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@PROSPECTPLANTYPECODEID uniqueidentifier = null,
@PROSPECTPLANSTATUSCODEID uniqueidentifier = null,
@INCLUDEINACTIVE bit = null,
@PROSPECTSTATUSCODEID uniqueidentifier = null,
@OPPORTUNITYSTATUSCODE tinyint = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@CURRENCYCODE tinyint = null,
@SECURITYFEATUREID uniqueidentifier = null,
@SECURITYFEATURETYPE tinyint = null
)
as begin
set nocount on;
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
declare @APPUSER_IN_NONSITEROLE bit;
declare @APPUSER_IN_NOSITEROLE bit;
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);
set @APPUSER_IN_NONSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NONSITEROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE(@CURRENTAPPUSERID);
if @SELECTIONID is not null
begin
select PROSPECT.ID as [PROSPECT_ID],
NF.NAME as [CONSTITUENT_NAME],
CONSTITUENT.KEYNAME + ', ' + CONSTITUENT.FIRSTNAME as [CONSTITUENT_KEYNAME],
PROSPECTPLANTYPECODE.DESCRIPTION as [PROSPECTPLAN_TYPE],
NF_PROSPECTMANAGER.NAME as [PROSPECTMANAGER_NAME],
PROSPECTMANAGER.KEYNAME + ', ' + PROSPECTMANAGER.FIRSTNAME as [PROSPECTMANAGER_KEYNAME],
PROSPECTSTATUSCODE.DESCRIPTION as [PROSPECT_STATUS],
case @CURRENCYCODE
when 0 then OPPORTUNITY.EXPECTEDASKAMOUNT
when 2 then OPPORTUNITY.TRANSACTIONEXPECTEDASKAMOUNT
else OPPORTUNITY.ORGANIZATIONEXPECTEDASKAMOUNT
end as [EXPECTEDASKAMOUNT],
OPPORTUNITY.EXPECTEDASKDATE,
case @CURRENCYCODE
when 0 then OPPORTUNITY.ASKAMOUNT
when 2 then OPPORTUNITY.TRANSACTIONASKAMOUNT
else OPPORTUNITY.ORGANIZATIONASKAMOUNT
end as [ASKAMOUNT],
OPPORTUNITY.ASKDATE,
case OPPORTUNITY.STATUSCODE
when 3 then
case @CURRENCYCODE
when 0 then OPPORTUNITY.AMOUNT
when 2 then OPPORTUNITY.TRANSACTIONAMOUNT
else OPPORTUNITY.ORGANIZATIONAMOUNT
end
else 0
end as [RESPONSEAMOUNT],
OPPORTUNITY.RESPONSEDATE,
(case @CURRENCYCODE
when 0 then OPPORTUNITY.ASKAMOUNT
when 2 then OPPORTUNITY.TRANSACTIONASKAMOUNT
else OPPORTUNITY.ORGANIZATIONASKAMOUNT
end -
case OPPORTUNITY.STATUSCODE
when 3 then
case @CURRENCYCODE
when 0 then OPPORTUNITY.AMOUNT
when 2 then OPPORTUNITY.TRANSACTIONAMOUNT
else OPPORTUNITY.ORGANIZATIONAMOUNT
end
else 0
end) as [AMOUNT_VARIANCE],
datediff(dd, OPPORTUNITY.ASKDATE, OPPORTUNITY.RESPONSEDATE) as [DAYSOPEN],
OPPORTUNITY.STATUS as [OPPORTUNITY_STATUS],
PROSPECTPLANSTATUSCODE.DESCRIPTION as [PROSPECTPLAN_STATUS],
NF_PRIMARYMANAGER.NAME as [PRIMARYMANAGER_NAME],
PRIMARYMANAGER.KEYNAME + ', ' + PRIMARYMANAGER.FIRSTNAME as [PRIMARYMANAGER_SORT],
NF_SECONDARYMANAGER.NAME as [SECONDARYMANAGER_NAME],
SECONDARYMANAGER.KEYNAME + ', ' + SECONDARYMANAGER.FIRSTNAME as [SECONDARYMANAGER_SORT],
PROSPECTPLAN.ID as [PROSPECTPLAN_ID],
OPPORTUNITY.STATUSCODE,
case OPPORTUNITY.STATUSCODE
when 0 then
case @CURRENCYCODE
when 0 then OPPORTUNITY.EXPECTEDASKAMOUNT
when 2 then OPPORTUNITY.TRANSACTIONEXPECTEDASKAMOUNT
else OPPORTUNITY.ORGANIZATIONEXPECTEDASKAMOUNT
end
else
case @CURRENCYCODE
when 0 then OPPORTUNITY.ASKAMOUNT
when 2 then OPPORTUNITY.TRANSACTIONASKAMOUNT
else OPPORTUNITY.ORGANIZATIONASKAMOUNT
end
end as [EXPECTEDASKAMOUNTORASKAMOUNT],
case @CURRENCYCODE
when 0 then OPPORTUNITY.BASECURRENCYID
when 2 then OPPORTUNITY.TRANSACTIONCURRENCYID
else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
end as CURRENCYID,
CURRENCYPROPERTIES.ISO4217 as ISOCURRENCYCODE,
CURRENCYPROPERTIES.CURRENCYSYMBOL,
CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE,
CURRENCYPROPERTIES.DECIMALDIGITS
from
dbo.PROSPECTPLAN
inner join dbo.PROSPECTPLANTYPECODE on PROSPECTPLAN.PROSPECTPLANTYPECODEID = PROSPECTPLANTYPECODE.ID
inner join dbo.PROSPECT on PROSPECTPLAN.PROSPECTID = PROSPECT.ID
inner join dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) SELECTION on PROSPECT.ID = SELECTION.ID
inner join dbo.CONSTITUENT on PROSPECT.ID = CONSTITUENT.ID
inner join dbo.OPPORTUNITY on PROSPECTPLAN.ID = OPPORTUNITY.PROSPECTPLANID
left outer join dbo.CONSTITUENT as PROSPECTMANAGER on PROSPECT.PROSPECTMANAGERFUNDRAISERID = PROSPECTMANAGER.ID
left outer join dbo.PROSPECTSTATUSCODE on PROSPECT.PROSPECTSTATUSCODEID = PROSPECTSTATUSCODE.ID
left outer join dbo.PROSPECTPLANSTATUSCODE on PROSPECTPLAN.PROSPECTPLANSTATUSCODEID = PROSPECTPLANSTATUSCODE.ID
left outer join dbo.CONSTITUENT as [PRIMARYMANAGER] on PROSPECTPLAN.PRIMARYMANAGERFUNDRAISERID = PRIMARYMANAGER.ID
left outer join dbo.CONSTITUENT as [SECONDARYMANAGER] on PROSPECTPLAN.SECONDARYMANAGERFUNDRAISERID = SECONDARYMANAGER.ID
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE
when 0 then OPPORTUNITY.BASECURRENCYID
when 2 then OPPORTUNITY.TRANSACTIONCURRENCYID
else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
end) CURRENCYPROPERTIES
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PROSPECTMANAGER.ID) NF_PROSPECTMANAGER
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PRIMARYMANAGER.ID) NF_PRIMARYMANAGER
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SECONDARYMANAGER.ID) NF_SECONDARYMANAGER
where
(@STARTDATE <= (case when @DATETOUSE = 0 and OPPORTUNITY.STATUSCODE <> 0 then OPPORTUNITY.ASKDATE
when @DATETOUSE = 0 and OPPORTUNITY.STATUSCODE = 0 then OPPORTUNITY.EXPECTEDASKDATE
else OPPORTUNITY.RESPONSEDATE end) and
@ENDDATE >= (case when @DATETOUSE = 0 and OPPORTUNITY.STATUSCODE <> 0 then OPPORTUNITY.ASKDATE
when @DATETOUSE = 0 and OPPORTUNITY.STATUSCODE = 0 then OPPORTUNITY.EXPECTEDASKDATE
else OPPORTUNITY.RESPONSEDATE end)
) and
(PROSPECTPLANTYPECODE.ID = @PROSPECTPLANTYPECODEID or @PROSPECTPLANTYPECODEID is null) and
(PROSPECTPLANSTATUSCODE.ID = @PROSPECTPLANSTATUSCODEID or @PROSPECTPLANSTATUSCODEID is null) and
(PROSPECTPLAN.ISACTIVE = 1 or @INCLUDEINACTIVE = 1) and
(PROSPECTSTATUSCODE.ID = @PROSPECTSTATUSCODEID or @PROSPECTSTATUSCODEID is null) and
(OPPORTUNITY.STATUSCODE = @OPPORTUNITYSTATUSCODE or @OPPORTUNITYSTATUSCODE is null) and
(@ISADMIN = 1 or
(@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1)
and
(@APPUSER_IN_NONSITEROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSITEROLE) = 1)
) and
(
(@SECURITYFEATUREID is null and @SECURITYFEATURETYPE is null) or
(
select count(*)
from dbo.UFN_SITEID_MAPFROM_PROSPECTPLANID(PROSPECTPLAN.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
)
end
else
begin
select PROSPECT.ID as [PROSPECT_ID],
NF.NAME as [CONSTITUENT_NAME],
CONSTITUENT.KEYNAME + ', ' + CONSTITUENT.FIRSTNAME as [CONSTITUENT_KEYNAME],
PROSPECTPLANTYPECODE.DESCRIPTION as [PROSPECTPLAN_TYPE],
NF_PROSPECTMANAGER.NAME as [PROSPECTMANAGER_NAME],
PROSPECTMANAGER.KEYNAME + ', ' + PROSPECTMANAGER.FIRSTNAME as [PROSPECTMANAGER_KEYNAME],
PROSPECTSTATUSCODE.DESCRIPTION as [PROSPECT_STATUS],
case @CURRENCYCODE
when 0 then OPPORTUNITY.EXPECTEDASKAMOUNT
when 2 then OPPORTUNITY.TRANSACTIONEXPECTEDASKAMOUNT
else OPPORTUNITY.ORGANIZATIONEXPECTEDASKAMOUNT
end as [EXPECTEDASKAMOUNT],
OPPORTUNITY.EXPECTEDASKDATE,
case @CURRENCYCODE
when 0 then OPPORTUNITY.ASKAMOUNT
when 2 then OPPORTUNITY.TRANSACTIONASKAMOUNT
else OPPORTUNITY.ORGANIZATIONASKAMOUNT
end as [ASKAMOUNT],
OPPORTUNITY.ASKDATE,
case OPPORTUNITY.STATUSCODE
when 3 then
case @CURRENCYCODE
when 0 then OPPORTUNITY.AMOUNT
when 2 then OPPORTUNITY.TRANSACTIONAMOUNT
else OPPORTUNITY.ORGANIZATIONAMOUNT
end
else 0
end as [RESPONSEAMOUNT],
OPPORTUNITY.RESPONSEDATE,
(case @CURRENCYCODE
when 0 then OPPORTUNITY.ASKAMOUNT
when 2 then OPPORTUNITY.TRANSACTIONASKAMOUNT
else OPPORTUNITY.ORGANIZATIONASKAMOUNT
end -
case OPPORTUNITY.STATUSCODE
when 3 then
case @CURRENCYCODE
when 0 then OPPORTUNITY.AMOUNT
when 2 then OPPORTUNITY.TRANSACTIONAMOUNT
else OPPORTUNITY.ORGANIZATIONAMOUNT
end
else 0
end) as [AMOUNT_VARIANCE],
datediff(dd, OPPORTUNITY.ASKDATE, OPPORTUNITY.RESPONSEDATE) as [DAYSOPEN],
OPPORTUNITY.STATUS as [OPPORTUNITY_STATUS],
PROSPECTPLANSTATUSCODE.DESCRIPTION as [PROSPECTPLAN_STATUS],
NF_PRIMARYMANAGER.NAME as [PRIMARYMANAGER_NAME],
PRIMARYMANAGER.KEYNAME + ', ' + PRIMARYMANAGER.FIRSTNAME as [PRIMARYMANAGER_SORT],
NF_SECONDARYMANAGER.NAME as [SECONDARYMANAGER_NAME],
SECONDARYMANAGER.KEYNAME + ', ' + SECONDARYMANAGER.FIRSTNAME as [SECONDARYMANAGER_SORT],
PROSPECTPLAN.ID as [PROSPECTPLAN_ID],
OPPORTUNITY.STATUSCODE,
case OPPORTUNITY.STATUSCODE
when 0 then
case @CURRENCYCODE
when 0 then OPPORTUNITY.EXPECTEDASKAMOUNT
when 2 then OPPORTUNITY.TRANSACTIONEXPECTEDASKAMOUNT
else OPPORTUNITY.ORGANIZATIONEXPECTEDASKAMOUNT
end
else
case @CURRENCYCODE
when 0 then OPPORTUNITY.ASKAMOUNT
when 2 then OPPORTUNITY.TRANSACTIONASKAMOUNT
else OPPORTUNITY.ORGANIZATIONASKAMOUNT
end
end as [EXPECTEDASKAMOUNTORASKAMOUNT],
case @CURRENCYCODE
when 0 then OPPORTUNITY.BASECURRENCYID
when 2 then OPPORTUNITY.TRANSACTIONCURRENCYID
else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
end as CURRENCYID,
CURRENCYPROPERTIES.ISO4217 as ISOCURRENCYCODE,
CURRENCYPROPERTIES.CURRENCYSYMBOL,
CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE,
CURRENCYPROPERTIES.DECIMALDIGITS
from
dbo.PROSPECTPLAN
inner join dbo.PROSPECTPLANTYPECODE on PROSPECTPLAN.PROSPECTPLANTYPECODEID = PROSPECTPLANTYPECODE.ID
inner join dbo.PROSPECT on PROSPECTPLAN.PROSPECTID = PROSPECT.ID
inner join dbo.CONSTITUENT on PROSPECT.ID = CONSTITUENT.ID
inner join dbo.OPPORTUNITY on PROSPECTPLAN.ID = OPPORTUNITY.PROSPECTPLANID
left outer join dbo.CONSTITUENT as PROSPECTMANAGER on PROSPECT.PROSPECTMANAGERFUNDRAISERID = PROSPECTMANAGER.ID
left outer join dbo.PROSPECTSTATUSCODE on PROSPECT.PROSPECTSTATUSCODEID = PROSPECTSTATUSCODE.ID
left outer join dbo.PROSPECTPLANSTATUSCODE on PROSPECTPLAN.PROSPECTPLANSTATUSCODEID = PROSPECTPLANSTATUSCODE.ID
left outer join dbo.CONSTITUENT as [PRIMARYMANAGER] on PROSPECTPLAN.PRIMARYMANAGERFUNDRAISERID = PRIMARYMANAGER.ID
left outer join dbo.CONSTITUENT as [SECONDARYMANAGER] on PROSPECTPLAN.SECONDARYMANAGERFUNDRAISERID = SECONDARYMANAGER.ID
outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE
when 0 then OPPORTUNITY.BASECURRENCYID
when 2 then OPPORTUNITY.TRANSACTIONCURRENCYID
else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
end) CURRENCYPROPERTIES
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PROSPECTMANAGER.ID) NF_PROSPECTMANAGER
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PRIMARYMANAGER.ID) NF_PRIMARYMANAGER
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SECONDARYMANAGER.ID) NF_SECONDARYMANAGER
where
(@STARTDATE <= (case when @DATETOUSE = 0 and OPPORTUNITY.STATUSCODE <> 0 then OPPORTUNITY.ASKDATE
when @DATETOUSE = 0 and OPPORTUNITY.STATUSCODE = 0 then OPPORTUNITY.EXPECTEDASKDATE
else OPPORTUNITY.RESPONSEDATE end) and
@ENDDATE >= (case when @DATETOUSE = 0 and OPPORTUNITY.STATUSCODE <> 0 then OPPORTUNITY.ASKDATE
when @DATETOUSE = 0 and OPPORTUNITY.STATUSCODE = 0 then OPPORTUNITY.EXPECTEDASKDATE
else OPPORTUNITY.RESPONSEDATE end)
) and
(PROSPECTPLANTYPECODE.ID = @PROSPECTPLANTYPECODEID or @PROSPECTPLANTYPECODEID is null) and
(PROSPECTPLANSTATUSCODE.ID = @PROSPECTPLANSTATUSCODEID or @PROSPECTPLANSTATUSCODEID is null) and
(PROSPECTPLAN.ISACTIVE = 1 or @INCLUDEINACTIVE = 1) and
(PROSPECTSTATUSCODE.ID = @PROSPECTSTATUSCODEID or @PROSPECTSTATUSCODEID is null) and
(OPPORTUNITY.STATUSCODE = @OPPORTUNITYSTATUSCODE or @OPPORTUNITYSTATUSCODE is null) and
(@ISADMIN = 1 or
(@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1)
and
(@APPUSER_IN_NONSITEROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSITEROLE) = 1)
) and
(
(@SECURITYFEATUREID is null and @SECURITYFEATURETYPE is null) or
(
select count(*)
from dbo.UFN_SITEID_MAPFROM_PROSPECTPLANID(PROSPECTPLAN.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
)
end
return 0;
end