USP_BBNC_GETOFFLINEGIFTS
Gets a list of offline gifts for a team fundraiser to satisfy a GetFunds request.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@APPEALMAPID | int | IN | |
@SOLICITORCONSTITUENTMAPID | int | IN | |
@COMMENTNOTETITLE | nvarchar(100) | IN |
Definition
Copy
CREATE procedure dbo.USP_BBNC_GETOFFLINEGIFTS
(
@APPEALMAPID int,
@SOLICITORCONSTITUENTMAPID int,
@COMMENTNOTETITLE nvarchar(100) = null
)
as
set nocount on;
declare @REVENUENOTETYPECODEID uniqueidentifier;
select top 1 @REVENUENOTETYPECODEID = REVENUENOTETYPECODEID from dbo.NETCOMMUNITYDEFAULTCODEMAP;
--JamesWill 2008-03-07 Broke most of this out into a CTE so it would be easier to add [PAYSID], [HASPAYMENTS], and [ONLINEGIFT]. This, in turn, makes it easier
--to filter out payments to online pledges and offline pledges with payments. Also now joining on REVENUESOLICITOR as part of a subexpression in the CTE to elimate
--most of the group by clauses (which were getting in the way of the [PAYSID], [HASPAYMENTS], and [ONLINEGIFT]). I think it should also be a little easier to read
--and work with now.
with [CTE] as
(
select
BBNCREVENUESPLITIDMAP.ID as [REVENUESPLITBBNCID],
REVENUEBBNC.NETCOMMUNITYTRANSACTIONID,
[SOLICITOR].AMOUNT,
REVENUE.ID,
REVENUE.TRANSACTIONTYPECODE,
REVENUE.DATE,
REVENUE.GIVENANONYMOUSLY,
REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
REVENUE.CONSTITUENTID as [DONORID],
(select top 1 PLEDGEID from dbo.INSTALLMENTPAYMENT where PAYMENTID = REVENUE.ID) as [PAYSID],
case when (select count(INSTALLMENTPAYMENT.PAYMENTID) from dbo.INSTALLMENTPAYMENT where PLEDGEID = REVENUE.ID) > 0 then 1 else 0 end as [HASPAYMENTS],
case when REVENUEBBNC.ID is null then 0 else 1 end as [ONLINEGIFT]
from dbo.REVENUE
inner join dbo.REVENUESPLIT on REVENUE.ID = REVENUESPLIT.REVENUEID
inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
inner join dbo.BBNCAPPEALIDMAP on REVENUE.APPEALID = BBNCAPPEALIDMAP.APPEALID and BBNCAPPEALIDMAP.ID = @APPEALMAPID
inner join
(
select
REVENUESOLICITOR.REVENUESPLITID,
sum(REVENUESOLICITOR.AMOUNT) as [AMOUNT]
from dbo.REVENUESOLICITOR
inner join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUESOLICITOR.CONSTITUENTID
where CONSTITUENT.SEQUENCEID = @SOLICITORCONSTITUENTMAPID
group by
REVENUESOLICITOR.REVENUESPLITID
) as [SOLICITOR] on [SOLICITOR].REVENUESPLITID = REVENUESPLIT.ID
left join dbo.REVENUEBBNC on REVENUEBBNC.ID = REVENUE.ID
left join dbo.BBNCREVENUESPLITIDMAP on BBNCREVENUESPLITIDMAP.REVENUESPLITID = REVENUESPLIT.ID
where
REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE in (0, 1, 2, 3, 9) --TODO Verify these are the right payment methods to include
and
(
--TODO Verify these are the right revenue types to include
REVENUE.TRANSACTIONTYPECODE <> 2 -- Exclude recurring gifts
and
REVENUESPLIT.APPLICATIONCODE not in (1, 5) -- Exclude revenue applied to event registrations and memberships
)
)
select
[CTE].REVENUESPLITBBNCID,
[CTE].AMOUNT,
[CTE].DATE,
[CTE].GIVENANONYMOUSLY,
[CTE].PAYMENTMETHODCODE,
(
select top 1
REVENUENOTE.TEXTNOTE
from dbo.REVENUENOTE
where REVENUENOTE.REVENUEID = [CTE].ID
and REVENUENOTE.REVENUENOTETYPECODEID = @REVENUENOTETYPECODEID
order by REVENUENOTE.DATEADDED
) [COMMENT],
CONSTITUENT.FIRSTNAME as [DONORFIRSTNAME],
CONSTITUENT.KEYNAME as [DONORLASTNAME],
(select top 1 DESCRIPTION from dbo.TITLECODE where ID = CONSTITUENT.TITLECODEID) as [DONORTITLECODE],
CONSTITUENT.ISORGANIZATION as [DONORISORGANIZATION],
CONSTITUENT.NAME as [DONORNAME],
(select top 1 EMAILADDRESS from dbo.EMAILADDRESS where CONSTITUENTID = CONSTITUENT.ID and ISPRIMARY = 1) as [EMAILADDRESS],
[CTE].NETCOMMUNITYTRANSACTIONID
from [CTE]
inner join dbo.CONSTITUENT on CONSTITUENT.ID = [CTE].DONORID
left join dbo.TITLECODE on CONSTITUENT.TITLECODEID = TITLECODE.ID
where
([CTE].[PAYSID] is null or (select top 1 ID from dbo.REVENUEBBNC where ID = [PAYSID]) is null) --Exclude payments for pledges that originated online (See RE7XData/FundDataFetch.vb)
and ([CTE].TRANSACTIONTYPECODE <> 1 or [CTE].ONLINEGIFT = 1 or [CTE].HASPAYMENTS = 0) --Exclude payments for pledges that originated in the backoffice and have payments (See RE7XData/FundDataFetch.vb)
order by [CTE].REVENUESPLITBBNCID