V_QUERY_RECEIPTING_EMAILGIFTSUMMARYOUTPUT
View used for consolidated email gift summary output for the receipting process.
Fields
Field | Field Type | Null | Description |
---|---|---|---|
CONSTITUENTID | uniqueidentifier | Constituent ID | |
CONSTITUENTNAME | nvarchar(154) | yes | Constituent name |
CONSTITUENTLOOKUPID | nvarchar(100) | yes | Constituent lookup ID |
PRIMARYADDRESSEE | nvarchar(700) | yes | Primary addressee |
PRIMARYSALUTATION | nvarchar(700) | yes | Primary salutation |
PRIMARYCONTACT | nvarchar(154) | yes | Primary contact |
POSITION | nvarchar(100) | yes | Position |
EMAILADDRESS | UDT_EMAILADDRESS | yes | Email address |
CONSTITUENTPAYMENTAMOUNT | money | yes | Total constituent payment amount |
CONSTITUENTRECEIPTAMOUNT | money | yes | Total constituent receipt amount |
CONSTITUENTBENEFITAMOUNT | money | Total constituent benefit amount | |
NUMBEROFTRANSACTIONS | int | yes | Total number of transactions |
TOTALPORTIONSUBJECTTOVAT | money | yes | Total portion subject to VAT |
TOTALVATAMOUNT | money | yes | Total VAT amount |
TRANSACTIONCURRENCYID | uniqueidentifier | yes | Transaction currency ID |
TRANSACTIONCURRENCY | nvarchar(3) | Transaction currency | |
JOBTITLE | nvarchar(100) | yes | Job title |
Definition
Copy
/*
Generated by Blackbaud AppFx Platform
Date: 11/11/2014 4:14:45 PM
Assembly Version: Blackbaud.AppFx.Platform.SqlClr, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Copyright Blackbaud
*/
CREATE VIEW dbo.V_QUERY_RECEIPTING_EMAILGIFTSUMMARYOUTPUT AS
/*###WITH_CLAUSE_BEGIN###*/
with REVENUE_CTE as (
select -- don't need distinct here; REVENUEID is in the select clause
REVENUE.CONSTITUENTID,
REVENUE.TRANSACTIONCURRENCYID,
REVENUE.ID as REVENUEID,
REVENUE.TRANSACTIONAMOUNT,
REVENUE.RECEIPTAMOUNT
from dbo.REVENUE
where REVENUE.TRANSACTIONTYPECODE in (0, 4, 7)
and REVENUE.DONOTRECEIPT = 0
and REVENUE.RECEIPTTYPECODE = 1
and not exists (select RR.ID from REVENUERECEIPT as RR where RR.REVENUEID = REVENUE.ID and REVENUE.NEEDSRERECEIPT = 0)
), BENEFITS_CTE as (
select
REVENUE_CTE.CONSTITUENTID,
sum(REVENUEBENEFIT.TRANSACTIONTOTALVALUE) as CONSTITUENTBENEFITAMOUNT -- REVENUEBENEFIT is one-to-optional-many with REVENUE; can't join above because it will affect aggregates
from dbo.REVENUEBENEFIT
inner join REVENUE_CTE on REVENUE_CTE.REVENUEID = REVENUEBENEFIT.REVENUEID
group by REVENUE_CTE.CONSTITUENTID
), AMOUNTS_CTE as (
select
REVENUE_CTE.CONSTITUENTID,
REVENUE_CTE.TRANSACTIONCURRENCYID,
sum(REVENUE_CTE.TRANSACTIONAMOUNT) as CONSTITUENTPAYMENTAMOUNT,
sum(REVENUE_CTE.RECEIPTAMOUNT) as CONSTITUENTRECEIPTAMOUNT,
count(REVENUE_CTE.REVENUEID) as NUMBEROFTRANSACTIONS, -- don't need distinct here; REVENUE_CTE is distinct already
sum(isnull(REVENUEVAT.TRANSACTIONAMOUNTTOTAX, 0)) as TOTALPORTIONSUBJECTTOVAT, -- REVENUEVAT is one-to-optional-one with REVENUE
sum(isnull(REVENUEVAT.TRANSACTIONVATAMOUNT, 0)) as TOTALVATAMOUNT
from REVENUE_CTE
left join REVENUEVAT on REVENUEVAT.ID = REVENUE_CTE.REVENUEID
group by REVENUE_CTE.CONSTITUENTID, REVENUE_CTE.TRANSACTIONCURRENCYID
)
/*###WITH_CLAUSE_END###*/
select
CONSTITUENT.ID as CONSTITUENTID,
CONSTITUENT.NAME as CONSTITUENTNAME,
CONSTITUENT.LOOKUPID as CONSTITUENTLOOKUPID,
PRIMARYADDRESSEE.FORMATTEDNAME as PRIMARYADDRESSEE,
PRIMARYSALUTATION.FORMATTEDNAME as PRIMARYSALUTATION,
CONTACT.NAME as PRIMARYCONTACT,
PRIMARYCONTACT.POSITION as POSITION,
EMAILADDRESS.EMAILADDRESS,
/*###WITH_FIELDS_BEGIN###*/
AMOUNTS_CTE.CONSTITUENTPAYMENTAMOUNT,
AMOUNTS_CTE.CONSTITUENTRECEIPTAMOUNT,
isnull(BENEFITS_CTE.CONSTITUENTBENEFITAMOUNT, 0) as CONSTITUENTBENEFITAMOUNT,
AMOUNTS_CTE.NUMBEROFTRANSACTIONS,
AMOUNTS_CTE.TOTALPORTIONSUBJECTTOVAT,
AMOUNTS_CTE.TOTALVATAMOUNT,
AMOUNTS_CTE.TRANSACTIONCURRENCYID,
CURRENCY.ISO4217 as TRANSACTIONCURRENCY,
/*###WITH_FIELDS_END###*/
case when CONSTITUENT.ISORGANIZATION = 1 then
(select top 1 RELATIONSHIPJOBINFO.JOBTITLE
from dbo.RELATIONSHIP
inner join dbo.RELATIONSHIPJOBINFO on RELATIONSHIP.RELATIONSHIPSETID = RELATIONSHIPJOBINFO.RELATIONSHIPSETID
inner join dbo.CONSTITUENT CONTACT on RELATIONSHIP.RECIPROCALCONSTITUENTID = CONTACT.ID
where RELATIONSHIP.ISPRIMARYCONTACT = 1
and RELATIONSHIP.RELATIONSHIPCONSTITUENTID = CONSTITUENT.ID
order by RELATIONSHIPJOBINFO.STARTDATE desc)
else null end as JOBTITLE
from dbo.CONSTITUENT
/*###WITH_JOINS_BEGIN###*/
inner join AMOUNTS_CTE on AMOUNTS_CTE.CONSTITUENTID = CONSTITUENT.ID
inner join dbo.CURRENCY on CURRENCY.ID = AMOUNTS_CTE.TRANSACTIONCURRENCYID
left join BENEFITS_CTE on BENEFITS_CTE.CONSTITUENTID = AMOUNTS_CTE.CONSTITUENTID
/*###WITH_JOINS_END###*/
-- email address join
inner join dbo.UFN_ADDRESSPROCESS_EMAILS(5, null) as EMAILADDRESS on CONSTITUENT.ID = EMAILADDRESS.CONSTITUENTID
-- addressee / salutation joins
left join dbo.NAMEFORMAT as PRIMARYADDRESSEE on PRIMARYADDRESSEE.CONSTITUENTID = CONSTITUENT.ID and PRIMARYADDRESSEE.PRIMARYADDRESSEE = 1
left join dbo.NAMEFORMAT as PRIMARYSALUTATION on PRIMARYSALUTATION.CONSTITUENTID = CONSTITUENT.ID and PRIMARYSALUTATION.PRIMARYSALUTATION = 1
-- organization contact joins (there seems to be the possibility that the contact returned by email address processing might not be the primary contact,
-- but that's the way it was before as well, so...)
left join dbo.RELATIONSHIP as PRIMARYCONTACT on CONSTITUENT.ISORGANIZATION = 1 and PRIMARYCONTACT.RELATIONSHIPCONSTITUENTID = CONSTITUENT.ID and PRIMARYCONTACT.ISPRIMARYCONTACT = 1
left join dbo.CONSTITUENT as CONTACT on EMAILADDRESS.CONTACTID = CONTACT.ID