UFN_CONSTITUENT_GETCOMMITMENTS
Returns a semi-colon separated list of the commitments a constituent has.
Return
Return Type |
---|
nvarchar(1000) |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_CONSTITUENT_GETCOMMITMENTS
(
@CONSTITUENTID uniqueidentifier
)
returns nvarchar(1000)
with execute as caller
as
begin
declare @LIST nvarchar(1000);
declare @SEPERATOR nvarchar(2);
declare @HASPLEDGE bit;
declare @HASPLANNEDGIFT bit;
declare @HASMGPLEDGE bit;
declare @HASRECURRINGGIFT bit;
declare @HASEVENT bit;
declare @HASMEMBERSHIP bit;
declare @HASDONORCHALLENGE bit;
declare @HASGRANTAWARD bit;
select
@HASPLEDGE = 0,
@HASPLANNEDGIFT = 0,
@HASMGPLEDGE = 0,
@HASRECURRINGGIFT = 0,
@HASEVENT = 0,
@HASMEMBERSHIP = 0,
@HASDONORCHALLENGE = 0,
@HASGRANTAWARD = 0
set @LIST = N'';
/* PDG 10.03.2006 OPTIMIZED THESE 3 SEPARATE MULTI-JOINS INTO THE SINGLE SELECT BELOW
select
@HASPLEDGE = case when count(REVENUE.ID) = 0 then 0 else 1 end
from dbo.REVENUE
where REVENUE.CONSTITUENTID = @CONSTITUENTID
and REVENUE.TRANSACTIONTYPECODE = 1
and dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID) > 0;
select
@HASMGPLEDGE = case when count(REVENUE.ID) = 0 then 0 else 1 end
from dbo.REVENUE
where REVENUE.CONSTITUENTID = @CONSTITUENTID
and REVENUE.TRANSACTIONTYPECODE = 3
and dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID) > 0;
select
@HASRECURRINGGIFT = case when count(REVENUE.ID) = 0 then 0 else 1 end
from dbo.REVENUE
inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUE.ID
where REVENUE.CONSTITUENTID = @CONSTITUENTID
and REVENUE.TRANSACTIONTYPECODE = 2
and REVENUESCHEDULE.STATUSCODE = 0
and REVENUE.TRANSACTIONAMOUNT > 0;
*/
--PDG 10.03.2006 BEGIN
select
@HASPLEDGE = sum(
case
when REVENUE.TYPECODE = 1 and dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID) > 0 AND coalesce(RDS.ISPENDING,0) = 0 then 1 else 0 end
),
@HASPLANNEDGIFT = sum(
case
when REVENUE.TYPECODE = 4 and dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID) > 0 AND coalesce(RDS.ISPENDING,0) = 0 then 1 else 0 end
),
@HASMGPLEDGE = sum(
case
when REVENUE.TYPECODE = 3 and dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID) > 0 AND coalesce(RDS.ISPENDING,0) = 0 then 1 else 0 end
),
@HASRECURRINGGIFT = sum(
case
when REVENUE.TYPECODE = 2 and REVENUE.TRANSACTIONAMOUNT > 0 AND RDS.STATUSCODE in (0,5) AND coalesce(RDS.ISPENDING,0) = 0 then 1 else 0 end
),
@HASDONORCHALLENGE = sum(
case
when REVENUE.TYPECODE = 8 and dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID) > 0 AND coalesce(RDS.ISPENDING,0) = 0 then 1 else 0 end
),
@HASGRANTAWARD = sum(
case
when REVENUE.TYPECODE = 6 and dbo.UFN_PLEDGE_GETBALANCE(REVENUE.ID) > 0 AND coalesce(RDS.ISPENDING,0) = 0 then 1 else 0 end
)
from dbo.FINANCIALTRANSACTION REVENUE
left outer join dbo.REVENUESCHEDULE AS RDS on RDS.ID = REVENUE.ID
where REVENUE.CONSTITUENTID = @CONSTITUENTID
AND REVENUE.TYPECODE IN (1,2,3,4,6,8);
--PDG 10.03.2006 END
select
@HASEVENT = case when count(REGISTRANT.ID) = 0 then 0 else 1 end
from dbo.REGISTRANT
where REGISTRANT.CONSTITUENTID = @CONSTITUENTID
and dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID) > 0
--select
-- @HASMEMBERSHIP = case when count(MEMBER.ID) = 0 then 0 else 1 end
--from dbo.MEMBER
--where MEMBER.CONSTITUENTID = @CONSTITUENTID;
--and MEMBER.ISDROPPED = 0;
set @SEPERATOR = '';
if @HASPLEDGE = 1
begin
set @LIST = @LIST + @SEPERATOR + 'Pledge' ;
set @SEPERATOR = '; ';
end
if @HASPLANNEDGIFT = 1
begin
set @LIST = @LIST + @SEPERATOR + 'Planned Gift' ;
set @SEPERATOR = '; ';
end
if @HASMGPLEDGE = 1
begin
set @LIST = @LIST + @SEPERATOR + 'Matching Gift Claim';
set @SEPERATOR = '; ';
end
if @HASRECURRINGGIFT = 1
begin
set @LIST = @LIST + @SEPERATOR + 'Recurring Gift';
set @SEPERATOR = '; ';
end
if @HASEVENT = 1
begin
set @LIST = @LIST + @SEPERATOR + 'Event';
set @SEPERATOR = '; ';
end
--if @HASMEMBERSHIP = 1
--begin
-- set @LIST =@LIST + @SEPERATOR + 'Membership';
-- set @SEPERATOR = '; ';
--end
if @HASDONORCHALLENGE = 1
begin
set @LIST = @LIST + @SEPERATOR + 'Donor Challenge Claim';
set @SEPERATOR = '; ';
end
if @HASGRANTAWARD = 1
begin
set @LIST = @LIST + @SEPERATOR + 'Grant Award';
set @SEPERATOR = '; ';
end
return @LIST;
end