USP_RPT_GIVINGLISTDETAIL
Definition
Copy
CREATE procedure [BBDW].[USP_RPT_GIVINGLISTDETAIL] as
--#CONSTITUENCIES
create table #CONSTITUENCIES ([CONSTITUENCY] nvarchar(100), [CONSTITUENTDIMID] int);
insert into #CONSTITUENCIES ([CONSTITUENCY], [CONSTITUENTDIMID])
select
DC.[CONSTITUENCY],
FC.[CONSTITUENTDIMID]
from BBDW.[FACT_CONSTITUENCY] FC
inner join BBDW.[DIM_CONSTITUENCY] DC on FC.[CONSTITUENCYDIMID] = DC.[CONSTITUENCYDIMID];
CREATE CLUSTERED INDEX ix_tempCIndexAft ON #CONSTITUENCIES ([CONSTITUENTDIMID]);
insert into BBDW.[RPT_GIVINGLISTDETAIL]
(
[FINANCIALTRANSACTIONSYSTEMID],
[FINANCIALTRANSACTIONLINEITEMSYSTEMID],
[CONSTITUENTLOOKUPID],
[CONSTITUENTSYSTEMID],
[NAME],
[PRIMARYEMAILADDRESS],
[PRIMARYPHONE],
[DONOTEMAIL],
[DONOTCALL],
[PRIMARYADDRESS],
[CITYSTATEZIP],
[PRIMARYADDRESSCITY],
[PRIMARYADDRESSSTATEABBREVIATION],
[PRIMARYADDRESSPOSTCODE],
[GIVENANONYMOUSLY],
[ISORGANIZATION],
[ISCONSTITUENT],
[ISGROUP],
[ISACTIVE],
[ISDECEASED],
[FINANCIALTRANSACTIONLINEITEMPOSTDATE],
[FINANCIALTRANSACTIONDATE],
[TRANAPPLICATION],
[CAMPAIGNS],
[APPEALNAME],
[DESIGNATIONLOOKUPID],
[DESIGNATIONNAME],
[DESIGNATIONREPORT1CODE],
[DESIGNATIONREPORT2CODE],
[ISO4217],
[FINANCIALTRANSACTIONLINEITEMAMOUNT],
[ORGANIZATIONCURRENCYSYSTEMID],
[FINANCIALTRANSACTIONLINEITEMBASEAMOUNT],
[BASECURRENCYSYSTEMID],
[FINANCIALTRANSACTIONLINEITEMTRANSACTIONAMOUNT],
[TRANSACTIONCURRENCYSYSTEMID],
[ISSPLIT],
[FIRSTTIMEDONATION],
[FINANCIALTRANSACTIONAMOUNT],
[FINANCIALTRANSACTIONLOOKUPID],
[PROSPECTMANAGERFULLNAME],
[CONSTITUENCY],
[RECOGNITION],
[SOLICITORS],
[SITES],
[REVENUECHANNELDESCRIPTION],
[REVENUEPAYMENTMETHOD],
[REVENUEAPPLICATION],
[REVENUEAPPLICATIONCODE],
[GLREVENUECATEGORYNAME]
)
select
LI.[FINANCIALTRANSACTIONSYSTEMID],
LI.[FINANCIALTRANSACTIONLINEITEMSYSTEMID],
C.[CONSTITUENTLOOKUPID],
LI.[CONSTITUENTSYSTEMID],
case
when C.[CONSTITUENTDIMID] = 0 then ''
else
case
when C.[ISCONSTITUENT] = 1 and C.[ISGROUP] = 0 and C.[ISORGANIZATION] = 0 then
case
when (nullif(C.[FIRSTNAME], '') is null) and (nullif(C.[MIDDLENAME], '') is null) then C.[KEYNAME]
when (nullif(C.[FIRSTNAME], '') is null) and not (nullif(C.[MIDDLENAME], '') is null) then C.[KEYNAME] + ', ' + C.[MIDDLENAME]
when not (nullif(C.[FIRSTNAME], '') is null) and (nullif(C.[MIDDLENAME], '') is null) then C.[KEYNAME] + ', ' + C.[FIRSTNAME]
else C.[KEYNAME] + ', ' + C.[FIRSTNAME] + ' ' + C.[MIDDLENAME]
end
else
C.[FULLNAME]
end
end as [NAME],
case when C.[CONSTITUENTDIMID] = 0 then '' else C.[PRIMARYEMAILADDRESS] end [PRIMARYEMAILADDRESS],
case when C.[CONSTITUENTDIMID] = 0 then '' else C.[PRIMARYPHONE] end [PRIMARYPHONE],
case when C.[CONSTITUENTDIMID] = 0 then '' else C.[DONOTEMAIL] end [DONOTEMAIL],
case when C.[CONSTITUENTDIMID] = 0 then '' else C.[DONOTCALL] end [DONOTCALL],
case when C.[CONSTITUENTDIMID] = 0 then '' else C.[PRIMARYADDRESS] end [PRIMARYADDRESS],
case when C.[CONSTITUENTDIMID] = 0 then '' else isnull(C.[PRIMARYADDRESSCITY] + ', ' + isnull(C.[PRIMARYADDRESSSTATEABBREVIATION], '') + isnull(C.[PRIMARYADDRESSPOSTCODE], ''), '') end [CITYSTATEZIP],
case when C.[CONSTITUENTDIMID] = 0 then '' else C.[PRIMARYADDRESSCITY] end [PRIMARYADDRESSCITY],
case when C.[CONSTITUENTDIMID] = 0 then '' else C.[PRIMARYADDRESSSTATEABBREVIATION] end [PRIMARYADDRESSSTATEABBREVIATION],
case when C.[CONSTITUENTDIMID] = 0 then '' else C.[PRIMARYADDRESSPOSTCODE] end [PRIMARYADDRESSPOSTCODE],
case when REVENUEFLAG.[GIVENANONYMOUSLY] = 0 then 0 else 1 end [GIVENANONYMOUSLY],
C.[ISORGANIZATION],
C.[ISCONSTITUENT],
C.[ISGROUP],
C.[ISACTIVE],
C.[ISDECEASED],
convert(date,LI.[FINANCIALTRANSACTIONLINEITEMPOSTDATE]) [FINANCIALTRANSACTIONLINEITEMPOSTDATE],
convert(date,FT.[FINANCIALTRANSACTIONDATE]) [FINANCIALTRANSACTIONDATE],
REVENUECODE.[REVENUETRANSACTIONTYPE] + ' -> ' + REVENUECODE.[REVENUEAPPLICATION] [TRANAPPLICATION],
isnull(gc.[CAMPAIGNS], '') [CAMPAIGNS],
case when LI.[APPEALDIMID] = 0 then '' else APPEAL.[APPEALNAME] end as [APPEALNAME],
case when D.[DESIGNATIONDIMID] = 0 then '' else D.[DESIGNATIONLOOKUPID] end as [DESIGNATIONLOOKUPID],
case when D.[DESIGNATIONDIMID] = 0 then '' else D.[DESIGNATIONNAME] end as [DESIGNATIONNAME],
case when D.[DESIGNATIONDIMID] = 0 then '' else D.[DESIGNATIONREPORT1CODE] end as [DESIGNATIONREPORT1CODE],
case when D.[DESIGNATIONDIMID] = 0 then '' else D.[DESIGNATIONREPORT2CODE] end as [DESIGNATIONREPORT2CODE],
TRANSCURRENCY.[ISO4217] as [ISO4217],
LI.[FINANCIALTRANSACTIONLINEITEMAMOUNT],
(select [CURRENCYSYSTEMID] from BBDW.[DIM_CURRENCY] where [ISORGANIZATIONCURRENCY] = 1) [ORGANIZATIONCURRENCYSYSTEMID],
LI.[FINANCIALTRANSACTIONLINEITEMBASEAMOUNT],
BASECURRENCY.[CURRENCYSYSTEMID] as [BASECURRENCYSYSTEMID],
LI.[FINANCIALTRANSACTIONLINEITEMTRANSACTIONAMOUNT],
TRANSCURRENCY.[CURRENCYSYSTEMID] as [TRANSACTIONCURRENCYSYSTEMID],
case when LI.[FINANCIALTRANSACTIONLINEITEMAMOUNT] < FT.[AMOUNT] then 1 else 0 end [ISSPLIT],
coalesce(FD.[DONOR], 0) as [FIRSTTIMEDONATION],
LI.[FINANCIALTRANSACTIONAMOUNT],
LI.[FINANCIALTRANSACTIONLOOKUPID],
case
when PROSPECTMANAGER.[CONSTITUENTDIMID] = 0 then ''
else
case
when PROSPECTMANAGER.[ISCONSTITUENT] = 1 and PROSPECTMANAGER.[ISGROUP] = 0 and PROSPECTMANAGER.[ISORGANIZATION] = 0 then
case
when (nullif(PROSPECTMANAGER.[FIRSTNAME], '') is null) and (nullif(PROSPECTMANAGER.[MIDDLENAME], '') is null) then PROSPECTMANAGER.[KEYNAME]
when (nullif(PROSPECTMANAGER.[FIRSTNAME], '') is null) and not (nullif(PROSPECTMANAGER.[MIDDLENAME], '') is null) then PROSPECTMANAGER.[KEYNAME] + ', ' + PROSPECTMANAGER.[MIDDLENAME]
when not (nullif(PROSPECTMANAGER.[FIRSTNAME], '') is null) and (nullif(PROSPECTMANAGER.[MIDDLENAME], '') is null) then PROSPECTMANAGER.[KEYNAME] + ', ' + PROSPECTMANAGER.[FIRSTNAME]
else PROSPECTMANAGER.[KEYNAME] + ', ' + PROSPECTMANAGER.[FIRSTNAME] + ' ' + PROSPECTMANAGER.[MIDDLENAME]
end
else
PROSPECTMANAGER.[FULLNAME]
end
end as [PROSPECTMANAGERFULLNAME],
left(isnull(case
when C.[CONSTITUENTDIMID] = 0 then '' else
stuff((
select ', ' + C.[CONSTITUENCY]
from #CONSTITUENCIES as C
where C.[CONSTITUENTDIMID] = LI.[CONSTITUENTDIMID]
for xml path ('')
), 1, 2, '')
end, ''),4000) [CONSTITUENCY]
,isnull(gr.[RECOGNITION], '') [RECOGNITION]
,isnull(gf.[SOLICITORS], '') [SOLICITORS]
,isnull(gs.[SITES], '') [SITES],
CHANNEL.[REVENUECHANNELDESCRIPTION],
REVENUECODE.[REVENUEPAYMENTMETHOD],
REVENUECODE.[REVENUEAPPLICATION],
REVENUECODE.[REVENUEAPPLICATIONCODE],
case when GLRC.[GLREVENUECATEGORYDIMID] = 0 then '' else GLRC.[GLREVENUECATEGORYNAME] end [GLREVENUECATEGORYNAME]
from
BBDW.[FACT_FINANCIALTRANSACTIONLINEITEM] LI
inner join BBDW.[FACT_FINANCIALTRANSACTION] FT on FT.[FINANCIALTRANSACTIONFACTID] = LI.[FINANCIALTRANSACTIONFACTID]
inner join BBDW.[DIM_REVENUEFLAG] REVENUEFLAG on REVENUEFLAG.[REVENUEFLAGDIMID] = LI.[REVENUEFLAGDIMID]
inner join BBDW.[DIM_REVENUECHANNEL] CHANNEL on CHANNEL.[REVENUECHANNELDIMID] = FT.[REVENUECHANNELDIMID]
inner join BBDW.[DIM_CONSTITUENT] C on C.[CONSTITUENTDIMID] = LI.[CONSTITUENTDIMID]
inner join BBDW.[DIM_REVENUECODE] REVENUECODE on REVENUECODE.[REVENUECODEDIMID] = LI.[REVENUECODEDIMID]
inner join BBDW.[DIM_DESIGNATION] D on D.[DESIGNATIONDIMID] = LI.[DESIGNATIONDIMID]
inner join BBDW.[DIM_PURPOSELEVEL] PURPOSELEVEL on PURPOSELEVEL.[PURPOSELEVELDIMID] = coalesce(nullif(D.[PURPOSELEVEL5DIMID], 0), nullif(D.[PURPOSELEVEL4DIMID], 0), nullif(D.[PURPOSELEVEL3DIMID], 0), nullif(D.PURPOSELEVEL2DIMID, 0), D.[PURPOSELEVEL1DIMID])
inner join BBDW.[DIM_APPEAL] APPEAL on APPEAL.[APPEALDIMID] = LI.[APPEALDIMID]
inner join BBDW.[DIM_CURRENCY] BASECURRENCY on BASECURRENCY.[CURRENCYDIMID] = LI.[BASECURRENCYDIMID]
inner join BBDW.[DIM_CURRENCY] TRANSCURRENCY on TRANSCURRENCY.[CURRENCYDIMID] = FT.[TRANSACTIONCURRENCYDIMID]
inner join BBDW.[DIM_GLREVENUECATEGORY] GLRC on GLRC.[GLREVENUECATEGORYDIMID] = LI.[GLREVENUECATEGORYDIMID]
left join BBDW.[RPT_GIVINGLISTDETAIL_RECOGNITION] gr on LI.[FINANCIALTRANSACTIONLINEITEMFACTID] = gr.[FINANCIALTRANSACTIONLINEITEMFACTID]
left join BBDW.[RPT_GIVINGLISTDETAIL_CAMPAIGNS] gc on LI.[FINANCIALTRANSACTIONLINEITEMFACTID] = gc.[FINANCIALTRANSACTIONLINEITEMFACTID]
left join BBDW.[RPT_GIVINGLISTDETAIL_SOLICITORS] gf on LI.[FINANCIALTRANSACTIONLINEITEMFACTID] = gf.[FINANCIALTRANSACTIONLINEITEMFACTID]
left join BBDW.[RPT_GIVINGLISTDETAIL_SITES] gs on LI.[FINANCIALTRANSACTIONLINEITEMFACTID] = gs.[FINANCIALTRANSACTIONLINEITEMFACTID]
left join BBDW.[DIM_PROSPECT] PROSPECT on PROSPECT.[CONSTITUENTDIMID] = C.[CONSTITUENTDIMID]
left join BBDW.[DIM_CONSTITUENT] PROSPECTMANAGER on PROSPECTMANAGER.[CONSTITUENTDIMID] = PROSPECT.[FUNDRAISERDIMID]
left join (
select
row_number() over(partition by [CONSTITUENTDIMID] order by [FINANCIALTRANSACTIONDATEDIMID] asc, [FINANCIALTRANSACTIONSEQUENCEID] asc) [ROWNUM],
1 as [DONOR],
[CONSTITUENTDIMID],
[FINANCIALTRANSACTIONFACTID]
from BBDW.[FACT_FINANCIALTRANSACTION]
) FD on FD.[FINANCIALTRANSACTIONFACTID] = FT.[FINANCIALTRANSACTIONFACTID] and fd.[ROWNUM] = 1
where
REVENUECODE.[REVENUETRANSACTIONTYPECODE] in (0,1,3,4,6,7,8,9)
and REVENUECODE.[REVENUEAPPLICATIONCODE] != -1
and REVENUEFLAG.[ISDELETEDFINANCIALTRANSACTIONLINEITEM] = 0;
drop table #CONSTITUENCIES;