USP_REPORT_DESIGNATIONLEVELREVENUE_BYPURPOSE_2

Returns the data necessary for the new design of the Fundraising Purpose Revenue report.

Parameters

Parameter Parameter Type Mode Description
@START datetime IN
@END datetime IN
@CATEGORYCODEID uniqueidentifier IN
@DESIGNATIONLEVELTYPEID uniqueidentifier IN
@GROUPBY tinyint IN
@SELECTIONID uniqueidentifier IN
@CAMPAIGNHIERARCHYPATH hierarchyid IN
@CURRENTAPPUSERID uniqueidentifier IN
@CURRENCYCODE tinyint IN

Definition

Copy


            CREATE procedure dbo.USP_REPORT_DESIGNATIONLEVELREVENUE_BYPURPOSE_2
        (
            @START datetime = null,
            @END datetime = null,
            @CATEGORYCODEID uniqueidentifier = null,
            @DESIGNATIONLEVELTYPEID uniqueidentifier = null,
            @GROUPBY tinyint = 0,
            @SELECTIONID uniqueidentifier = null,
            @CAMPAIGNHIERARCHYPATH hierarchyid = null,
            @CURRENTAPPUSERID uniqueidentifier = null,
            @CURRENCYCODE tinyint = 0
        )
        as
        set nocount on;

        set @START = dbo.UFN_DATE_GETEARLIESTTIME(@START);
        set @END = dbo.UFN_DATE_GETLATESTTIME(@END);

        declare @ORGANIZATIONCURRENCYID uniqueidentifier;
        set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

        if @END < @START
            raiserror('The start date must be on or before the end date.',13,1);

        declare @SPLITS table
        (
            DESIGNATIONLEVELID uniqueidentifier,
            REVENUEID uniqueidentifier,
            REVENUESPLITID uniqueidentifier,
            REVENUESPLITAMOUNT money,
            DESIGNATIONID uniqueidentifier,
            APPEALID uniqueidentifier,
            TRANSACTIONTYPECODE tinyint,
            SPLITTYPECODE tinyint,
            APPLICATIONCODE tinyint,
            BASECURRENCYID uniqueidentifier
        );

        if @CURRENCYCODE = 0
            begin
                insert into @SPLITS
                    select 
                        DESIGNATIONLEVEL.ID as [DESIGNATIONLEVELID],
                        [SPLITS].REVENUEID,
                        [SPLITS].REVENUESPLITID,
                        [SPLITS].REVENUESPLITAMOUNT,
                        [SPLITS].DESIGNATIONID,
                        [SPLITS].APPEALID,
                        [SPLITS].TRANSACTIONTYPECODE,
                        [SPLITS].SPLITTYPECODE,
                        [SPLITS].APPLICATIONCODE,
                        DESIGNATIONLEVEL.BASECURRENCYID
                    from dbo.DESIGNATIONLEVEL with (nolock)
                    cross apply dbo.UFN_DESIGNATIONLEVEL_REVENUESPLITRECORDSINCURRENCY_2(DESIGNATIONLEVEL.ID, @START, @END, @CAMPAIGNHIERARCHYPATH, null, DESIGNATIONLEVEL.BASECURRENCYID, @ORGANIZATIONCURRENCYID) as [SPLITS]
                    where (@CATEGORYCODEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID = @CATEGORYCODEID)
                        and (@DESIGNATIONLEVELTYPEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID)
                        and (@SELECTIONID is null or DESIGNATIONLEVEL.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID)))
                        and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, DESIGNATIONLEVEL.SITEID) = 1);

                with [NEWCOMMITMENTS_CTE] as 
                (
                    select 
                        [SPLITS].DESIGNATIONLEVELID,
                        REVENUEID,
                        REVENUESPLITID,
                        REVENUESPLITAMOUNT,
                        1 as [GIFTCOUNT]
                    from @SPLITS [SPLITS]
                    where [SPLITS].TRANSACTIONTYPECODE in (1, 6)

                    union all
                    select
                        [SPLITS].DESIGNATIONLEVELID,
                        [SPLITS].REVENUEID,
                        [SPLITS].REVENUESPLITID,
                        case 
                            when ([SPLITS].BASECURRENCYID = @ORGANIZATIONCURRENCYID
                                then WRITEOFFSPLIT.ORGANIZATIONAMOUNT * -1
                            when [SPLITS].BASECURRENCYID = WRITEOFFSPLIT.BASECURRENCYID
                                then WRITEOFFSPLIT.AMOUNT * -1
                        else dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WRITEOFFSPLIT.ID, [SPLITS].BASECURRENCYID) * -1 
                        end as [REVENUESPLITAMOUNT],
                        0 as [COUNT]
                    from dbo.WRITEOFFSPLIT
                    inner join dbo.WRITEOFF on WRITEOFFSPLIT.WRITEOFFID = WRITEOFF.ID
                    inner join @SPLITS [SPLITS] on [SPLITS].REVENUEID = WRITEOFF.REVENUEID
                    where [SPLITS].TRANSACTIONTYPECODE in (1,6)
                ),
                [RECEIVED_CTE] as
                (
                    select 
                        [SPLITS].DESIGNATIONLEVELID,
                        REVENUEID,
                        REVENUESPLITID,
                        REVENUESPLITAMOUNT,
                        1 as [GIFTCOUNT]
                    from @SPLITS [SPLITS]
                    where [SPLITS].TRANSACTIONTYPECODE = 0 
                        and [SPLITS].APPLICATIONCODE in (0, 1, 3, 6, 7, 10, 13)
                        and ([SPLITS].APPLICATIONCODE <> 10 or [SPLITS].SPLITTYPECODE = 0)
                ),
                [PLANNEDGIFTS_CTE] as
                (
                    select 
                        [SPLITS].DESIGNATIONLEVELID,
                        REVENUEID,
                        REVENUESPLITID,
                        REVENUESPLITAMOUNT,
                        0 as [GIFTCOUNT]
                    from @SPLITS [SPLITS]
                    where [SPLITS].TRANSACTIONTYPECODE = 4
                ),
                [REPORT_CTE] as 
                (
                    select
                        [RECEIVED_CTE].DESIGNATIONLEVELID,
                        sum([RECEIVED_CTE].REVENUESPLITAMOUNT) as [RECEIVED_AMOUNT],
                        sum(0) as [NEWCOMMITMENTS_AMOUNT],
                        sum(0) as [PLANNEDGIFT_AMOUNT],
                        sum([RECEIVED_CTE].GIFTCOUNT) as [GIFTCOUNT]
                    from [RECEIVED_CTE]
                    group by DESIGNATIONLEVELID 

                    union all
                    select
                        [NEWCOMMITMENTS_CTE].DESIGNATIONLEVELID,
                        sum(0) as [RECEIVED_AMOUNT],
                        sum([NEWCOMMITMENTS_CTE].REVENUESPLITAMOUNT) as [NEWCOMMITMENTS_AMOUNT],
                        sum(0) as [PLANNEDGIFT_AMOUNT],
                        sum([NEWCOMMITMENTS_CTE].GIFTCOUNT) as [GIFTCOUNT]
                    from [NEWCOMMITMENTS_CTE]
                    group by DESIGNATIONLEVELID

                    union all
                    select
                        [PLANNEDGIFTS_CTE].DESIGNATIONLEVELID,
                        sum(0) as [RECEIVED_AMOUNT],
                        sum(0) as [NEWCOMMITMENTS_AMOUNT],
                        sum([PLANNEDGIFTS_CTE].REVENUESPLITAMOUNT) as [PLANNEDGIFT_AMOUNT],
                        sum([PLANNEDGIFTS_CTE].GIFTCOUNT) as [GIFTCOUNT]
                    from [PLANNEDGIFTS_CTE]
                    group by DESIGNATIONLEVELID
                )

                select 
                    'http://www.blackbaud.com/DESIGNATIONLEVELID?DESIGNATIONLEVELID=' + cast(DESIGNATIONLEVEL.ID as nvarchar(36)) as [DESIGNATIONLEVELID],
                    DESIGNATIONLEVEL.NAME,
                    0 as [SEQUENCE],
                    YEAR(@END) as [PERIODYEAR],

                    coalesce(sum([DATA].GIFTCOUNT), 0) as [TOTALNUMGIFTS],
                    -1 as [TOTALDONORS],
                    -1 as [TOTALRAISED],
                    -1 as [PERIODNUMGIFTS],
                    -1 as [MAXGIFT],
                    -1 as [PERIODAVGGIFT],
                    coalesce(sum([DATA].RECEIVED_AMOUNT), 0) + coalesce(sum([DATA].NEWCOMMITMENTS_AMOUNT), 0) as [OVERALLTOTALRAISED],
                    coalesce(sum([DATA].RECEIVED_AMOUNT), 0) as [OVERALLTOTALRECEIVED],
                    coalesce(sum([DATA].NEWCOMMITMENTS_AMOUNT), 0) as [OVERALLTOTALEXPECTED],
                    0 as [TOTALAVGGIFT],
                    0 as [TOTALRECEIVED],
                    0 as [TOTALEXPECTED],
                    0 as [PERIODNUMDONORS],
                    null as [APPEALNAME],
                    coalesce(sum([DATA].PLANNEDGIFT_AMOUNT), 0) as [OVERALLTOTALPLANNEDGIFTS], 
                    0 as [TOTALPLANNEDGIFTS],
                    CURRENCYPROPERTIES.ID as CURRENCYID,
                    CURRENCYPROPERTIES.ISO4217 as CURRENCYISO,
                    CURRENCYPROPERTIES.DECIMALDIGITS as CURRENCYDECIMALDIGITS,
                    CURRENCYPROPERTIES.CURRENCYSYMBOL as CURRENCYSYMBOL,
                    CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE
                from DESIGNATIONLEVEL with (nolock)
                left join [REPORT_CTE] as [DATA] on [DATA].DESIGNATIONLEVELID = DESIGNATIONLEVEL.ID
                outer apply dbo.UFN_CURRENCY_GETPROPERTIES(DESIGNATIONLEVEL.BASECURRENCYID) CURRENCYPROPERTIES
                where (@CATEGORYCODEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID = @CATEGORYCODEID)
                    and (@DESIGNATIONLEVELTYPEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID)
                    and (@SELECTIONID is null or DESIGNATIONLEVEL.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID)))
                    and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, DESIGNATIONLEVEL.SITEID) = 1)

                group by DESIGNATIONLEVEL.ID, DESIGNATIONLEVEL.NAME, DESIGNATIONLEVEL.BASECURRENCYID, CURRENCYPROPERTIES.ID,CURRENCYPROPERTIES.ISO4217,
                    CURRENCYPROPERTIES.DECIMALDIGITS, CURRENCYPROPERTIES.CURRENCYSYMBOL, CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE
                order by NAME;
            end
        else
            begin
                declare @CURRENCYID uniqueidentifier;
                declare @CURRENCYISO nvarchar(3);    
                declare @CURRENCYDECIMALDIGITS tinyint;
                declare @CURRENCYSYMBOL nvarchar(5);
                declare @CURRENCYSYMBOLDISPLAYSETTINGCODE tinyint;

                select
                    @CURRENCYID = ID,
                    @CURRENCYISO = ISO4217,
                    @CURRENCYDECIMALDIGITS = DECIMALDIGITS,
                    @CURRENCYSYMBOL = CURRENCYSYMBOL,
                    @CURRENCYSYMBOLDISPLAYSETTINGCODE = SYMBOLDISPLAYSETTINGCODE
                from dbo.CURRENCY where ID = @ORGANIZATIONCURRENCYID

                insert into @SPLITS
                    select 
                        DESIGNATIONLEVEL.ID as [DESIGNATIONLEVELID],
                        [SPLITS].REVENUEID,
                        [SPLITS].REVENUESPLITID,
                        [SPLITS].REVENUESPLITAMOUNT,
                        [SPLITS].DESIGNATIONID,
                        [SPLITS].APPEALID,
                        [SPLITS].TRANSACTIONTYPECODE,
                        [SPLITS].SPLITTYPECODE,
                        [SPLITS].APPLICATIONCODE,
                        DESIGNATIONLEVEL.BASECURRENCYID
                    from dbo.DESIGNATIONLEVEL with (nolock)
                    cross apply dbo.UFN_DESIGNATIONLEVEL_REVENUESPLITRECORDSINCURRENCY_2(DESIGNATIONLEVEL.ID, @START, @END, @CAMPAIGNHIERARCHYPATH, null, @CURRENCYID, @ORGANIZATIONCURRENCYID) as [SPLITS]
                    where (@CATEGORYCODEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID = @CATEGORYCODEID)
                        and (@DESIGNATIONLEVELTYPEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID)
                        and (@SELECTIONID is null or DESIGNATIONLEVEL.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID)))
                        and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, DESIGNATIONLEVEL.SITEID) = 1);

                with [NEWCOMMITMENTS_CTE] as 
                (
                    select 
                        [SPLITS].DESIGNATIONLEVELID,
                        REVENUEID,
                        REVENUESPLITID,
                        REVENUESPLITAMOUNT,
                        1 as [GIFTCOUNT]
                    from @SPLITS [SPLITS]
                    where [SPLITS].TRANSACTIONTYPECODE in (1, 6)

                    union all
                    select
                        [SPLITS].DESIGNATIONLEVELID,
                        [SPLITS].REVENUEID,
                        [SPLITS].REVENUESPLITID,
                        case 
                            when (@CURRENCYID = @ORGANIZATIONCURRENCYID
                                then WRITEOFFSPLIT.ORGANIZATIONAMOUNT * -1
                            when @CURRENCYID = WRITEOFFSPLIT.BASECURRENCYID
                                then WRITEOFFSPLIT.AMOUNT * -1
                        else dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WRITEOFFSPLIT.ID, @CURRENCYID) * -1 
                        end as [REVENUESPLITAMOUNT],
                        0 as [COUNT]
                    from dbo.WRITEOFFSPLIT
                    inner join dbo.WRITEOFF on WRITEOFFSPLIT.WRITEOFFID = WRITEOFF.ID
                    inner join @SPLITS [SPLITS] on [SPLITS].REVENUEID = WRITEOFF.REVENUEID
                    where [SPLITS].TRANSACTIONTYPECODE in (1,6)
                ),
                [RECEIVED_CTE] as
                (
                    select 
                        [SPLITS].DESIGNATIONLEVELID,
                        REVENUEID,
                        REVENUESPLITID,
                        REVENUESPLITAMOUNT,
                        1 as [GIFTCOUNT]
                    from @SPLITS [SPLITS]
                    where [SPLITS].TRANSACTIONTYPECODE = 0 
                        and [SPLITS].APPLICATIONCODE in (0, 1, 6, 7, 3, 10, 13)
                        and ([SPLITS].APPLICATIONCODE <> 10 or [SPLITS].SPLITTYPECODE = 0)
                ),
                [PLANNEDGIFTS_CTE] as
                (
                    select 
                        [SPLITS].DESIGNATIONLEVELID,
                        REVENUEID,
                        REVENUESPLITID,
                        REVENUESPLITAMOUNT,
                        1 as [GIFTCOUNT]
                    from @SPLITS [SPLITS]
                    where [SPLITS].TRANSACTIONTYPECODE = 4
                ),
                [REPORT_CTE] as 
                (
                    select
                        [RECEIVED_CTE].DESIGNATIONLEVELID,
                        sum([RECEIVED_CTE].REVENUESPLITAMOUNT) as [RECEIVED_AMOUNT],
                        sum(0) as [NEWCOMMITMENTS_AMOUNT],
                        sum(0) as [PLANNEDGIFT_AMOUNT],
                        sum([RECEIVED_CTE].GIFTCOUNT) as [GIFTCOUNT]
                    from [RECEIVED_CTE]
                    group by DESIGNATIONLEVELID 

                    union all
                    select
                        [NEWCOMMITMENTS_CTE].DESIGNATIONLEVELID,
                        sum(0) as [RECEIVED_AMOUNT],
                        sum([NEWCOMMITMENTS_CTE].REVENUESPLITAMOUNT) as [NEWCOMMITMENTS_AMOUNT],
                        sum(0) as [PLANNEDGIFT_AMOUNT],

                        sum([NEWCOMMITMENTS_CTE].GIFTCOUNT) as [GIFTCOUNT]
                    from [NEWCOMMITMENTS_CTE]
                    group by DESIGNATIONLEVELID

                    union all
                    select
                        [PLANNEDGIFTS_CTE].DESIGNATIONLEVELID,
                        sum(0) as [RECEIVED_AMOUNT],
                        sum(0) as [NEWCOMMITMENTS_AMOUNT],
                        sum([PLANNEDGIFTS_CTE].REVENUESPLITAMOUNT) as [PLANNEDGIFT_AMOUNT],

                        sum([PLANNEDGIFTS_CTE].GIFTCOUNT) as [GIFTCOUNT]
                    from [PLANNEDGIFTS_CTE]
                    group by DESIGNATIONLEVELID
                )

                select 
                    'http://www.blackbaud.com/DESIGNATIONLEVELID?DESIGNATIONLEVELID=' + cast(DESIGNATIONLEVEL.ID as nvarchar(36)) as [DESIGNATIONLEVELID],
                    DESIGNATIONLEVEL.NAME,
                    0 as [SEQUENCE],
                    YEAR(@END) as [PERIODYEAR],

                    coalesce(sum([DATA].GIFTCOUNT), 0) as [TOTALNUMGIFTS],
                    -1 as [TOTALDONORS],
                    -1 as [TOTALRAISED],
                    -1 as [PERIODNUMGIFTS],
                    -1 as [MAXGIFT],
                    -1 as [PERIODAVGGIFT],
                    coalesce(sum([DATA].RECEIVED_AMOUNT), 0) + coalesce(sum([DATA].NEWCOMMITMENTS_AMOUNT), 0) as [OVERALLTOTALRAISED],
                    coalesce(sum([DATA].RECEIVED_AMOUNT), 0) as [OVERALLTOTALRECEIVED],
                    coalesce(sum([DATA].NEWCOMMITMENTS_AMOUNT), 0) as [OVERALLTOTALEXPECTED],
                    0 as [TOTALAVGGIFT],
                    0 as [TOTALRECEIVED],
                    0 as [TOTALEXPECTED],
                    0 as [PERIODNUMDONORS],
                    null as [APPEALNAME],
                    coalesce(sum([DATA].PLANNEDGIFT_AMOUNT), 0) as [OVERALLTOTALPLANNEDGIFTS], 
                    0 as [TOTALPLANNEDGIFTS],
                    @CURRENCYID as CURRENCYID,
                    @CURRENCYISO as CURRENCYISO,
                    @CURRENCYDECIMALDIGITS as CURRENCYDECIMALDIGITS,
                    @CURRENCYSYMBOL as CURRENCYSYMBOL,
                    @CURRENCYSYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE
                from DESIGNATIONLEVEL with (nolock)
                left join [REPORT_CTE] as [DATA] on [DATA].DESIGNATIONLEVELID = DESIGNATIONLEVEL.ID
                where (@CATEGORYCODEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID = @CATEGORYCODEID)
                    and (@DESIGNATIONLEVELTYPEID is null or DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID)
                    and (@SELECTIONID is null or DESIGNATIONLEVEL.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID)))
                    and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, DESIGNATIONLEVEL.SITEID) = 1)

                group by DESIGNATIONLEVEL.ID, DESIGNATIONLEVEL.NAME
                order by NAME;
            end