UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY_BULK_4

Return

Return Type
table

Parameters

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

Definition

Copy


CREATE function [dbo].[UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY_BULK_4]
(
    @CURRENCYID uniqueidentifier,
    @ORGANIZATIONCURRENCYID uniqueidentifier,
    @DECIMALDIGITS tinyint,
    @ROUNDINGTYPECODE tinyint
)
returns table
as
return
(
    select
        REVENUERECOGNITION.ID,
        REVENUERECOGNITION.REVENUESPLITID,
        REVENUERECOGNITION.CONSTITUENTID,
        REVENUERECOGNITION.EFFECTIVEDATE,
        case
            when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
                then REVENUERECOGNITION.ORGANIZATIONAMOUNT

            else
                REVENUERECOGNITION.AMOUNT
        end [AMOUNTINCURRENCY],
        [REVENUERECOGNITION].[DATEADDED],
        [REVENUERECOGNITION].[REVENUERECOGNITIONTYPECODEID],
        [REVENUERECOGNITION].[TSLONG],
        FINANCIALTRANSACTION.[ID] as [REVENUEID],
        FINANCIALTRANSACTION.[TYPECODE] as [TRANSACTIONTYPECODE],
        FINANCIALTRANSACTION.[CONSTITUENTID] as [REVENUECONSTITUENTID],
        FINANCIALTRANSACTION.[DATE],
        FINANCIALTRANSACTION.[DATEADDED] as [REVENUEDATEADDED],
        FINANCIALTRANSACTIONLINEITEM.[TSLONG] as [REVENUESPLITTSLONG],
        FINANCIALTRANSACTION.[TYPE] as [TRANSACTIONTYPE],
        case
            when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
                then null

            else
                REVENUERECOGNITION.ORGANIZATIONEXCHANGERATEID
        end [ORGANIZATIONEXCHANGERATEID],
        REVENUERECOGNITION.ORGANIZATIONAMOUNT
    from
        dbo.REVENUERECOGNITION with (nolock)
        inner join dbo.FINANCIALTRANSACTIONLINEITEM with (nolock) on FINANCIALTRANSACTIONLINEITEM.ID = REVENUERECOGNITION.REVENUESPLITID and FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0
        inner join dbo.FINANCIALTRANSACTION with (nolock) on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
    where 
        (
            (@CURRENCYID is null
            or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
            or @CURRENCYID = REVENUERECOGNITION.BASECURRENCYID
        ) 
        and FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0  -- Standard line items only

        and FINANCIALTRANSACTIONLINEITEM.DELETEDON is NULL -- Non deleted line items only

        and FINANCIALTRANSACTION.DELETEDON is NULL
        and ((FINANCIALTRANSACTION.TYPECODE between 0 and 9) or (FINANCIALTRANSACTION.TYPECODE = 15)) -- Only FT that used to be in the REVENUE table.


    union all

    select
        REVENUERECOGNITION.ID,
        REVENUERECOGNITION.REVENUESPLITID,
        REVENUERECOGNITION.CONSTITUENTID,
        REVENUERECOGNITION.EFFECTIVEDATE,
        case
            when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
                then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(REVENUERECOGNITION.ORGANIZATIONAMOUNT, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)

            when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
                then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(REVENUERECOGNITION.ORGANIZATIONAMOUNT, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
            else
                0

        end [AMOUNTINCURRENCY],
        [REVENUERECOGNITION].[DATEADDED],
        [REVENUERECOGNITION].[REVENUERECOGNITIONTYPECODEID],
        [REVENUERECOGNITION].[TSLONG],
        FINANCIALTRANSACTION.[ID] as [REVENUEID],
        FINANCIALTRANSACTION.[TYPECODE] as [TRANSACTIONTYPECODE],
        FINANCIALTRANSACTION.[CONSTITUENTID] as [REVENUECONSTITUENTID],
        FINANCIALTRANSACTION.[DATE],
        FINANCIALTRANSACTION.[DATEADDED] as [REVENUEDATEADDED],
        FINANCIALTRANSACTIONLINEITEM.[TSLONG] as [REVENUESPLITTSLONG],
        FINANCIALTRANSACTION.[TYPE] as [TRANSACTIONTYPE],
        case
            when REVENUERECOGNITION.ORGANIZATIONEXCHANGERATEID is not null
                then REVENUERECOGNITION.ORGANIZATIONEXCHANGERATEID

            when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
                then [LATESTORGANIZATIONEXCHANGERATE].ID

            when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
                then [LATESTINVERSEORGANIZATIONEXCHANGERATE].ID
            else
                null
        end [ORGANIZATIONEXCHANGERATEID],
        REVENUERECOGNITION.ORGANIZATIONAMOUNT
    from
        dbo.REVENUERECOGNITION with (nolock)
        inner join dbo.FINANCIALTRANSACTIONLINEITEM with (nolock) on FINANCIALTRANSACTIONLINEITEM.ID = REVENUERECOGNITION.REVENUESPLITID
        inner join dbo.FINANCIALTRANSACTION with (nolock) on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
        left outer join dbo.CURRENCYEXCHANGERATE as LATESTORGANIZATIONEXCHANGERATE 
            on @ORGANIZATIONCURRENCYID = LATESTORGANIZATIONEXCHANGERATE.FROMCURRENCYID
                and @CURRENCYID = LATESTORGANIZATIONEXCHANGERATE.TOCURRENCYID
                and LATESTORGANIZATIONEXCHANGERATE.TYPECODE in (0,1)
                and LATESTORGANIZATIONEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
                and dateadd(ms, 86399996, FINANCIALTRANSACTION.[DATE]) >= LATESTORGANIZATIONEXCHANGERATE.ASOFDATESDTZ
                and dateadd(ms, 86399996, FINANCIALTRANSACTION.[DATE]) <= LATESTORGANIZATIONEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
        left outer join dbo.CURRENCYEXCHANGERATE as LATESTINVERSEORGANIZATIONEXCHANGERATE
            on @CURRENCYID = LATESTINVERSEORGANIZATIONEXCHANGERATE.FROMCURRENCYID
                and @ORGANIZATIONCURRENCYID= LATESTINVERSEORGANIZATIONEXCHANGERATE.TOCURRENCYID
                and LATESTINVERSEORGANIZATIONEXCHANGERATE.TYPECODE in (0,1)
                and LATESTINVERSEORGANIZATIONEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
                and dateadd(ms, 86399996, FINANCIALTRANSACTION.[DATE]) >= LATESTINVERSEORGANIZATIONEXCHANGERATE.ASOFDATESDTZ
                and dateadd(ms, 86399996, FINANCIALTRANSACTION.[DATE]) <= LATESTINVERSEORGANIZATIONEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
        where
            (@CURRENCYID is not null
            and (@CURRENCYID <> @ORGANIZATIONCURRENCYID)
            and @CURRENCYID <> REVENUERECOGNITION.BASECURRENCYID    
and FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0  -- Standard line items only

        and FINANCIALTRANSACTIONLINEITEM.DELETEDON is NULL -- Non deleted line items only

        and FINANCIALTRANSACTION.DELETEDON is NULL
        and ((FINANCIALTRANSACTION.TYPECODE between 0 and 9) or (FINANCIALTRANSACTION.TYPECODE = 15)) -- Only FT that used to be in the REVENUE table.

)