USP_REPORT_TOTALREVENUE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@INCLUDETAXES | bit | IN | |
@INCLUDESECURITYDEPOSITS | bit | IN | |
@INCLUDEUNRECEIVEDREVENUE | bit | IN | |
@FROMDATE | datetime | IN | |
@TODATE | datetime | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@APPUSERID | uniqueidentifier | IN | |
@APPUSERQUERYID | uniqueidentifier | IN | |
@SALESMETHODTYPECODE | smallint | IN | |
@SOURCEADVANCESALES | bit | IN | |
@SOURCEDAILYSALES | bit | IN | |
@SOURCEGROUPSALES | bit | IN | |
@SOURCEONLINESALES | bit | IN | |
@SOURCEBACKOFFICE | bit | IN |
Definition
Copy
create procedure dbo.USP_REPORT_TOTALREVENUE
(
@INCLUDETAXES bit = null,
@INCLUDESECURITYDEPOSITS bit = null,
@INCLUDEUNRECEIVEDREVENUE bit = null,
@FROMDATE datetime = null,
@TODATE datetime = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@APPUSERID uniqueidentifier = null,
@APPUSERQUERYID uniqueidentifier = null,
@SALESMETHODTYPECODE smallint = null, --not used anymore
@SOURCEADVANCESALES bit = null,
@SOURCEDAILYSALES bit = null,
@SOURCEGROUPSALES bit = null,
@SOURCEONLINESALES bit = null,
@SOURCEBACKOFFICE bit = null
)
as
set nocount on;
set @FROMDATE = dbo.UFN_DATE_GETEARLIESTTIME(@FROMDATE)
set @TODATE = dbo.UFN_DATE_GETLATESTTIME(@TODATE)
declare @SalesMethodCodes table (SALESMETHODTYPECODE smallint)
insert into @SalesMethodCodes (SALESMETHODTYPECODE)
select num
from dbo.NUMBERS
where (num = 0 and (@SOURCEDAILYSALES = 1 or @SALESMETHODTYPECODE = 0))
or (num = 1 and (@SOURCEADVANCESALES = 1 or @SALESMETHODTYPECODE = 1))
or (num = 2 and (@SOURCEONLINESALES = 1 or @SALESMETHODTYPECODE = 2))
or (num = 3 and (@SOURCEGROUPSALES = 1 or @SALESMETHODTYPECODE = 3))
or (num = 4 and (@SOURCEBACKOFFICE = 1 or @SALESMETHODTYPECODE = 4))
or (num < 5 and (@SALESMETHODTYPECODE = -1))
declare @INCLUDEBACKOFFICE bit = 0;
if @SOURCEBACKOFFICE = 1 or @SALESMETHODTYPECODE = -1 or @SALESMETHODTYPECODE = 4
set @INCLUDEBACKOFFICE = 1;
declare @USERISSYSADMIN bit = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
declare @USERGRANTEDTRANSACTIONPAGE bit = @USERISSYSADMIN,
@USERGRANTEDORDERPAGE bit = @USERISSYSADMIN,
@USERGRANTEDRESERVATIONPAGE bit = @USERISSYSADMIN,
@USERGRANTEDREFUNDPAGE bit = @USERISSYSADMIN,
@USERGRANTEDCONSTITUENTPAGE bit = @USERISSYSADMIN,
@USERGRANTEDREVENUEAPPLICATIONPAGE bit = @USERISSYSADMIN,
@USERGRANTEDREGISTRANTPAGE bit = @USERISSYSADMIN,
@USERGRANTEDMEMBERSHIPPAGE bit = @USERISSYSADMIN;
if @USERISSYSADMIN <> 1
begin
select
@USERGRANTEDTRANSACTIONPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'D00E6C42-2434-4D85-8A04-2323CA6BB2E7'),
@USERGRANTEDORDERPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, '9C4D9D19-BB7E-4656-9B78-7EE1930C009A'),
@USERGRANTEDRESERVATIONPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'C8E970CA-858A-4066-AD34-DC049A2A2DE7'),
@USERGRANTEDREFUNDPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'B2130DFA-51F6-4205-87E6-7D132573CB4D'),
@USERGRANTEDCONSTITUENTPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, '0C836902-A398-47a0-91EB-8B66E434148E'),
@USERGRANTEDREVENUEAPPLICATIONPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, '32C309D8-E111-4DFE-B777-69206707512F'),
@USERGRANTEDREGISTRANTPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'D7A6E035-4F35-4784-BD57-B506CEAA8CE5'),
@USERGRANTEDMEMBERSHIPPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'D56E385D-AF02-464D-AD07-8C2FBE88246D');
end;
-- These will remain empty if there's no @APPUSERID or @APPUSERQUERYID specified.
declare @APPUSERFILTER dbo.UDT_GENERICID; -- Contains the IDs of appusers to filter on
declare @CHANGEAGENTFILTER dbo.UDT_GENERICID; -- Contains all CHANGAGENTIDS associated with the appusers we're filtering on. Used to filter FINANCIALTRANSACTIONS.
declare @HASAPPUSERFILTER bit = case when (@APPUSERID is not null or @APPUSERQUERYID is not null) then 1 else 0 end;
if @HASAPPUSERFILTER = 1
begin
if @APPUSERID is not null
begin
insert into @APPUSERFILTER (ID)
select @APPUSERID;
end
else if @APPUSERQUERYID is not null
begin
insert into @APPUSERFILTER (ID)
select distinct ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@APPUSERQUERYID);
end
-- Include IDs and CHANGEAGENTIDS only for the users who should be included in the final results.
insert into @CHANGEAGENTFILTER (ID)
select distinct CHANGEAGENT.ID
from @APPUSERFILTER APPUSERFILTER
inner join dbo.APPUSER on APPUSER.ID = APPUSERFILTER.ID -- Inner join to only include the users we're filtering on
inner join dbo.CHANGEAGENT on CHANGEAGENT.USERNAME = APPUSER.USERNAME;
end
if object_id('tempdb..#TEMP_DATA_TOTALREVENUEREPORT_REVENUE') is not null
drop table tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUE;
if object_id('tempdb..#TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS') is not null
drop table tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS;
if object_id('tempdb..#EarnedTotal') is not null
drop table tempdb.#EarnedTotal;
if object_id('tempdb..#TMP_DATA_TOTALREVENUEREPORT_NONGSREFUNDS') is not null
drop table tempdb.#TMP_DATA_TOTALREVENUEREPORT_NONGSREFUNDS;
create table #EarnedTotal (ID uniqueidentifier primary key, Total money)
insert into #EarnedTotal (ID, Total)
select FT.ID,
sum(FTLI.TRANSACTIONAMOUNT) as EarnedTotal
from dbo.FINANCIALTRANSACTION FT
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FT.ID = FTLI.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on FTLI.ID = REVENUESPLIT_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM SOURCELI on FTLI.SOURCELINEITEMID = SOURCELI.ID
inner join dbo.FINANCIALTRANSACTION SOURCEFT on SOURCELI.FINANCIALTRANSACTIONID = SOURCEFT.ID
inner join dbo.SALESORDER on SOURCEFT.ID = SALESORDER.REVENUEID
where FT.TYPECODE = 0
and FT.CALCULATEDDATE between @FROMDATE and @TODATE
and SOURCEFT.TYPECODE = 5
and REVENUESPLIT_EXT.TYPECODE != 19 --not in (19,20)
and FTLI.DELETEDON is null
and FTLI.TYPECODE = 0
and SOURCELI.DELETEDON is null
and SOURCELI.TYPECODE = 0
and REVENUESPLIT_EXT.APPLICATIONCODE = 10
and SALESORDER.SALESMETHODTYPECODE = 3
and ((SOURCEFT.CALCULATEDDATE <= @TODATE and REVENUESPLIT_EXT.TYPECODE != 20) or (FTLI.POSTDATE < @TODATE and REVENUESPLIT_EXT.TYPECODE = 20))
--and (@INCLUDETAXES = 1 or REVENUESPLIT_EXT.TYPECODE <> 7)
group by FT.ID;
with ORDERPAYMENT_CTE as (
select
ORDERPAYMENTLINEITEM.SOURCELINEITEMID as ID,
isnull(sum(ORDERPAYMENTLINEITEM.BASEAMOUNT), 0) as BASEAMOUNT,
isnull(sum(ORDERPAYMENTLINEITEM.TRANSACTIONAMOUNT), 0) as TRANSACTIONAMOUNT
from dbo.FINANCIALTRANSACTIONLINEITEM ORDERPAYMENTLINEITEM
inner join dbo.SALESORDERPAYMENT on SALESORDERPAYMENT.PAYMENTID = ORDERPAYMENTLINEITEM.FINANCIALTRANSACTIONID
where
ORDERPAYMENTLINEITEM.SOURCELINEITEMID is not null and
ORDERPAYMENTLINEITEM.DELETEDON is null
and (
@HASAPPUSERFILTER = 0
or SALESORDERPAYMENT.APPUSERID in (select ID from @APPUSERFILTER)
)
group by ORDERPAYMENTLINEITEM.SOURCELINEITEMID
),
ORDERITEMPAYMENT_CTE as (
select
CONTRIBUTEDMEMBERSHIPLINEITEM.ID,
isnull(ORDERPAYMENT_CTE.BASEAMOUNT, 0) as BASEAMOUNT,
isnull(ORDERPAYMENT_CTE.TRANSACTIONAMOUNT, 0) as TRANSACTIONAMOUNT
from dbo.FINANCIALTRANSACTIONLINEITEM CONTRIBUTEDMEMBERSHIPLINEITEM
inner join dbo.REVENUESPLIT_EXT CONTRIBUTEDMEMBERSHIPSPLIT on CONTRIBUTEDMEMBERSHIPSPLIT.ID = CONTRIBUTEDMEMBERSHIPLINEITEM.ID
inner join dbo.SALESORDER on CONTRIBUTEDMEMBERSHIPLINEITEM.FINANCIALTRANSACTIONID = SALESORDER.REVENUEID
left join ORDERPAYMENT_CTE on CONTRIBUTEDMEMBERSHIPLINEITEM.ID = ORDERPAYMENT_CTE.ID
where
CONTRIBUTEDMEMBERSHIPLINEITEM.DELETEDON is null and
(
(
CONTRIBUTEDMEMBERSHIPSPLIT.TYPECODE = 0 and
CONTRIBUTEDMEMBERSHIPSPLIT.APPLICATIONCODE = 0 and
CONTRIBUTEDMEMBERSHIPLINEITEM.SOURCELINEITEMID is not null
) or
(
CONTRIBUTEDMEMBERSHIPSPLIT.TYPECODE = 2 and
CONTRIBUTEDMEMBERSHIPSPLIT.APPLICATIONCODE = 5 and
exists (
select *
from dbo.FINANCIALTRANSACTIONLINEITEM DONATIONLINEITEM
inner join dbo.REVENUESPLIT_EXT DONATIONSPLIT on DONATIONLINEITEM.ID = DONATIONSPLIT.ID
where
DONATIONSPLIT.TYPECODE = 0 and
DONATIONSPLIT.APPLICATIONCODE = 0 and
DONATIONLINEITEM.SOURCELINEITEMID = CONTRIBUTEDMEMBERSHIPSPLIT.ID
)
)
)
)
select
FINANCIALTRANSACTIONLINEITEM.ID,
REVENUESPLIT_EXT.TYPECODE,
REVENUESPLIT_EXT.APPLICATIONCODE,
case
when SALESORDER.ID is not null then 'Order-'+cast(SALESORDER.SEQUENCEID as nvarchar(10))
when FINANCIALTRANSACTION.TYPECODE = 1 then 'Pledge'
else REVENUESPLIT_EXT.APPLICATION
end REFERENCE,
case
when FINANCIALTRANSACTION.TYPECODE = 5 and ORDERITEMPAYMENT_CTE.ID is not null
then ORDERITEMPAYMENT_CTE.BASEAMOUNT
else
FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT - isnull([DISCOUNTS].AMOUNT,0)
end as AMOUNT,
case
when FINANCIALTRANSACTION.TYPECODE = 5 and ORDERITEMPAYMENT_CTE.ID is not null
then ORDERITEMPAYMENT_CTE.TRANSACTIONAMOUNT
else
FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT
end as TRANSACTIONAMOUNT,
FINANCIALTRANSACTION.ID as FINANCIALTRANSACTIONID,
REVENUESPLIT_EXT.DESIGNATIONID,
cast(FINANCIALTRANSACTION.DATE as datetime) as TRANSACTIONDATE,
FINANCIALTRANSACTION.CONSTITUENTID,
FINANCIALTRANSACTION.TYPECODE as TRANSACTIONTYPECODE,
FINANCIALTRANSACTION.TYPE as TRANSACTIONTYPE,
SALESORDER.ID as SALESORDERID,
SALESORDER.SALESMETHODTYPECODE as SALESMETHODTYPECODE,
isnull(SALESORDER.STATUSCODE, 1) as ORDERSTATUSCODE,
REVENUESPLITORDER.PROGRAMID,
REVENUESPLITORDER.EVENTID,
REVENUESPLITORDER.EVENTLOCATIONID,
REVENUESPLITORDER.FEEID,
REVENUESPLITORDER.TAXID,
isnull(REVENUESPLITORDER.MEMBERSHIPLEVELID,REFUNDINFO.MEMBERSHIPLEVELID) as MEMBERSHIPLEVELID,
REFUNDINFO.MEMBERSHIPLEVELTERMID,
REVENUESPLITORDER.MERCHANDISEPRODUCTINSTANCEID,
REVENUESPLITORDER.RESOURCEID,
REVENUESPLITORDER.VOLUNTEERTYPEID
into tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUE
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
left join dbo.SALESORDER on SALESORDER.REVENUEID = FINANCIALTRANSACTION.ID and SALESORDER.STATUSCODE in (1,3,4)
left join dbo.REVENUESPLITORDER on REVENUESPLITORDER.ID = FINANCIALTRANSACTIONLINEITEM.ID
left join ORDERITEMPAYMENT_CTE on ORDERITEMPAYMENT_CTE.ID = FINANCIALTRANSACTIONLINEITEM.ID
left join (
select
sum((LI.QUANTITY * LI.UNITVALUE) - EXT.DISCOUNTS) as [AMOUNT],
LI.SOURCELINEITEMID
from dbo.FINANCIALTRANSACTIONLINEITEM as LI
inner join dbo.FINANCIALTRANSACTION as FT on FT.ID = LI.FINANCIALTRANSACTIONID
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
where LI.TYPECODE = 5 -- Discount
and FT.TYPECODE in (5, 99) -- Order, Deleted Revenue
group by LI.SOURCELINEITEMID
) as [DISCOUNTS] on
FINANCIALTRANSACTIONLINEITEM.ID = [DISCOUNTS].SOURCELINEITEMID
--Get membership info for transactions that have been deleted when refunded
--We are just using the refund tables to get the old membership info for the revenue split--we aren't working with refunds yet
left join (
select distinct
LI.SOURCELINEITEMID as REVENUESPLITID,
CREDITITEMMEMBERSHIP.MEMBERSHIPLEVELID,
CREDITITEMMEMBERSHIP.MEMBERSHIPLEVELTERMID
from dbo.CREDITITEMMEMBERSHIP
inner join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = CREDITITEMMEMBERSHIP.ID
inner join dbo.FINANCIALTRANSACTION as FT on FT.ID = LI.FINANCIALTRANSACTIONID
where FT.CALCULATEDDATE >= @FROMDATE --Can't assume refunds for these membership are between the report filter dates
and FT.TYPECODE = 23 -- Refund
) as REFUNDINFO on
REVENUESPLIT_EXT.ID = REFUNDINFO.REVENUESPLITID
where
FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT > 0
and (SALESORDER.SALESMETHODTYPECODE <> 3 or SALESORDER.SALESMETHODTYPECODE is null) --don't want to filter null values out
and FINANCIALTRANSACTION.TYPECODE not in (2,3,4,6,8,15,20)
and not (FINANCIALTRANSACTION.TYPECODE = 0 and REVENUESPLIT_EXT.APPLICATIONCODE = 10) --omit sales order payments (Group sales payments are below)
and FINANCIALTRANSACTION.CALCULATEDDATE between @FROMDATE and @TODATE
and (
@HASAPPUSERFILTER = 0
or SALESORDER.APPUSERID in (select ID from @APPUSERFILTER)
or FINANCIALTRANSACTION.ADDEDBYID in (select ID from @CHANGEAGENTFILTER)
)
and (@INCLUDETAXES = 1 or REVENUESPLIT_EXT.TYPECODE <> 7)
and (@INCLUDEUNRECEIVEDREVENUE = 1 or FINANCIALTRANSACTION.TYPECODE <> 1) -- not in (1,4,6,8)) -- leaving this in case we change back to MG/DC claims being considered "committed"
union all --Group sales unearned and security deposit payments
select FTLI.ID, REVENUESPLIT_EXT.TYPECODE, REVENUESPLIT_EXT.APPLICATIONCODE, 'Order-'+cast(SALESORDER.SEQUENCEID as nvarchar(10)), FTLI.BASEAMOUNT as AMOUNT, FTLI.TRANSACTIONAMOUNT, FT.ID, null as DesignationID, cast(FT.DATE as datetime), FT.CONSTITUENTID, FT.TYPECODE as TRANSACTIONTYPECODE, FT.TYPE as TransactionType, SALESORDER.ID, isnull(SALESORDER.SALESMETHODTYPECODE,3) as SalesMethodTypeCode, isnull(SALESORDER.STATUSCODE,0) as OrderStatusCode, null as ProgramID, null as EventID, null as EventLocationID, null as FeeID, null as TaxID, null as MembershipLevelID, null as Membershipleveltermid, null as Merchandiseproductinstanceid, null as Resourceid, null as Volunteertypeid
from dbo.FINANCIALTRANSACTION FT
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FT.ID = FTLI.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on FTLI.ID = REVENUESPLIT_EXT.ID
left join dbo.SALESORDERPAYMENT on FT.ID = SALESORDERPAYMENT.PAYMENTID
left join dbo.RESERVATIONSECURITYDEPOSITPAYMENT RSDP on FT.ID = RSDP.PAYMENTID
left join dbo.SALESORDER on isnull(SALESORDERPAYMENT.SALESORDERID, RSDP.RESERVATIONID) = SALESORDER.ID
where FT.TYPECODE = 0
and FT.CALCULATEDDATE between @FROMDATE and @TODATE
and (REVENUESPLIT_EXT.TYPECODE = 19 or (REVENUESPLIT_EXT.TYPECODE = 13 and @INCLUDESECURITYDEPOSITS = 1))
and REVENUESPLIT_EXT.APPLICATIONCODE = 10
and FTLI.DELETEDON is null
and FTLI.TYPECODE = 0
and not exists (select 1 from #EarnedTotal where ID = FT.ID)
and (
@HASAPPUSERFILTER = 0
or (
SALESORDER.APPUSERID in (select ID from @APPUSERFILTER)
and SALESORDERPAYMENT.APPUSERID in (select ID from @APPUSERFILTER)
)
or FT.ADDEDBYID in (select ID from @CHANGEAGENTFILTER)
)
union all --Earned group sales payments
select FTLI.ID, REVENUESPLIT_EXT.TYPECODE, REVENUESPLIT_EXT.APPLICATIONCODE, 'Order-'+cast(SALESORDER.SEQUENCEID as nvarchar(10)), FTLI.BASEAMOUNT as AMOUNT, FTLI.TRANSACTIONAMOUNT, FT.ID, null as DesignationID, cast(FT.DATE as datetime), FT.CONSTITUENTID, FT.TYPECODE as TRANSACTIONTYPECODE, FT.TYPE as TransactionType, SALESORDER.ID, SALESORDER.SALESMETHODTYPECODE, SALESORDER.STATUSCODE, REVENUESPLITORDER.PROGRAMID as ProgramID, REVENUESPLITORDER.EVENTID as EventID, REVENUESPLITORDER.EVENTLOCATIONID as EventLocationID, REVENUESPLITORDER.FEEID as FeeID, REVENUESPLITORDER.TAXID as TaxID, null as MembershipLevelID, null as membershipleveltermid, REVENUESPLITORDER.MERCHANDISEPRODUCTINSTANCEID as merchandiseproductinstanceid, REVENUESPLITORDER.RESOURCEID as resourceid, REVENUESPLITORDER.VOLUNTEERTYPEID as volunteertypeid
from dbo.FINANCIALTRANSACTION FT
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FT.ID = FTLI.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on FTLI.ID = REVENUESPLIT_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM SOURCELI on FTLI.SOURCELINEITEMID = SOURCELI.ID
inner join dbo.FINANCIALTRANSACTION SOURCEFT on SOURCELI.FINANCIALTRANSACTIONID = SOURCEFT.ID
inner join dbo.REVENUESPLITORDER on SOURCELI.ID = REVENUESPLITORDER.ID
inner join dbo.SALESORDER on SOURCEFT.ID = SALESORDER.REVENUEID
inner join dbo.SALESORDERPAYMENT on FT.ID = SALESORDERPAYMENT.PAYMENTID
where FT.TYPECODE = 0
and FT.CALCULATEDDATE between @FROMDATE and @TODATE
and SOURCEFT.TYPECODE = 5
and FTLI.DELETEDON is null
and FTLI.TYPECODE = 0
and SOURCELI.DELETEDON is null
and SOURCELI.TYPECODE = 0
and REVENUESPLIT_EXT.APPLICATIONCODE = 10
and SALESORDER.SALESMETHODTYPECODE = 3
and REVENUESPLIT_EXT.TYPECODE != 20
and SOURCEFT.CALCULATEDDATE <= @TODATE
and (@INCLUDETAXES = 1 or REVENUESPLIT_EXT.TYPECODE <> 7)
and (
@HASAPPUSERFILTER = 0
or SALESORDERPAYMENT.APPUSERID in (select ID from @APPUSERFILTER)
or FT.ADDEDBYID in (select ID from @CHANGEAGENTFILTER)
)
union all --Unearned over
select null, 19, 10, 'Order-'+cast(SALESORDER.SEQUENCEID as nvarchar(10)), FT.BASEAMOUNT - EARNED.Total, FT.TRANSACTIONAMOUNT - EARNED.Total, FT.ID, null as DesignationID, cast(FT.DATE as datetime), FT.CONSTITUENTID, FT.TYPECODE, FT.TYPE, SALESORDERPAYMENT.SALESORDERID, isnull(SALESORDER.SALESMETHODTYPECODE,3) as SalesMethodTypeCode, isnull(SALESORDER.STATUSCODE,0) as OrderStatusCode, null as ProgramID, null as EventID, null as EventLocationID, null as FeeID, null as TaxID, null as MembershipLevelID, null as membershipleveltermid, null as merchandiseproductinstanceid, null as resourceid, null as volunteertypeid
from dbo.FINANCIALTRANSACTION FT
inner join dbo.SALESORDERPAYMENT on FT.ID = SALESORDERPAYMENT.PAYMENTID
inner join #EarnedTotal EARNED on FT.ID = EARNED.ID
left join dbo.SALESORDER on SALESORDERPAYMENT.SALESORDERID = SALESORDER.ID
where FT.TYPECODE = 0
and FT.CALCULATEDDATE between @FROMDATE and @TODATE
and SALESORDER.SALESMETHODTYPECODE = 3
and (
@HASAPPUSERFILTER = 0
or (
SALESORDER.APPUSERID in (select ID from @APPUSERFILTER)
and SALESORDERPAYMENT.APPUSERID in (select ID from @APPUSERFILTER)
)
or FT.ADDEDBYID in (select ID from @CHANGEAGENTFILTER)
)
union all --Group Sales refunds (unearned and security deposits)
select FTLI.ID, SOURCELI_EXT.TYPECODE, 10, 'Order-'+cast(SALESORDER.SEQUENCEID as nvarchar(10)), 0 - FT.BASEAMOUNT, 0 - FT.TRANSACTIONAMOUNT, FT.ID, null as DESIGNATIONID, cast(FT.DATE as datetime), FT.CONSTITUENTID, FT.TYPECODE, FT.TYPE, SALESORDER.ID, isnull(SALESORDER.SALESMETHODTYPECODE,3) as SALESMETHODTYPECODE, isnull(SALESORDER.STATUSCODE,0) as ORDERSTATUSCODE, null as PROGRAMID, null as EVENTID, null as EVENTLOCATIONID, null as FEEID, null as TAXID, null as MEMBERSHIPLEVELID, null as MEMBERSHIPLEVELTERMID, null as MERCHANDISEPRODUCTINSTANCEID, null as RESOURCEID, null as VOLUNTEERTYPEID
from dbo.FINANCIALTRANSACTION FT
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FT.ID = FTLI.FINANCIALTRANSACTIONID
inner join dbo.FINANCIALTRANSACTIONLINEITEM SOURCELI on SOURCELI.ID = FTLI.SOURCELINEITEMID
inner join dbo.REVENUESPLIT_EXT SOURCELI_EXT on SOURCELI_EXT.ID = SOURCELI.ID
inner join dbo.CREDIT_EXT CREDIT on CREDIT.ID = FT.ID
inner join dbo.SALESORDER on SALESORDER.ID = CREDIT.SALESORDERID
where FT.TYPECODE = 23
and SOURCELI_EXT.APPLICATIONCODE = 10
and (SOURCELI_EXT.TYPECODE = 19 or (SOURCELI_EXT.TYPECODE = 13 and @INCLUDESECURITYDEPOSITS = 1)) -- security deposit and unearned
and FT.CALCULATEDDATE between @FROMDATE and @TODATE
and FTLI.DELETEDON is null
and FTLI.TYPECODE = 0
and SOURCELI.DELETEDON is null
and SOURCELI.TYPECODE = 0
and (
@HASAPPUSERFILTER = 0
or FT.APPUSERID in (select ID from @APPUSERFILTER)
or FT.ADDEDBYID in (select ID from @CHANGEAGENTFILTER)
)
union all --Earned overage kept
select FTLI.ID, REVENUESPLIT_EXT.TYPECODE, REVENUESPLIT_EXT.APPLICATIONCODE, 'Order-'+cast(SALESORDER.SEQUENCEID as nvarchar(10)), FTLI.BASEAMOUNT as AMOUNT, FTLI.TRANSACTIONAMOUNT, FT.ID, null as DesignationID, FTLI.POSTDATE, FT.CONSTITUENTID, SOURCEFT.TYPECODE as TRANSACTIONTYPECODE, SOURCEFT.TYPE as TransactionType, SALESORDER.ID, SALESORDER.SALESMETHODTYPECODE, SALESORDER.STATUSCODE, null as ProgramID, null as EventID, null as EventLocationID, null as FeeID, null as TaxID, null as MembershipLevelID, null as membershipleveltermid, null as merchandiseproductinstanceid, null as resourceid, null as volunteertypeid
from dbo.FINANCIALTRANSACTION FT
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FT.ID = FTLI.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on FTLI.ID = REVENUESPLIT_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM SOURCELI on FTLI.SOURCELINEITEMID = SOURCELI.ID
inner join dbo.FINANCIALTRANSACTION SOURCEFT on SOURCELI.FINANCIALTRANSACTIONID = SOURCEFT.ID
inner join dbo.SALESORDER on SOURCEFT.ID = SALESORDER.REVENUEID
where FT.TYPECODE = 0
and FT.CALCULATEDDATE between @FROMDATE and @TODATE
and SOURCEFT.TYPECODE = 5
and FTLI.DELETEDON is null
and FTLI.TYPECODE = 0
and SOURCELI.DELETEDON is null
and SOURCELI.TYPECODE = 0
and REVENUESPLIT_EXT.APPLICATIONCODE = 10
and SALESORDER.SALESMETHODTYPECODE = 3
and REVENUESPLIT_EXT.TYPECODE = 20
and FTLI.POSTDATE <= @TODATE
and (
@HASAPPUSERFILTER = 0
or SALESORDER.APPUSERID in (select ID from @APPUSERFILTER)
or FT.ADDEDBYID in (select ID from @CHANGEAGENTFILTER)
);
select
ID,
TYPECODE,
APPLICATIONCODE,
REFERENCE,
AMOUNT,
TRANSACTIONAMOUNT,
FINANCIALTRANSACTIONID,
DESIGNATIONID,
TRANSACTIONDATE,
CONSTITUENTID,
TRANSACTIONTYPECODE,
TRANSACTIONTYPE,
SALESORDERID,
SALESMETHODTYPECODE,
PROGRAMID,
EVENTID,
EVENTLOCATIONID,
FEEID,
TAXID,
MEMBERSHIPLEVELID,
MEMBERSHIPLEVELTERMID,
MERCHANDISEPRODUCTINSTANCEID,
RESOURCEID,
VOLUNTEERTYPEID
into tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS
from ( --Splitting backoffice and sales conditions. Previous salesmethod logic in where clause had a dramatic performance impact
--Backoffice revenue
select * --These are the same columns as select above. Trying to have less clutter--make this easier to follow.
from tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUE
where (@INCLUDEBACKOFFICE = 1 and SALESORDERID is null)
union all
--Sales revenue
select ReportRecords.* --These are the same columns as select above. Trying to have less clutter--make this easier to follow.
from tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUE as ReportRecords
inner join @SalesMethodCodes as SalesCodes on ReportRecords.SALESMETHODTYPECODE = SalesCodes.SALESMETHODTYPECODE
where (
SALESORDERID is not null and
ORDERSTATUSCODE in (0,1,2,3,4,5) --kwb Added tentative (2) and cancelled (5)
)
) [REVENUE];
--Try to update membership info for installment payments
update tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS
set PROGRAMID = MEMBERSHIPPROGRAM.ID,
MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
from tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS REV
inner join INSTALLMENTPAYMENT on REV.ID = INSTALLMENTPAYMENT.PAYMENTID
inner join REVENUE_EXT as PLEDGE_REVENUE on PLEDGE_REVENUE.ID = INSTALLMENTPAYMENT.PLEDGEID
inner join FINANCIALTRANSACTIONLINEITEM on PLEDGE_REVENUE.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
inner join MEMBERSHIPTRANSACTION on MEMBERSHIPTRANSACTION.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID
inner join MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.ID = MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID
inner join MEMBERSHIPPROGRAM on MEMBERSHIPPROGRAM.ID = MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID
where REV.PROGRAMID is null
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null;
update tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS
set PROGRAMID = MEMBERSHIPPROGRAM.ID,
MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
from tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS REV
inner join RECURRINGGIFTINSTALLMENTPAYMENT on REV.FINANCIALTRANSACTIONID = RECURRINGGIFTINSTALLMENTPAYMENT.PAYMENTID
inner join RECURRINGGIFTINSTALLMENT on RECURRINGGIFTINSTALLMENT.ID = RECURRINGGIFTINSTALLMENTPAYMENT.RECURRINGGIFTINSTALLMENTID
inner join FINANCIALTRANSACTION PLEDGE_XACTION on PLEDGE_XACTION.ID = RECURRINGGIFTINSTALLMENT.REVENUEID
inner join FINANCIALTRANSACTIONLINEITEM PLEDGE_FTLI on PLEDGE_FTLI.FINANCIALTRANSACTIONID = PLEDGE_XACTION.ID
inner join REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = REV.ID
inner join MEMBERSHIPTRANSACTION on MEMBERSHIPTRANSACTION.REVENUESPLITID = PLEDGE_FTLI.ID
inner join MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.ID = MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID
inner join MEMBERSHIPPROGRAM on MEMBERSHIPPROGRAM.ID = MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID
where REV.PROGRAMID is null
and PLEDGE_FTLI.DELETEDON is null;
--Try to update the membership info for installment payment addons
update tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS
set PROGRAMID = MEMBERSHIPPROGRAM.ID,
MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
from tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS REV
join dbo.MEMBERSHIPADDON ON MEMBERSHIPADDON.REVENUESPLITID = REV.FINANCIALTRANSACTIONID
join MEMBERSHIPTRANSACTION on MEMBERSHIPADDON.MEMBERSHIPTRANSACTIONID = MEMBERSHIPTRANSACTION.ID
join MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.ID = MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID
join MEMBERSHIPPROGRAM on MEMBERSHIPPROGRAM.ID = MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID
where REV.PROGRAMID is null;
create table tempdb.#TMP_DATA_TOTALREVENUEREPORT_NONGSREFUNDS
(
ID uniqueidentifier,
TRANSACTIONDATE datetime,
CONSTITUENTID uniqueidentifier,
SALESORDERID uniqueidentifier
);
insert into tempdb.#TMP_DATA_TOTALREVENUEREPORT_NONGSREFUNDS
select
FT.ID,
FT.DATE,
FT.CONSTITUENTID,
SO.ID SALESORDERID
from dbo.FINANCIALTRANSACTION FT
left join dbo.CREDIT_EXT on CREDIT_EXT.ID = FT.ID
left join dbo.SALESORDER SO on SO.ID = CREDIT_EXT.SALESORDERID
left join @SalesMethodCodes SMC on SO.SALESMETHODTYPECODE = SMC.SALESMETHODTYPECODE
where FT.TYPECODE = 23
and FT.CALCULATEDDATE between @FROMDATE and @TODATE
and (SO.SALESMETHODTYPECODE is null or SO.SALESMETHODTYPECODE <> 3) -- Group Sales refunds are in Unearned
and (
@HASAPPUSERFILTER = 0
or FT.APPUSERID in (select ID from @APPUSERFILTER) -- Refunds are the only transactions with non-null APPUSERID.
)
and (
SMC.SALESMETHODTYPECODE is not null
or (@SOURCEBACKOFFICE = 1 and SO.ID is null)
);
-- BE CAREFUL... IF YOU ADD AN OUTPUT FIELD HERE YOU MUST UPDATE THE SUBREPORT BECAUSE IT EXPECTS A CERTAIN NUMBER OF VALUES
-- ALSO UPDATE THIS FILE FOR THE SAME REASON: \Blackbaud\AppFx\Treasury\Catalog\Workcenter\PaymentsByPaymentMethod.DataList.xml
with RESERVATIONINFO_CTE as (
select
RESERVATION.ID,
dbo.UDA_BUILDLIST(GT.DESCRIPTION) GROUPTYPE,
cast(RESERVATION.ARRIVALDATE as date) ARRIVALDATE,
RESERVATION.NAME RESERVATIONNAME,
case when @USERGRANTEDRESERVATIONPAGE = 1 then 'http://www.blackbaud.com/GROUPSALESORDERID?GROUPSALESORDERID=' + CONVERT(nvarchar(36), RESERVATION.ID) else null end RESERVATIONLINK
from dbo.RESERVATION
left join dbo.ITINERARY on ITINERARY.RESERVATIONID = RESERVATION.ID
left join dbo.GROUPSALESGROUPTYPECODE GT on GT.ID = ITINERARY.GROUPSALESGROUPTYPECODEID
group by RESERVATION.ID, RESERVATION.ARRIVALDATE, RESERVATION.NAME
), SALESORDERPAYMENTS_CTE as (
select
SOP.SALESORDERID,
dbo.UDA_BUILDLIST(distinct REVENUEPAYMENTMETHOD.PAYMENTMETHOD) PAYMENTMETHOD
from dbo.SALESORDERPAYMENT SOP
inner join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = SOP.PAYMENTID
where (
@HASAPPUSERFILTER = 0
or SOP.APPUSERID in (select ID from @APPUSERFILTER)
)
group by SOP.SALESORDERID
), REFUNDS_CTE as (
select
FT.ID CREDITID,
CP.REVENUESPLITID REFUNDEDITEMID,
SO.ID REFUNDEDORDERID,
dbo.UDA_BUILDLIST(distinct CP.PAYMENTMETHOD) PAYMENTMETHOD
from dbo.CREDITPAYMENT CP
inner join dbo.FINANCIALTRANSACTION FT on CP.CREDITID = FT.ID
left join dbo.SALESORDER SO on SO.REVENUEID = FT.PARENTID
where FT.TYPECODE = 23
group by FT.ID, CP.REVENUESPLITID, SO.ID
)
select
FILTERED.FINANCIALTRANSACTIONID,
FILTERED.SALESORDERID,
FILTERED.TRANSACTIONDATE,
case
when FILTERED.TRANSACTIONTYPECODE = 1 --in (1,3,4,6,8) --Pledge, Matching gift claim, Planned gift, Grant award, Donor challenge claim)
and @INCLUDEUNRECEIVEDREVENUE = 1
then ( --Get the balance per split designation
select
FTLI.BASEAMOUNT -
(coalesce((
select sum(ISP.AMOUNT)
from dbo.INSTALLMENTSPLITPAYMENT ISP
inner join dbo.INSTALLMENTSPLIT INS on INS.ID = ISP.INSTALLMENTSPLITID
where ISP.PLEDGEID = FILTERED.FINANCIALTRANSACTIONID and INS.DESIGNATIONID = FILTERED.DESIGNATIONID)
, 0) +
coalesce((
select sum(ISWO.AMOUNT)
from dbo.INSTALLMENTSPLITWRITEOFF ISWO
inner join dbo.INSTALLMENTSPLIT INS on INS.ID = ISWO.INSTALLMENTSPLITID
where INS.PLEDGEID = FILTERED.FINANCIALTRANSACTIONID and INS.DESIGNATIONID = FILTERED.DESIGNATIONID)
, 0))
from dbo.FINANCIALTRANSACTIONLINEITEM FTLI
inner join dbo.REVENUESPLIT_EXT RSE on FTLI.ID = RSE.ID
where FTLI.TYPECODE = 0
and FTLI.DELETEDON is null
and FTLI.FINANCIALTRANSACTIONID = FILTERED.FINANCIALTRANSACTIONID
and RSE.DESIGNATIONID = FILTERED.DESIGNATIONID
)
else FILTERED.AMOUNT
end as AMOUNT,
FILTERED.TRANSACTIONTYPECODE,
FILTERED.TRANSACTIONTYPE,
FILTERED.APPLICATIONCODE,
FILTERED.TYPECODE REVENUETYPECODE,
CONSTITUENT.NAME CONSTITUENTNAME,
case when @USERGRANTEDCONSTITUENTPAGE = 1 then 'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + CONVERT(nvarchar(36), CONSTITUENT.ID) else null end CONSTITUENTLINK,
PROGRAM.NAME PROGRAMNAME,
case when FILTERED.TYPECODE = 1 and FILTERED.APPLICATIONCODE = 1 then [EVENT].NAME
else null
end EVENTNAME,
TAX.NAME TAXNAME,
FEE.NAME FEENAME,
MERCHANDISEDEPARTMENT.NAME DEPARTMENTNAME,
case
when FILTERED.TYPECODE = 2 then MEMBERSHIPPROGRAM.NAME + ' - ' + MEMBERSHIPLEVEL.NAME + isnull(' (' +
case MEMBERSHIPPROGRAM.PROGRAMTYPECODE
when 0 then cast(MEMBERSHIPLEVELTERM.TERMTIMELENGTH as nvarchar(5)) + ' ' + MEMBERSHIPLEVELTERM.TERMLENGTH
when 1 then MEMBERSHIPLEVELTERM.RECURRINGPAYMENTOPTION
when 2 then case when MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTIONCODE = 0 then MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTION
else cast((select count(ID) from dbo.INSTALLMENT where REVENUEID = FILTERED.FINANCIALTRANSACTIONID) as nvarchar(5)) + ' ' + REVENUESCHEDULE.FREQUENCY
end
end
+ ')', '')
when FILTERED.TYPECODE = 18 then ADDONPROGRAM.NAME + ' - ' + ADDON.NAME
else null
end as MEMBERSHIPNAME,
DESIGNATION.NAME DESIGNATIONNAME,
EVENTLOCATION.NAME LOCATIONNAME,
[RESOURCE].NAME RESOURCENAME,
VOLUNTEERTYPE.NAME STAFFRESOURCENAME,
FILTERED.SALESMETHODTYPECODE,
null as CREDITITEMID,
case
when FILTERED.AMOUNT < 0 and @USERGRANTEDREFUNDPAGE = 1 then 'http://www.blackbaud.com/CREDITID?CREDITID=' + CONVERT(nvarchar(36), REFUNDS_CTE.CREDITID)
when FILTERED.SALESMETHODTYPECODE is null and @USERGRANTEDTRANSACTIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEID?REVENUEID=' + CONVERT(nvarchar(36), FILTERED.FINANCIALTRANSACTIONID)
when FILTERED.SALESMETHODTYPECODE is not null and @USERGRANTEDORDERPAGE = 1 then 'http://www.blackbaud.com/SALESORDERID?SALESORDERID=' + CONVERT(nvarchar(36), FILTERED.SALESORDERID)
else null
end TRANSACTIONLINK,
case when CONSTITUENT.ISORGANIZATION = 1 then
case CONSTITUENT.KEYNAMEPREFIX
when '' then CONSTITUENT.KEYNAME
else CONSTITUENT.KEYNAME + ', ' + CONSTITUENT.KEYNAMEPREFIX
end
else dbo.UFN_NAMEFORMAT_08(CONSTITUENT.ID, CONSTITUENT.KEYNAME, CONSTITUENT.FIRSTNAME, CONSTITUENT.MIDDLENAME, null, null, null, null, null, null, null)
end as SORTCONSTITUENTNAME,
case when FILTERED.TRANSACTIONTYPECODE = 1 then 'None'
when coalesce(FILTERED.SALESMETHODTYPECODE,3) <> 3 then SALESORDERPAYMENTS_CTE.PAYMENTMETHOD
else coalesce(REVENUEPAYMENTMETHOD.PAYMENTMETHOD, REFUNDS_CTE.PAYMENTMETHOD)
end PAYMENTMETHOD,
RESINFO.GROUPTYPE,
RESINFO.ARRIVALDATE,
RESINFO.RESERVATIONNAME,
RESINFO.RESERVATIONLINK,
FILTERED.REFERENCE,
case when FILTERED.SALESORDERID is not null and @USERGRANTEDORDERPAGE = 1 then 'http://www.blackbaud.com/SALESORDERID?SALESORDERID=' + CONVERT(nvarchar(36), FILTERED.SALESORDERID)
else case FILTERED.APPLICATIONCODE
when 0 then case
when FILTERED.TRANSACTIONTYPECODE <> 1 and @USERGRANTEDREVENUEAPPLICATIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEAPPLICATIONID?REVENUEAPPLICATIONID=' + CONVERT(nvarchar(36), FILTERED.ID)
when FILTERED.TRANSACTIONTYPECODE = 1 and @USERGRANTEDTRANSACTIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEID?REVENUEID=' + CONVERT(nvarchar(36), FILTERED.FINANCIALTRANSACTIONID)
else null end
when 1 then case when @USERGRANTEDREGISTRANTPAGE = 1 then 'http://www.blackbaud.com/REGISTRANTID?REGISTRANTID=' + CONVERT(nvarchar(36), EVENTREGISTRANTPAYMENT.REGISTRANTID) else null end
when 2 then case when @USERGRANTEDTRANSACTIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEID?REVENUEID=' + CONVERT(nvarchar(36), CLAIMLI.FINANCIALTRANSACTIONID) else null end
when 3 then case when @USERGRANTEDTRANSACTIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEID?REVENUEID=' + CONVERT(nvarchar(36), RECURRINGGIFTINSTALLMENT.REVENUEID) else null end
when 4 then case when @USERGRANTEDREVENUEAPPLICATIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEAPPLICATIONID?REVENUEAPPLICATIONID=' + CONVERT(nvarchar(36), FILTERED.ID) else null end
when 5 then case when @USERGRANTEDMEMBERSHIPPAGE = 1 then 'http://www.blackbaud.com/MEMBERSHIPID?MEMBERSHIPID=' + CONVERT(nvarchar(36), MEMBERSHIPTRANSACTION.MEMBERSHIPID) else null end
when 7 then case
when @USERGRANTEDTRANSACTIONPAGE = 1 and CLAIMLI.FINANCIALTRANSACTIONID is not null then 'http://www.blackbaud.com/REVENUEID?REVENUEID=' + CONVERT(nvarchar(36), CLAIMLI.FINANCIALTRANSACTIONID)
when @USERGRANTEDREVENUEAPPLICATIONPAGE = 1 and CLAIMLI.FINANCIALTRANSACTIONID is null then 'http://www.blackbaud.com/REVENUEAPPLICATIONID?REVENUEAPPLICATIONID=' + CONVERT(nvarchar(36), FILTERED.ID)
else null end
when 9 then case when @USERGRANTEDORDERPAGE = 1 then 'http://www.blackbaud.com/SALESORDERID?SALESORDERID=' + CONVERT(nvarchar(36), FILTERED.SALESORDERID) else null end
when 10 then case when @USERGRANTEDORDERPAGE = 1 then 'http://www.blackbaud.com/SALESORDERID?SALESORDERID=' + CONVERT(nvarchar(36), FILTERED.SALESORDERID) else null end
when 11 then case when @USERGRANTEDREVENUEAPPLICATIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEAPPLICATIONID?REVENUEAPPLICATIONID=' + CONVERT(nvarchar(36), FILTERED.ID) else null end
when 13 then case when @USERGRANTEDTRANSACTIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEID?REVENUEID=' + CONVERT(nvarchar(36), CLAIMLI.FINANCIALTRANSACTIONID) else null end
when 16 then case when @USERGRANTEDORDERPAGE = 1 then 'http://www.blackbaud.com/SALESORDERID?SALESORDERID=' + CONVERT(nvarchar(36), FILTERED.SALESORDERID) else null end
when 18 then case when @USERGRANTEDMEMBERSHIPPAGE = 1 then 'http://www.blackbaud.com/MEMBERSHIPID?MEMBERSHIPID=' + CONVERT(nvarchar(36), MEMBERSHIPADDON.MEMBERSHIPID) else null end
else null
end
end REFERENCELINK,
case
when FILTERED.APPLICATIONCODE = 2 then (select cast(DATE as datetime) from dbo.FINANCIALTRANSACTION where ID = CLAIMLI.FINANCIALTRANSACTIONID)
when FILTERED.TRANSACTIONTYPECODE = 1 then FILTERED.TRANSACTIONDATE
else null
end PLEDGEDATE
from tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS FILTERED
left join dbo.CONSTITUENT on CONSTITUENT.ID = FILTERED.CONSTITUENTID
left join dbo.PROGRAM on PROGRAM.ID = FILTERED.PROGRAMID
left join dbo.MEMBERSHIPTRANSACTION on MEMBERSHIPTRANSACTION.REVENUESPLITID = FILTERED.ID
left join dbo.MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.ID = isnull(MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID,FILTERED.MEMBERSHIPLEVELID)
left join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIPLEVELTERM.ID = isnull(MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELTERMID,FILTERED.MEMBERSHIPLEVELTERMID)
left join dbo.MEMBERSHIPPROGRAM on MEMBERSHIPPROGRAM.ID = MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID
left join dbo.MERCHANDISEPRODUCTINSTANCE on FILTERED.MERCHANDISEPRODUCTINSTANCEID = MERCHANDISEPRODUCTINSTANCE.ID
left join dbo.MERCHANDISEPRODUCT on MERCHANDISEPRODUCT.ID = MERCHANDISEPRODUCTINSTANCE.MERCHANDISEPRODUCTID
left join dbo.MERCHANDISEDEPARTMENT on MERCHANDISEDEPARTMENT.ID = MERCHANDISEPRODUCT.MERCHANDISEDEPARTMENTID
left join dbo.[RESOURCE] on FILTERED.RESOURCEID = [RESOURCE].ID
left join dbo.VOLUNTEERTYPE on FILTERED.VOLUNTEERTYPEID = VOLUNTEERTYPE.ID
left join dbo.FEE on FILTERED.FEEID = FEE.ID
left join dbo.TAX on FILTERED.TAXID = TAX.ID
left join dbo.EVENTLOCATION on FILTERED.EVENTLOCATIONID = EVENTLOCATION.ID
left join dbo.DESIGNATION on DESIGNATION.ID = FILTERED.DESIGNATIONID
left join dbo.EVENTREGISTRANTPAYMENT on EVENTREGISTRANTPAYMENT.PAYMENTID = FILTERED.ID
left join dbo.REGISTRANT on REGISTRANT.ID = EVENTREGISTRANTPAYMENT.REGISTRANTID
left join dbo.[EVENT] on [EVENT].ID = REGISTRANT.EVENTID
left join dbo.MEMBERSHIPADDON on MEMBERSHIPADDON.REVENUESPLITID = FILTERED.ID
left join dbo.ADDON on ADDON.ID = MEMBERSHIPADDON.ADDONID
left join dbo.MEMBERSHIP on MEMBERSHIP.ID = MEMBERSHIPADDON.MEMBERSHIPID
left join dbo.MEMBERSHIPPROGRAM ADDONPROGRAM on ADDONPROGRAM.ID = MEMBERSHIP.MEMBERSHIPPROGRAMID
left join dbo.RECURRINGGIFTINSTALLMENTPAYMENT on RECURRINGGIFTINSTALLMENTPAYMENT.PAYMENTID = FILTERED.FINANCIALTRANSACTIONID
left join dbo.RECURRINGGIFTINSTALLMENT on RECURRINGGIFTINSTALLMENT.ID = RECURRINGGIFTINSTALLMENTPAYMENT.RECURRINGGIFTINSTALLMENTID
left join dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTLI on PAYMENTLI.ID = FILTERED.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM CLAIMLI on CLAIMLI.ID = PAYMENTLI.SOURCELINEITEMID -- for Pledge payments (also Matching gift and Donor challenge, if those were included)
left join dbo.REVENUEPAYMENTMETHOD on (REVENUEPAYMENTMETHOD.REVENUEID = FILTERED.FINANCIALTRANSACTIONID and coalesce(FILTERED.SALESMETHODTYPECODE,3) = 3)
left join RESERVATIONINFO_CTE RESINFO on RESINFO.ID = FILTERED.SALESORDERID
left join SALESORDERPAYMENTS_CTE on (SALESORDERPAYMENTS_CTE.SALESORDERID = FILTERED.SALESORDERID and FILTERED.SALESMETHODTYPECODE <> 3)
left join REFUNDS_CTE on REFUNDS_CTE.CREDITID = FILTERED.FINANCIALTRANSACTIONID -- Group Sales refunds are the only ones in TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS.
left join dbo.REVENUESCHEDULE on FILTERED.FINANCIALTRANSACTIONID = REVENUESCHEDULE.ID
where FILTERED.AMOUNT <> 0
union all
-- Refunds (excluding membership, event reg, group sales)
select
FILTERED.ID CREDITID,
FILTERED.SALESORDERID,
FILTERED.TRANSACTIONDATE,
-(sum(REFUNDLI.BASEAMOUNT) - coalesce(sum(ITEMIZEDORDERDISCOUNTSREFUNDED.AMOUNT), sum(ORDERDISCOUNTS.AMOUNT), 0)) AMOUNT, -- REFUNDLI.BASEAMOUNT already has item-level discounts removed, if applicable. The "coalesce" resolves differences between new (itemized) and old (aggregate) refunds.
23 TRANSACTIONTYPECODE,
'Refund' TRANSACTIONTYPE,
null APPLICATIONCODE,
ORDERLI_EXT.TYPECODE REVENUETYPECODE,
CONSTITUENT.NAME CONSTITUENTNAME,
case when @USERGRANTEDCONSTITUENTPAGE = 1 then 'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + convert(nvarchar(36), CONSTITUENT.ID) else null end CONSTITUENTLINK,
PROGRAM.NAME PROGRAMNAME,
null EVENTNAME,
TAX.NAME TAXNAME,
FEE.NAME FEENAME,
MERCHANDISEDEPARTMENT.NAME DEPARTMENTNAME,
null MEMBERSHIPNAME,
DESIGNATION.NAME DESIGNATIONNAME,
null LOCATIONNAME,
null RESOURCENAME,
null STAFFRESOURCENAME,
null SALESMETHODTYPECODE,
FILTERED.ID,
case when @USERGRANTEDREFUNDPAGE = 1 then 'http://www.blackbaud.com/CREDITID?CREDITID=' + convert(nvarchar(36), FILTERED.ID) else null end TRANSACTIONLINK,
case when CONSTITUENT.ISORGANIZATION = 1 then
case CONSTITUENT.KEYNAMEPREFIX
when '' then CONSTITUENT.KEYNAME
else CONSTITUENT.KEYNAME + ', ' + CONSTITUENT.KEYNAMEPREFIX
end
else dbo.UFN_NAMEFORMAT_08(CONSTITUENT.ID, CONSTITUENT.KEYNAME, CONSTITUENT.FIRSTNAME, CONSTITUENT.MIDDLENAME, null, null, null, null, null, null, null)
end as SORTCONSTITUENTNAME,
REFUNDS_CTE.PAYMENTMETHOD,
null GROUPTYPE,
null ARRIVALDATE,
null RESERVATIONNAME,
null RESERVATIONLINK,
'Order-'+cast(SALESORDER.SEQUENCEID as nvarchar(10)) as REFERENCE,
case when @USERGRANTEDORDERPAGE = 1 then 'http://www.blackbaud.com/SALESORDERID?SALESORDERID=' + convert(nvarchar(36), SALESORDER.ID) else null end REFERENCELINK,
null PLEDGEDATE
from tempdb.#TMP_DATA_TOTALREVENUEREPORT_NONGSREFUNDS FILTERED
inner join REFUNDS_CTE on REFUNDS_CTE.REFUNDEDORDERID = FILTERED.SALESORDERID and REFUNDS_CTE.CREDITID = FILTERED.ID -- Only sales refunds here; Group Sales refunds are filtered out by the where clause (typecode 19)
inner join dbo.SALESORDER on SALESORDER.ID = REFUNDS_CTE.REFUNDEDORDERID
inner join dbo.FINANCIALTRANSACTIONLINEITEM REFUNDLI on REFUNDLI.FINANCIALTRANSACTIONID = FILTERED.ID
inner join dbo.CREDITITEM_EXT REFUNDLI_EXT on REFUNDLI_EXT.ID = REFUNDLI.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM ORDERLI on ORDERLI.ID = REFUNDLI.SOURCELINEITEMID
inner join dbo.REVENUESPLIT_EXT ORDERLI_EXT on ORDERLI_EXT.ID = ORDERLI.ID
left join dbo.REVENUESPLITORDER on REVENUESPLITORDER.ID = ORDERLI.ID -- Left join because contributed revenue has no RSO
left join dbo.PROGRAM on PROGRAM.ID = REVENUESPLITORDER.PROGRAMID
left join dbo.MERCHANDISEPRODUCTINSTANCE on MERCHANDISEPRODUCTINSTANCE.ID = REVENUESPLITORDER.MERCHANDISEPRODUCTINSTANCEID
left join dbo.TAX on REVENUESPLITORDER.TAXID = TAX.ID
left join dbo.MERCHANDISEPRODUCT on MERCHANDISEPRODUCT.ID = MERCHANDISEPRODUCTINSTANCE.MERCHANDISEPRODUCTID
left join dbo.MERCHANDISEDEPARTMENT on MERCHANDISEDEPARTMENT.ID = MERCHANDISEPRODUCT.MERCHANDISEDEPARTMENTID
left join dbo.FEE on REVENUESPLITORDER.FEEID = FEE.ID
left join dbo.DESIGNATION on DESIGNATION.ID = ORDERLI_EXT.DESIGNATIONID
left join dbo.CONSTITUENT on CONSTITUENT.ID = FILTERED.CONSTITUENTID
outer apply (
select case ORDERLI_EXT.TYPECODE
when 5 then (select case when AMOUNTPAID < REFUNDLI.BASEAMOUNT then ORDERLEVELDISCOUNTSAPPLIED else 0 end from dbo.TICKET where ID = REFUNDLI_EXT.SALESORDERITEMIZEDITEMID)
when 16 then (select case when AMOUNTPAID < REFUNDLI.BASEAMOUNT then ORDERLEVELDISCOUNTSAPPLIED else 0 end from dbo.SALESORDERITEMMERCHANDISEUNIT where ID = REFUNDLI_EXT.SALESORDERITEMIZEDITEMID)
else 0
end AMOUNT
) ITEMIZEDORDERDISCOUNTSREFUNDED
outer apply (
select sum(AMOUNT) AMOUNT from dbo.SALESORDERITEMORDERDISCOUNTDETAIL where SALESORDERITEMID = REFUNDLI_EXT.SALESORDERITEMID
) ORDERDISCOUNTS
where
ORDERLI_EXT.TYPECODE not in (1,2,13,18) -- Event registration, membership, security deposit, membership add-on. No need to exclude unearned, because TMP_DATA_TOTALREVENUEREPORT_NONGSREFUNDS does not contain group sales refunds.
and ORDERLI.DELETEDON is null
and (@INCLUDETAXES = 1 or ORDERLI_EXT.TYPECODE <> 7)
group by
FILTERED.ID,
FILTERED.SALESORDERID,
FILTERED.TRANSACTIONDATE,
ORDERLI_EXT.TYPECODE,
CONSTITUENT.NAME,
PROGRAM.NAME,
TAX.NAME,
FEE.NAME,
MERCHANDISEDEPARTMENT.NAME,
DESIGNATION.NAME,
CONSTITUENT.ID, CONSTITUENT.KEYNAME, CONSTITUENT.KEYNAMEPREFIX, CONSTITUENT.FIRSTNAME, CONSTITUENT.MIDDLENAME, CONSTITUENT.ISORGANIZATION,
REFUNDS_CTE.PAYMENTMETHOD,
SALESORDER.SEQUENCEID,
SALESORDER.ID
having sum(REFUNDLI.BASEAMOUNT) - coalesce(sum(ITEMIZEDORDERDISCOUNTSREFUNDED.AMOUNT), sum(ORDERDISCOUNTS.AMOUNT), 0) <> 0
union all
-- Refunds (membership)
select distinct
FILTERED.ID,
SALESORDER.ID SALESORDERID,
FILTERED.TRANSACTIONDATE,
-(LI.TRANSACTIONAMOUNT) as AMOUNT,
23 TRANSACTIONTYPECODE,
'Refund' TRANSACTIONTYPE,
null APPLICATIONCODE,
2 REVENUETYPECODE,
CONSTITUENT.NAME CONSTITUENTNAME,
case when @USERGRANTEDCONSTITUENTPAGE = 1 then 'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + CONVERT(nvarchar(36), CONSTITUENT.ID) else null end CONSTITUENTLINK,
null PROGRAMNAME,
null EVENTNAME,
null TAXNAME,
null FEENAME,
null DEPARTMENTNAME,
MEMBERSHIPPROGRAM.NAME + ' - ' + MEMBERSHIPLEVEL.NAME + isnull(' (' +
case MEMBERSHIPPROGRAM.PROGRAMTYPECODE
when 0 then cast(MEMBERSHIPLEVELTERM.TERMTIMELENGTH as nvarchar(5)) + ' ' + MEMBERSHIPLEVELTERM.TERMLENGTH
when 1 then MEMBERSHIPLEVELTERM.RECURRINGPAYMENTOPTION
when 2 then case when MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTIONCODE = 0 then MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTION
else cast((select count(ID) from dbo.INSTALLMENT where REVENUEID = FILTERED.ID) as nvarchar(5)) + ' ' + RS.FREQUENCY
end
end
+ ')', '') as MEMBERSHIPNAME,
null DESIGNATIONNAME,
null LOCATIONNAME,
null RESOURCENAME,
null STAFFRESOURCENAME,
null SALESMETHODTYPECODE,
LI.ID CREDITITEMID,
case when @USERGRANTEDREFUNDPAGE = 1 then 'http://www.blackbaud.com/CREDITID?CREDITID=' + CONVERT(nvarchar(36), FILTERED.ID) else null end TRANSACTIONLINK,
case when CONSTITUENT.ISORGANIZATION = 1 then
case CONSTITUENT.KEYNAMEPREFIX
when '' then CONSTITUENT.KEYNAME
else CONSTITUENT.KEYNAME + ', ' + CONSTITUENT.KEYNAMEPREFIX
end
else dbo.UFN_NAMEFORMAT_08(CONSTITUENT.ID, CONSTITUENT.KEYNAME, CONSTITUENT.FIRSTNAME, CONSTITUENT.MIDDLENAME, null, null, null, null, null, null, null)
end as SORTCONSTITUENTNAME,
REFUNDS_CTE.PAYMENTMETHOD,
null as GROUPTYPE,
null as ARRIVALDATE,
null as RESERVATIONNAME,
null as RESERVATIONLINK,
case when SALESORDER.ID is null then 'Membership' else 'Order-'+cast(SALESORDER.SEQUENCEID as nvarchar(10)) end REFERENCE,
case when SALESORDER.ID is null and @USERGRANTEDMEMBERSHIPPAGE = 1 then 'http://www.blackbaud.com/MEMBERSHIPID?MEMBERSHIPID=' + CONVERT(nvarchar(36), CREDITITEMMEMBERSHIP.MEMBERSHIPID)
when SALESORDER.ID is not null and @USERGRANTEDORDERPAGE = 1 then 'http://www.blackbaud.com/SALESORDERID?SALESORDERID=' + CONVERT(nvarchar(36), FILTERED.SALESORDERID)
else null
end REFERENCELINK,
null PLEDGEDATE
from tempdb.#TMP_DATA_TOTALREVENUEREPORT_NONGSREFUNDS FILTERED
inner join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.FINANCIALTRANSACTIONID = FILTERED.ID
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join dbo.CREDITITEMMEMBERSHIP on CREDITITEMMEMBERSHIP.ID = LI.ID
inner join dbo.MEMBERSHIPPROGRAM on MEMBERSHIPPROGRAM.ID = CREDITITEMMEMBERSHIP.MEMBERSHIPPROGRAMID
inner join dbo.MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.ID = CREDITITEMMEMBERSHIP.MEMBERSHIPLEVELID
inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIPLEVELTERM.ID = CREDITITEMMEMBERSHIP.MEMBERSHIPLEVELTERMID
inner join REFUNDS_CTE on REFUNDS_CTE.CREDITID = FILTERED.ID
left join dbo.CONSTITUENT on CONSTITUENT.ID = FILTERED.CONSTITUENTID
left join dbo.SALESORDER on SALESORDER.ID = FILTERED.SALESORDERID
left join dbo.REVENUESCHEDULE as RS on FILTERED.ID = RS.ID
where EXT.TYPECODE = 1 -- Membership
union all
-- Refunds (event registration)
select distinct
FILTERED.ID,
SALESORDER.ID SALESORDERID,
FILTERED.TRANSACTIONDATE,
-LI.BASEAMOUNT as AMOUNT,
23 TRANSACTIONTYPECODE,
'Refund' TRANSACTIONTYPE,
null APPLICATIONCODE,
1 REVENUETYPECODE,
CONSTITUENT.NAME CONSTITUENTNAME,
case when @USERGRANTEDCONSTITUENTPAGE = 1 then 'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + CONVERT(nvarchar(36), CONSTITUENT.ID) else null end CONSTITUENTLINK,
null PROGRAMNAME,
[EVENT].NAME EVENTNAME,
null TAXNAME,
null FEENAME,
null DEPARTMENTNAME,
null MEMBERSHIPNAME,
null DESIGNATIONNAME,
null LOCATIONNAME,
null RESOURCENAME,
null STAFFRESOURCENAME,
null SALESMETHODTYPECODE,
LI.ID CREDITITEMID,
case when @USERGRANTEDREFUNDPAGE = 1 then 'http://www.blackbaud.com/CREDITID?CREDITID=' + CONVERT(nvarchar(36), FILTERED.ID) else null end TRANSACTIONLINK,
case when CONSTITUENT.ISORGANIZATION = 1 then
case CONSTITUENT.KEYNAMEPREFIX
when '' then CONSTITUENT.KEYNAME
else CONSTITUENT.KEYNAME + ', ' + CONSTITUENT.KEYNAMEPREFIX
end
else dbo.UFN_NAMEFORMAT_08(CONSTITUENT.ID, CONSTITUENT.KEYNAME, CONSTITUENT.FIRSTNAME, CONSTITUENT.MIDDLENAME, null, null, null, null, null, null, null)
end as SORTCONSTITUENTNAME,
REFUNDS_CTE.PAYMENTMETHOD,
null as GROUPTYPE,
null as ARRIVALDATE,
null as RESERVATIONNAME,
null as RESERVATIONLINK,
case when SALESORDER.ID is null then 'Event registration' else 'Order-'+cast(SALESORDER.SEQUENCEID as nvarchar(10)) end REFERENCE,
case when SALESORDER.ID is null and @USERGRANTEDREGISTRANTPAGE = 1 then 'http://www.blackbaud.com/REGISTRANTID?REGISTRANTID=' + CONVERT(nvarchar(36), REGISTRANT.ID)
when SALESORDER.ID is not null and @USERGRANTEDORDERPAGE = 1 then 'http://www.blackbaud.com/SALESORDERID?SALESORDERID=' + CONVERT(nvarchar(36), FILTERED.SALESORDERID)
else null
end REFERENCELINK,
null PLEDGEDATE
from tempdb.#TMP_DATA_TOTALREVENUEREPORT_NONGSREFUNDS FILTERED
inner join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.FINANCIALTRANSACTIONID = FILTERED.ID
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join REFUNDS_CTE on REFUNDS_CTE.CREDITID = FILTERED.ID
inner join dbo.CREDITITEMEVENTREGISTRATION on CREDITITEMEVENTREGISTRATION.ID = LI.ID
inner join dbo.REGISTRANT on REGISTRANT.ID = CREDITITEMEVENTREGISTRATION.REGISTRANTID
inner join dbo.[EVENT] on [EVENT].ID = REGISTRANT.EVENTID
left join dbo.SALESORDER on SALESORDER.ID = FILTERED.SALESORDERID
left join dbo.CONSTITUENT on CONSTITUENT.ID = FILTERED.CONSTITUENTID
union all
-- Refunds (membership add-ons)
select distinct
FILTERED.ID,
SALESORDER.ID SALESORDERID,
FILTERED.TRANSACTIONDATE,
-((LI.QUANTITY * LI.UNITVALUE) - EXT.DISCOUNTS) as AMOUNT,
23 TRANSACTIONTYPECODE,
'Refund' TRANSACTIONTYPE,
null APPLICATIONCODE,
18 REVENUETYPECODE,
CONSTITUENT.NAME CONSTITUENTNAME,
case when @USERGRANTEDCONSTITUENTPAGE = 1 then 'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + CONVERT(nvarchar(36), CONSTITUENT.ID) else null end CONSTITUENTLINK,
null PROGRAMNAME,
null EVENTNAME,
null TAXNAME,
null FEENAME,
null DEPARTMENTNAME,
MEMBERSHIPPROGRAM.NAME + ' - ' + ADDON.NAME as MEMBERSHIPNAME,
null DESIGNATIONNAME,
null LOCATIONNAME,
null RESOURCENAME,
null STAFFRESOURCENAME,
null SALESMETHODTYPECODE,
LI.ID CREDITITEMID,
case when @USERGRANTEDREFUNDPAGE = 1 then 'http://www.blackbaud.com/CREDITID?CREDITID=' + CONVERT(nvarchar(36), FILTERED.ID) else null end TRANSACTIONLINK,
case when CONSTITUENT.ISORGANIZATION = 1 then
case CONSTITUENT.KEYNAMEPREFIX
when '' then CONSTITUENT.KEYNAME
else CONSTITUENT.KEYNAME + ', ' + CONSTITUENT.KEYNAMEPREFIX
end
else dbo.UFN_NAMEFORMAT_08(CONSTITUENT.ID, CONSTITUENT.KEYNAME, CONSTITUENT.FIRSTNAME, CONSTITUENT.MIDDLENAME, null, null, null, null, null, null, null)
end as SORTCONSTITUENTNAME,
REFUNDS_CTE.PAYMENTMETHOD,
null as GROUPTYPE,
null as ARRIVALDATE,
null as RESERVATIONNAME,
null as RESERVATIONLINK,
case when SALESORDER.ID is null then 'Membership add-on' else 'Order-'+cast(SALESORDER.SEQUENCEID as nvarchar(10)) end REFERENCE,
case when SALESORDER.ID is null and @USERGRANTEDMEMBERSHIPPAGE = 1 then 'http://www.blackbaud.com/MEMBERSHIPID?MEMBERSHIPID=' + CONVERT(nvarchar(36), MEMBERSHIPADDON.MEMBERSHIPID)
when SALESORDER.ID is not null and @USERGRANTEDORDERPAGE = 1 then 'http://www.blackbaud.com/SALESORDERID?SALESORDERID=' + CONVERT(nvarchar(36), FILTERED.SALESORDERID)
else null
end REFERENCELINK,
null PLEDGEDATE
from tempdb.#TMP_DATA_TOTALREVENUEREPORT_NONGSREFUNDS FILTERED
inner join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.FINANCIALTRANSACTIONID = FILTERED.ID
inner join dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
inner join REFUNDS_CTE on REFUNDS_CTE.CREDITID = FILTERED.ID
inner join dbo.MEMBERSHIPADDON on MEMBERSHIPADDON.REVENUESPLITID = LI.SOURCELINEITEMID
inner join dbo.ADDON on ADDON.ID = MEMBERSHIPADDON.ADDONID
inner join dbo.MEMBERSHIP on MEMBERSHIP.ID = MEMBERSHIPADDON.MEMBERSHIPID
inner join dbo.MEMBERSHIPPROGRAM on MEMBERSHIPPROGRAM.ID = MEMBERSHIP.MEMBERSHIPPROGRAMID
left join dbo.SALESORDER on SALESORDER.ID = FILTERED.SALESORDERID
left join dbo.CONSTITUENT on CONSTITUENT.ID = FILTERED.CONSTITUENTID
where EXT.TYPECODE = 16 -- Membership add-on
drop table tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUE;
drop table tempdb.#TEMP_DATA_TOTALREVENUEREPORT_REVENUESPLITIDS;
drop table tempdb.#TMP_DATA_TOTALREVENUEREPORT_NONGSREFUNDS;
drop table #EarnedTotal;
return 0;