UFN_SMARTQUERY_POTENTIALGIFTAID
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTSELECTIONID | uniqueidentifier | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@MAXROWS | int | IN |
Definition
Copy
create function dbo.UFN_SMARTQUERY_POTENTIALGIFTAID
(
@CONSTITUENTSELECTIONID uniqueidentifier,
@STARTDATE datetime,
@ENDDATE datetime,
@CURRENTAPPUSERID uniqueidentifier = null,
@MAXROWS int
)
returns @T table
(
ID uniqueidentifier,
DONOR nvarchar(154),
DONATIONSRECEIVED money,
POTENTIALBASETAXCLAIM money,
POTENTIALTRANSITIONALTAXCLAIM money,
POTENTIALTAXCLAIM money,
DISPLAYCURRENCY uniqueidentifier
)
as
begin
declare @SMARTQUERYCATALOGID uniqueidentifier = '2548b775-732f-42fa-8a61-3c70d957c7e1';
declare @ISADMIN bit = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
declare @MULTICURRENCYENABLED bit = dbo.UFN_CONDITIONSETTING_EVALUATEEXISTSCONDITION('Multicurrency');
declare @CURRENCYID uniqueidentifier;
if @MULTICURRENCYENABLED = 1
set @CURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);
insert into @T
select
ID,
DONOR,
DONATIONSRECEIVED,
POTENTIALBASETAXCLAIM,
POTENTIALTRANSITIONALTAXCLAIM,
POTENTIALBASETAXCLAIM + POTENTIALTRANSITIONALTAXCLAIM as POTENTIALTAXCLAIM,
DISPLAYCURRENCY
from
-- Using derived table so POTENTIALTAXCLAIM can be calculated as the sum of POTENTIALBASETAXCLAIM and POTENTIALTRANSITIONALTAXCLAIM.
-- The calculated column TAXCLAIMAMOUNT isn't used so UFN_REVENUESPLITGIFTAID_TRANSITIONALREFLIEFEXPIRED doesn't have
-- to be called twice for the same split.
(
select top (@MAXROWS)
CONSTITUENT.ID as [ID],
CONSTITUENT.NAME as [DONOR],
case @MULTICURRENCYENABLED
when 1 then sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(REVENUESPLIT.ID, @CURRENCYID))
else sum(REVENUESPLIT.AMOUNT)
end as [DONATIONSRECEIVED],
case @MULTICURRENCYENABLED
when 1 then sum(dbo.UFN_GIFTAID_GETBASETAXCLAIMAMOUNTINCURRENCY(REVENUESPLIT.ID, @CURRENCYID))
else sum(REVENUESPLITGIFTAID.BASETAXCLAIMAMOUNT)
end as [POTENTIALBASETAXCLAIM],
case @MULTICURRENCYENABLED
when 1 then sum(case when REVENUESPLITGIFTAID.TRANSITIONALTAXCLAIMAMOUNT <> 0 and dbo.UFN_REVENUESPLITGIFTAID_TRANSITIONALREFLIEFEXPIRED(REVENUESPLITGIFTAID.ID, REVENUESPLITGIFTAID.INCLUDETRANSITIONALAMOUNTCODE) = 0 then dbo.UFN_GIFTAID_GETTRANSITIONALTAXCLAIMAMOUNTINCURRENCY(REVENUESPLIT.ID, @CURRENCYID) else 0 end)
else sum(case when REVENUESPLITGIFTAID.TRANSITIONALTAXCLAIMAMOUNT <> 0 and dbo.UFN_REVENUESPLITGIFTAID_TRANSITIONALREFLIEFEXPIRED(REVENUESPLITGIFTAID.ID, REVENUESPLITGIFTAID.INCLUDETRANSITIONALAMOUNTCODE) = 0 then REVENUESPLITGIFTAID.TRANSITIONALTAXCLAIMAMOUNT else 0 end)
end as [POTENTIALTRANSITIONALTAXCLAIM],
@CURRENCYID as DISPLAYCURRENCY
from
dbo.CONSTITUENT
inner join dbo.REVENUE REVENUE on CONSTITUENT.ID = REVENUE.CONSTITUENTID
left join dbo.UFN_IDSETREADER_GETRESULTS_GUID(@CONSTITUENTSELECTIONID) as [IDSET] on [IDSET].ID = CONSTITUENT.ID
left join dbo.REVENUESPLIT on REVENUE.ID = REVENUESPLIT.REVENUEID
left join dbo.REVENUESPLITGIFTAID on REVENUESPLIT.ID = REVENUESPLITGIFTAID.ID
where CONSTITUENT.ID not in
(select TD.CONSTITUENTID
from dbo.TAXDECLARATION TD
inner join dbo.CHARITYCLAIMREFERENCENUMBER CCRN on CCRN.ID = TD.CHARITYCLAIMREFERENCENUMBERID
left join dbo.CHARITYCLAIMREFERENCENUMBERSITE CCRNS on CCRNS.CHARITYCLAIMREFERENCENUMBERID = CCRN.ID
where
TD.PAYSTAXCODE <> 2
--The "GETEARLIESTTIME" date function has been inlined here for performance (the part with "cast(@DATE as date)")...
and (REVENUE.DATE >= cast(TD.DECLARATIONSTARTS as date))
--The "GETLATESTTIME" date function has been inlined here for performance (the part with "dateadd(ms, -003...")...
and (REVENUE.DATE <= dateadd(ms, -003, dateadd(d, 1, cast(cast(TD.DECLARATIONENDS as date) as datetime))) or (TD.DECLARATIONENDS is null))
and (CCRNS.SITEID in (select SITEID from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(REVENUESPLIT.ID))
or
((((select count(*) from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(REVENUESPLIT.ID)) = 0)
or
not exists(select * from dbo.CHARITYCLAIMREFERENCENUMBER CCRN2
inner join dbo.CHARITYCLAIMREFERENCENUMBERSITE CCRNS2 on CCRNS2.CHARITYCLAIMREFERENCENUMBERID = CCRN2.ID
where CCRNS2.SITEID in
(select SITEID from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(REVENUESPLIT.ID))))
and
(CCRN.ID not in (select CHARITYCLAIMREFERENCENUMBERID from dbo.CHARITYCLAIMREFERENCENUMBERSITE))))
)
and CONSTITUENT.ISORGANIZATION = 0
and CONSTITUENT.ISGROUP = 0
and (REVENUESPLITGIFTAID.RULES_STATUS = 1 and REVENUESPLITGIFTAID.ATTRIBUTES_STATUS = 1)
and (DECLINESGIFTAID = 0)
and (ISCOVENANT = 0)
and (ISSPONSORSHIP = 0)
and (@STARTDATE is null or REVENUE.DATE >= dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE))
and (@ENDDATE is null or REVENUE.DATE <= dbo.UFN_DATE_GETLATESTTIME(@ENDDATE))
and (@CONSTITUENTSELECTIONID is null or not [IDSET].ID is null)
and REVENUE.TRANSACTIONTYPECODE = 0
and REVENUESPLIT.APPLICATIONCODE in (0,1,2,3,4,5)
and (@ISADMIN = 1 or
(
(dbo.UFN_SECURITY_APPUSER_GRANTED_SMARTQUERY_FORCONSTIT(@CURRENTAPPUSERID, '2548b775-732f-42fa-8a61-3c70d957c7e1', CONSTITUENT.ID) = 1)
and
(dbo.UFN_SECURITY_APPUSER_GRANTED_SMARTQUERY_FORCONSTIT_BYSITE(@CURRENTAPPUSERID, '2548b775-732f-42fa-8a61-3c70d957c7e1', CONSTITUENT.ID) = 1)
)
)
-- Apply site security for each revenue split
and (@ISADMIN = 1 or
exists
(
select
1
from
dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_SMARTQUERY as SECURITYVIEW
left join dbo.SITEPERMISSION on SITEPERMISSION.APPUSERID = SECURITYVIEW.APPUSERID and SITEPERMISSION.SYSTEMROLEID = SECURITYVIEW.SYSTEMROLEID
where
SECURITYVIEW.APPUSERID = @CURRENTAPPUSERID and
SECURITYVIEW.SMARTQUERYCATALOGID = @SMARTQUERYCATALOGID and
SECURITYVIEW.GRANTORDENY = 1 and
(
SECURITYVIEW.SITESECURITYMODE = 0
or
(SECURITYVIEW.SITESECURITYMODE = 1 and (select count(*) from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(REVENUESPLIT.ID) where SITEID is null) <> 0)
or
SITEPERMISSION.SITEID in (select SITEID from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(REVENUESPLIT.ID))
)
)
)
group by CONSTITUENT.NAME, CONSTITUENT.ID
) as DATA
order by DONATIONSRECEIVED desc;
return;
end;