UFN_DESIGNATION_RAISEDBYAPPEAL_INCURRENCY

Creates a table of appeals, their descriptions, and the associated revenue information in a given currency.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@STARTDATE datetime IN
@ENDDATE datetime IN
@CURRENCYID uniqueidentifier IN

Definition

Copy


        CREATE function dbo.UFN_DESIGNATION_RAISEDBYAPPEAL_INCURRENCY
            (@STARTDATE datetime, @ENDDATE datetime, @CURRENCYID uniqueidentifier = null)
            returns @REVENUEINFO table
            (
                APPEALID uniqueidentifier NOT NULL,
                DESID uniqueidentifier NOT NULL,
                DESNAME nvarchar(500) NOT NULL,
                DESTOTALRECEIVED money NOT NULL,
                DESTOTALRECEIVED_REGULAR money NOT NULL,
                DESGROSSAMOUNT money NOT NULL
            )
            as
            begin

                select 
                    @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE),
                    @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);

                declare @ORGANIZATIONCURRENCY uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
                declare @CURRENCYCODE tinyint;
                declare @DECIMALDIGITS tinyint;
                declare @ROUNDINGTYPECODE tinyint;

                if @CURRENCYID is null
                    set @CURRENCYCODE = 0; -- Use the appeal's base currency

                else if @CURRENCYID = @ORGANIZATIONCURRENCY
                    set @CURRENCYCODE = 1; -- Use the organization currency

                else
                    set @CURRENCYCODE = 3; -- Use the currency specified


                if @CURRENCYCODE = 3
                    select
                        @DECIMALDIGITS = DECIMALDIGITS,
                        @ROUNDINGTYPECODE = ROUNDINGTYPECODE
                    from
                        dbo.UFN_CURRENCY_GETPROPERTIES(@CURRENCYID)

                insert into @REVENUEINFO
                    select 
                        APPEALREVENUESPLIT.APPEALID APPEALID, 
                        APPEALREVENUESPLIT.DESIGNATIONID DESID, 
                        APPEALREVENUESPLIT.DESIGNATIONNAME DESNAME,
                        isnull(sum(APPEALREVENUESPLIT.REVENUESPLITAMOUNTINCURRENCY),0) DESTOTALRECEIVED,
                        0 DESTOTALRECEIVED_REGULAR,
                        isnull(sum(APPEALREVENUESPLIT.REVENUESPLITAMOUNTINCURRENCY),0) + isnull(sum(APPEALREVENUESPLIT.TAXCLAIMAMOUNTINCURRENCY),0) DESGROSSAMOUNT
                    from 
                        dbo.UFN_APPEALREVENUESPLIT_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCY, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENCYCODE) APPEALREVENUESPLIT
                    where (APPEALREVENUESPLIT.APPEALID is not null) and 
                        (APPEALREVENUESPLIT.DATE >= @STARTDATE or @STARTDATE is null) and
                        (APPEALREVENUESPLIT.DATE <= @ENDDATE or @ENDDATE is null) and                          
                         APPEALREVENUESPLIT.TRANSACTIONTYPECODE = 0 and
                         APPEALREVENUESPLIT.DESIGNATIONID is not null
                    group by APPEALREVENUESPLIT.APPEALID, APPEALREVENUESPLIT.DESIGNATIONID, APPEALREVENUESPLIT.DESIGNATIONNAME;

                -- update table to include total received from regular gifts (recurring gift payments)

                update @REVENUEINFO set
                    DESTOTALRECEIVED_REGULAR = 
                        (
                            select
                                isnull(sum(APPEALREVENUESPLIT.REVENUESPLITAMOUNTINCURRENCY),0)
                            from dbo.UFN_APPEALREVENUESPLIT_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCY, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENCYCODE) APPEALREVENUESPLIT

                            where (APPEALREVENUESPLIT.APPEALID = info.APPEALID) and
                                (APPEALREVENUESPLIT.DESIGNATIONID = info.DESID) and
                                (APPEALREVENUESPLIT.DATE >= @STARTDATE or @STARTDATE is null) and
                                (APPEALREVENUESPLIT.DATE <= @ENDDATE or @ENDDATE is null) and 
                                 APPEALREVENUESPLIT.TRANSACTIONTYPECODE = 0 and
                                 APPEALREVENUESPLIT.APPLICATIONCODE = 3
                            )
                from @REVENUEINFO info;                

                return;


            end