UFN_DESIGNATION_PLEDGEDBYAPPEAL_INCURRENCY

Creates a table of appeals, their descriptions, and the associated pledge 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_PLEDGEDBYAPPEAL_INCURRENCY
            (@STARTDATE datetime, @ENDDATE datetime, @CURRENCYID uniqueidentifier = null)
            returns @REVENUEINFO table
            (
                APPEALID uniqueidentifier NOT NULL,
                DESID uniqueidentifier NOT NULL,
                DESNAME nvarchar(500) NOT NULL,
                DESTOTALPLEDGED money NOT NULL,
                DESPLEDGESPAID money NOT NULL,
                DESPLEDGESWRITTENOFF 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 ARS.APPEALID APPEALID, ARS.DESIGNATIONID DESID, ARS.DESIGNATIONNAME DESNAME, 
                        coalesce(sum(ARS.REVENUESPLITAMOUNTINCURRENCY),0) DESTOTALPLEDGED,
                        (select coalesce(sum(APPEALREVENUESPLIT.REVENUESPLITAMOUNTINCURRENCY), 0
                            from 
                                dbo.UFN_APPEALREVENUESPLIT_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCY, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENCYCODE) APPEALREVENUESPLIT
                            where 
                                APPEALREVENUESPLIT.REVENUESPLITID in (
                                    select ip.PAYMENTID
                                        from dbo.INSTALLMENTPAYMENT ip
                                            inner join dbo.REVENUE pledgerev on ip.PLEDGEID = pledgerev.ID
                                            inner join dbo.REVENUESPLIT pledgerevspl on pledgerev.ID = pledgerevspl.REVENUEID
                                        where (pledgerev.DATE >= @STARTDATE or @STARTDATE is null) and
                                            (pledgerev.DATE <= @ENDDATE or @ENDDATE is null) and 
                                            pledgerev.APPEALID=ARS.APPEALID and pledgerevspl.DESIGNATIONID=ARS.DESIGNATIONID) and
                                (APPEALREVENUESPLIT.APPEALID=ARS.APPEALID and APPEALREVENUESPLIT.DESIGNATIONID=ARS.DESIGNATIONID) and 
                                (APPEALREVENUESPLIT.DATE >= @STARTDATE or @STARTDATE is null) and
                                (APPEALREVENUESPLIT.DATE <= @ENDDATE or @ENDDATE is null)) DESPLEDGESPAID,
                        (select coalesce(sum(wos.WRITEOFFSPLITAMOUNTINCURRENCY),0
                            from dbo.UFN_APPEALREVENUESPLIT_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCY, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENCYCODE) wos
                            where
                                (wos.DATE >= @STARTDATE or @STARTDATE is null) and
                                (wos.DATE <= @ENDDATE or @ENDDATE is null) and
                                (wos.APPEALID=ARS.APPEALID and wos.DESIGNATIONID=ARS.DESIGNATIONID))DESPLEDGESWRITTENOFF
                        from dbo.UFN_APPEALREVENUESPLIT_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCY, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENCYCODE) ARS
                        where (ARS.APPEALID is not null) and 
                            (ARS.TRANSACTIONTYPECODE in (1,3,4,8)) and
                            ((ARS.DATE >= @STARTDATE) or @STARTDATE is null) and
                            ((ARS.DATE <= @ENDDATE)or @ENDDATE is null)
                        group by ARS.APPEALID, ARS.DESIGNATIONID, ARS.DESIGNATIONNAME;

                return;
            end