UFN_REVENUEBATCH_GETCONSTITUENTIDFROMAPPLICATIONS
Find the constituent ID by looking at the commitments in revenue streams.
Return
Return Type |
---|
uniqueidentifier |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUESTREAMS | xml | IN |
Definition
Copy
CREATE function dbo.UFN_REVENUEBATCH_GETCONSTITUENTIDFROMAPPLICATIONS
(
@REVENUESTREAMS as xml
)
returns uniqueidentifier
with execute as caller
as begin
declare @CONSTITUENTID uniqueidentifier;
declare @REVENUEAPPLICATIONS table
(
CONSTITUENTID uniqueidentifier,
APPLICATIONCOMMITMENTID uniqueidentifier
);
-- Hold all of the constituents from the commitments to see if they are all the same
declare @CONSTITUENTS table
(
ID uniqueidentifier
);
insert into @REVENUEAPPLICATIONS(CONSTITUENTID, APPLICATIONCOMMITMENTID)
select CONSTITUENTID, APPLICATIONCOMMITMENTID
from dbo.UFN_REVENUEBATCH_GETAPPLICATIONSWITHCHILDREN_FROMITEMLISTXML(@REVENUESTREAMS);
declare @NUMBEROFAPPLICATIONCONSTITUENTS integer;
select @NUMBEROFAPPLICATIONCONSTITUENTS = COUNT(distinct CONSTITUENTID) from @REVENUEAPPLICATIONS where CONSTITUENTID is not null
if @NUMBEROFAPPLICATIONCONSTITUENTS = 1
begin
select top 1 @CONSTITUENTID = CONSTITUENTID from @REVENUEAPPLICATIONS where CONSTITUENTID is not null
end
else if @NUMBEROFAPPLICATIONCONSTITUENTS < 1
begin
declare @NUMBEROFAPPLICATIONCOMMITMENTIDS integer;
select @NUMBEROFAPPLICATIONCOMMITMENTIDS = COUNT(APPLICATIONCOMMITMENTID) from @REVENUEAPPLICATIONS where APPLICATIONCOMMITMENTID is not null
if @NUMBEROFAPPLICATIONCOMMITMENTIDS > 0
begin
insert into @CONSTITUENTS
select REGISTRANT.CONSTITUENTID
from @REVENUEAPPLICATIONS REVAPPS
inner join dbo.REGISTRANT on REVAPPS.APPLICATIONCOMMITMENTID = REGISTRANT.ID
insert into @CONSTITUENTS
select
case
when MEMBERSHIP.ISGIFT = 1 and MEMBERSHIP.SENDRENEWALCODE = 0 then MEMBERSHIP.GIVENBYID
else MEMBER.CONSTITUENTID
end
from @REVENUEAPPLICATIONS REVAPPS
inner join dbo.MEMBERSHIP on REVAPPS.APPLICATIONCOMMITMENTID = MEMBERSHIP.ID
inner join dbo.MEMBER on MEMBERSHIP.ID = MEMBER.MEMBERSHIPID
where MEMBER.ISPRIMARY = 1
insert into @CONSTITUENTS
select REVENUE.CONSTITUENTID
from @REVENUEAPPLICATIONS REVAPPS
inner join dbo.REVENUE on REVAPPS.APPLICATIONCOMMITMENTID = REVENUE.ID
declare @DISTINCTCONSTITUENTS as integer;
select @DISTINCTCONSTITUENTS = COUNT(DISTINCT ID)
from @CONSTITUENTS
if @DISTINCTCONSTITUENTS = 1
select top 1 @CONSTITUENTID = ID from @CONSTITUENTS
else
select @CONSTITUENTID = null
end
end
else
select @CONSTITUENTID = null
return @CONSTITUENTID
end