UFN_APPEAL_GETGOALINCURRENCY_BULK2

Returns the goal of all appeals in the given currency. Extra parameter to allow the default currency to be set to the appeal.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CURRENCYID uniqueidentifier IN
@ORGANIZATIONCURRENCYID uniqueidentifier IN
@DECIMALDIGITS tinyint IN
@ROUNDINGTYPECODE tinyint IN
@APPEALCURRENCYASDEFAULT tinyint IN

Definition

Copy


    CREATE function dbo.UFN_APPEAL_GETGOALINCURRENCY_BULK2
    (
        @CURRENCYID uniqueidentifier,
        @ORGANIZATIONCURRENCYID uniqueidentifier,
        @DECIMALDIGITS tinyint,
        @ROUNDINGTYPECODE tinyint,
        @APPEALCURRENCYASDEFAULT tinyint = 0
    )
    returns table
            as
            return(
                --when @CURRENCYID is null return all Appeals in their base currency

                select
                    APPEAL.ID,
                    case 
                    when ((@APPEALCURRENCYASDEFAULT = 1) and (@CURRENCYID is null) and (APPEAL.BASECURRENCYID is not null))
                        then APPEAL.GOAL
                    when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
                        then APPEAL.ORGANIZATIONGOAL
                    else
                        APPEAL.GOAL
                    end [GOALINCURRENCY],
                    APPEAL.BASECURRENCYID,
                    APPEAL.APPEALREPORT1CODEID,
                    APPEAL.APPEALCATEGORYCODEID,
                    APPEAL.SITEID,
                    APPEAL.NAME
                from dbo.APPEAL
                where (@CURRENCYID is null
                        or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
                        or @CURRENCYID = APPEAL.BASECURRENCYID
                union all
                select
                    APPEAL.ID,
                    case
                    when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
                        then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(APPEAL.ORGANIZATIONGOAL, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)
                    when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
                        then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(APPEAL.ORGANIZATIONGOAL, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
                    else
                        0
                    end [GOALINCURRENCY],
                    APPEAL.BASECURRENCYID,
                    APPEAL.APPEALREPORT1CODEID,
                    APPEAL.APPEALCATEGORYCODEID,
                    APPEAL.SITEID,
                    APPEAL.NAME
                from
                    dbo.APPEAL
                    outer apply
                    (
                        select
                            RATE
                        from
                            dbo.CURRENCYEXCHANGERATE
                        where
                            @ORGANIZATIONCURRENCYID = CURRENCYEXCHANGERATE.FROMCURRENCYID
                            and @CURRENCYID = CURRENCYEXCHANGERATE.TOCURRENCYID
                            and CURRENCYEXCHANGERATE.TYPECODE in (0,1)
                            and CURRENCYEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
                            and APPEAL.DATEADDED >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
                            and APPEAL.DATEADDED <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
                    ) LATESTORGANIZATIONEXCHANGERATE
                    outer apply
                    (
                        select
                            RATE
                        from
                            dbo.CURRENCYEXCHANGERATE
                        where
                            @CURRENCYID = CURRENCYEXCHANGERATE.FROMCURRENCYID
                            and @ORGANIZATIONCURRENCYID= CURRENCYEXCHANGERATE.TOCURRENCYID
                            and CURRENCYEXCHANGERATE.TYPECODE in (0,1)
                            and CURRENCYEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
                            and APPEAL.DATEADDED >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
                            and APPEAL.DATEADDED <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
                    ) LATESTINVERSEORGANIZATIONEXCHANGERATE
                where (@CURRENCYID is not null
                    and (@CURRENCYID <> @ORGANIZATIONCURRENCYID)
                    and @CURRENCYID <> APPEAL.BASECURRENCYID
            );