USP_REPORT_APPEALPROFILE_REVENUESUMMARYUK

Returns addition UK data for the revenue summary for an appeal.

Parameters

Parameter Parameter Type Mode Description
@APPEALID uniqueidentifier IN
@SHOW bit IN
@CURRENCYCODE tinyint IN

Definition

Copy


CREATE procedure dbo.USP_REPORT_APPEALPROFILE_REVENUESUMMARYUK
(
    @APPEALID uniqueidentifier = null,
    @SHOW bit = null,
    @CURRENCYCODE tinyint = null
)
as
set nocount on;

    declare @UKINSTALLED bit;
    set @UKINSTALLED = dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45FD-8F54-21FE9654EE2D');

    declare @SELECTEDCURRENCYID uniqueidentifier;
    declare @ORGANIZATIONCURRENCYID uniqueidentifier;
    declare @DECIMALDIGITS tinyint;
    declare @ROUNDINGTYPECODE tinyint;
  declare @ORIGINCODE tinyint;

    if coalesce(@CURRENCYCODE, 1) = 1
    begin
        set @CURRENCYCODE = 1;
        select
            @ORGANIZATIONCURRENCYID = CURRENCY.ID,
            @SELECTEDCURRENCYID = CURRENCY.ID,
            @DECIMALDIGITS = CURRENCY.DECIMALDIGITS,
            @ROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE
        from
            dbo.CURRENCY
        where
            CURRENCY.ID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
    end
    else begin
        set @CURRENCYCODE = 0;
        select
            @SELECTEDCURRENCYID = CURRENCY.ID,
            @DECIMALDIGITS = CURRENCY.DECIMALDIGITS,
            @ROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE
        from
            dbo.APPEAL
            inner join dbo.CURRENCY on APPEAL.BASECURRENCYID = CURRENCY.ID
        where
            APPEAL.ID = @APPEALID;

        set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
    end

  select @ORIGINCODE = coalesce(ORGANIZATIONAMOUNTORIGINCODE, 0) from dbo.MULTICURRENCYCONFIGURATION;

begin try
    if @SHOW = 1 and @UKINSTALLED = 1
    begin
        declare @REGULARGIVERREVENUE as money;
        declare @AVERAGECASHGIFT as money;
        declare @AVERAGEREGULARGIFT as money;
        declare @TOTALREGULARGIFTS as int;
        declare @GROSSAMOUNT as money;

        declare @REVENUEAMOUNTSINCURRENCY table (
            REVENUEID uniqueidentifier,
            REVENUESPLITID uniqueidentifier,
            CONSTITUENTID uniqueidentifier,
            AMOUNTINCURRENCY money,
            APPEALID uniqueidentifier,
            TRANSACTIONTYPECODE tinyint,
            APPLICATIONCODE tinyint,
            TYPECODE tinyint
        )

        insert into @REVENUEAMOUNTSINCURRENCY
            (REVENUEID,REVENUESPLITID,CONSTITUENTID,AMOUNTINCURRENCY,APPEALID,TRANSACTIONTYPECODE,APPLICATIONCODE,TYPECODE)
            select 
                REVENUEID,
                ID as REVENUESPLITID,
                CONSTITUENTID,
                AMOUNTINCURRENCY,
                APPEALID,
                TRANSACTIONTYPECODE,
                APPLICATIONCODE,
                TYPECODE
            from
                dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(
                                @SELECTEDCURRENCYID
                                @ORGANIZATIONCURRENCYID
                                @DECIMALDIGITS
                                @ROUNDINGTYPECODE)

        select 
            @REGULARGIVERREVENUE = coalesce(sum(REVENUEAMOUNTSINCURRENCY.AMOUNTINCURRENCY), 0)
        from 
            @REVENUEAMOUNTSINCURRENCY as REVENUEAMOUNTSINCURRENCY
        where 
            REVENUEAMOUNTSINCURRENCY.APPEALID = @APPEALID and
            REVENUEAMOUNTSINCURRENCY.TRANSACTIONTYPECODE = 0 and
            REVENUEAMOUNTSINCURRENCY.APPLICATIONCODE = 3 -- Recurring gift


        select 
            @AVERAGECASHGIFT = coalesce(avg(REVENUEAMOUNTSINCURRENCY.AMOUNTINCURRENCY), 0)
        from
            @REVENUEAMOUNTSINCURRENCY as REVENUEAMOUNTSINCURRENCY
        where
            REVENUEAMOUNTSINCURRENCY.APPEALID = @APPEALID and
            (
                REVENUEAMOUNTSINCURRENCY.TRANSACTIONTYPECODE = 1 
                or
                (REVENUEAMOUNTSINCURRENCY.TRANSACTIONTYPECODE = 0 and (REVENUEAMOUNTSINCURRENCY.APPLICATIONCODE = 0 or (REVENUEAMOUNTSINCURRENCY.APPLICATIONCODE = 1 and REVENUEAMOUNTSINCURRENCY.TYPECODE = 0)))
            )

        select
            @AVERAGEREGULARGIFT = coalesce(avg(REVENUEAMOUNTSINCURRENCY.AMOUNTINCURRENCY), 0)
        from
            @REVENUEAMOUNTSINCURRENCY as REVENUEAMOUNTSINCURRENCY
        where
            REVENUEAMOUNTSINCURRENCY.APPEALID = @APPEALID and
            (REVENUEAMOUNTSINCURRENCY.TRANSACTIONTYPECODE = 0 and REVENUEAMOUNTSINCURRENCY.APPLICATIONCODE = 3)

        select 
            @TOTALREGULARGIFTS = count(distinct REVENUEAMOUNTSINCURRENCY.REVENUEID)
        from 
            @REVENUEAMOUNTSINCURRENCY as REVENUEAMOUNTSINCURRENCY
        where
            REVENUEAMOUNTSINCURRENCY.APPEALID = @APPEALID and 
            (REVENUEAMOUNTSINCURRENCY.TRANSACTIONTYPECODE = 0 and REVENUEAMOUNTSINCURRENCY.APPLICATIONCODE = 3)

        set @GROSSAMOUNT = 
        (
            select
                coalesce(sum(REVENUEAMOUNTSINCURRENCY.AMOUNTINCURRENCY), 0) + 
                    coalesce(sum(REVENUESPLITGIFTAIDAMOUNTINCURRENCY.TAXCLAIMAMOUNTINCURRENCY), 0)
            from
                @REVENUEAMOUNTSINCURRENCY as REVENUEAMOUNTSINCURRENCY
                left join dbo.UFN_REVENUESPLITGIFTAID_GETAMOUNTSINCURRENCY_BULK
                (
                    @SELECTEDCURRENCYID,
                    @ORGANIZATIONCURRENCYID
                    @DECIMALDIGITS
                    @ROUNDINGTYPECODE
                ) as REVENUESPLITGIFTAIDAMOUNTINCURRENCY on REVENUEAMOUNTSINCURRENCY.REVENUESPLITID = REVENUESPLITGIFTAIDAMOUNTINCURRENCY.ID
                left outer join dbo.UFN_REVENUESPLITGIFTAID_GETELIGIBLE(1) as [REVENUESPLITGIFTAID] on [REVENUESPLITGIFTAID].[ID] = REVENUESPLITGIFTAIDAMOUNTINCURRENCY.[ID]
            where
                REVENUEAMOUNTSINCURRENCY.APPEALID = @APPEALID and
                (
                    REVENUEAMOUNTSINCURRENCY.TRANSACTIONTYPECODE = 1 
                    or
                    (REVENUEAMOUNTSINCURRENCY.TRANSACTIONTYPECODE = 0 and (REVENUEAMOUNTSINCURRENCY.APPLICATIONCODE in (0, 3) or (REVENUEAMOUNTSINCURRENCY.APPLICATIONCODE = 1 and REVENUEAMOUNTSINCURRENCY.TYPECODE = 0)))
                )
        )
        /* Subtract write-offs, just like above:*/
        -
        (
            select 
                coalesce(sum(INSTALLMENTSPLITWRITEOFFAMOUNTINCURRENCY.AMOUNTINCURRENCY), 0)
            from 
                dbo.UFN_INSTALLMENTSPLITWRITEOFF_GETAMOUNTSINCURRENCY_BULK(
                    @SELECTEDCURRENCYID,
                    @ORGANIZATIONCURRENCYID
                    @DECIMALDIGITS
                    @ROUNDINGTYPECODE,
          @ORIGINCODE,
          @CURRENCYCODE
                ) as INSTALLMENTSPLITWRITEOFFAMOUNTINCURRENCY
            inner join 
                dbo.WRITEOFF on WRITEOFF.ID = INSTALLMENTSPLITWRITEOFFAMOUNTINCURRENCY.WRITEOFFID
            inner join 
                dbo.REVENUE on REVENUE.ID = WRITEOFF.REVENUEID
            where 
                REVENUE.APPEALID = @APPEALID 
                and REVENUE.TRANSACTIONTYPECODE in (1,7)
        )

        select
            @REGULARGIVERREVENUE as [REGULARGIVERREVENUE],
            @AVERAGECASHGIFT as [AVERAGECASHGIFT],
            @AVERAGEREGULARGIFT as [AVERAGEREGULARGIFT],
            @TOTALREGULARGIFTS as [TOTALREGULARGIFTS],
            @GROSSAMOUNT as [GROSSAMOUNT],
            CURRENCYPROPERTIES.ID as CURRENCYID,
            CURRENCYPROPERTIES.ISO4217 as CURRENCYISO,
            CURRENCYPROPERTIES.DECIMALDIGITS as CURRENCYDECIMALDIGITS,
            CURRENCYPROPERTIES.CURRENCYSYMBOL as CURRENCYSYMBOL,
            CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE
        from dbo.APPEAL
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(@SELECTEDCURRENCYID) CURRENCYPROPERTIES
        where (APPEAL.ID = @APPEALID);
    end
end try

begin catch
    exec dbo.USP_RAISE_ERROR;
    return 1;
end catch

return 0;