USP_DATALIST_REVENUECOMMITMENTREVALUATION

This datalist returns a list of revaluations for a revenue commitment.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_REVENUECOMMITMENTREVALUATION (@ID uniqueidentifier)
                as 
                    set nocount on;

                    declare @ORIGINCODE tinyint;
                    select @ORIGINCODE = ORGANIZATIONAMOUNTORIGINCODE 
                    from dbo.MULTICURRENCYCONFIGURATION;

                    with CTE_NEWPREVIOUSPAIRINGS
                    as(
                        select 
                            NEWREVALUATION.ID,
                            NEWREVALUATION.DATE,
                            NEWREVALUATION.SEQUENCE,
                            NEWREVALUATION.BASEEXCHANGERATEID NEWBASEEXCHANGERATEID,
                            NEWREVALUATION.ORGANIZATIONEXCHANGERATEID NEWORGANIZATIONEXCHANGERATEID,
                            coalesce(PREVIOUSBASEREVALUATION.BASEEXCHANGERATEID,FINANCIALTRANSACTION.BASEEXCHANGERATEID) PREVIOUSBASEEXCHANGERATEID,
                            coalesce(PREVIOUSORGANIZATIONREVALUATION.ORGANIZATIONEXCHANGERATEID,FINANCIALTRANSACTION.ORGEXCHANGERATEID) PREVIOUSORGANIZATIONEXCHANGERATEID,
                            FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
                            isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID) BASECURRENCYID,
                            case 
                                when FINANCIALTRANSACTION.TYPECODE in (1,4,6,15)
                                    then dbo.UFN_PLEDGE_GETBALANCEASOF(@ID,NEWREVALUATION.DATE)
                                else FINANCIALTRANSACTION.TRANSACTIONAMOUNT
                            end AMOUNTTOREVALUE
                        from dbo.FINANCIALTRANSACTION
                            inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
                            inner join dbo.PDACCOUNTSYSTEM on FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
                            inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
                            cross apply dbo.UFN_REVENUE_GETREVALUATIONS(@ID) NEWREVALUATION
                            outer apply( 
                                select top 1 BASEEXCHANGERATEID
                                from dbo.UFN_REVENUE_GETREVALUATIONS(@ID) PREVIOUSREVALUATION
                                where (
                                        (NEWREVALUATION.DATE = PREVIOUSREVALUATION.DATE
                                            and NEWREVALUATION.SEQUENCE > PREVIOUSREVALUATION.SEQUENCE
                                        )
                                        or NEWREVALUATION.DATE > PREVIOUSREVALUATION.DATE 
                                    )
                                    and BASEEXCHANGERATEID is not null
                                order by PREVIOUSREVALUATION.DATE desc, PREVIOUSREVALUATION.SEQUENCE desc
                            ) PREVIOUSBASEREVALUATION
                            outer apply( 
                                select top 1 ORGANIZATIONEXCHANGERATEID
                                from dbo.UFN_REVENUE_GETREVALUATIONS(@ID) PREVIOUSREVALUATION
                                where (
                                        (NEWREVALUATION.DATE = PREVIOUSREVALUATION.DATE
                                            and NEWREVALUATION.SEQUENCE > PREVIOUSREVALUATION.SEQUENCE
                                        )
                                        or NEWREVALUATION.DATE > PREVIOUSREVALUATION.DATE 
                                    )
                                    and ORGANIZATIONEXCHANGERATEID is not null
                                order by PREVIOUSREVALUATION.DATE desc, PREVIOUSREVALUATION.SEQUENCE desc
                            ) PREVIOUSORGANIZATIONREVALUATION
                        where FINANCIALTRANSACTION.ID = @ID
                            and FINANCIALTRANSACTION.DELETEDON is null
                    )
                    select 
                        REVALUATIONS.ID ID,
                        REVALUATIONS.DATE DATE,
                        REVALUATIONS.SEQUENCE,
                        'Base' TYPE,
                        PREVIOUSBASERATE.RATE PREVIOUSBASERATE,
                        dbo.UFN_CURRENCY_CONVERT(REVALUATIONS.AMOUNTTOREVALUE,REVALUATIONS.PREVIOUSBASEEXCHANGERATEID) PREVIOUSBALANCE,
                        NEWBASERATE.RATE NEWBASERATE,
                        dbo.UFN_CURRENCY_CONVERT(REVALUATIONS.AMOUNTTOREVALUE,REVALUATIONS.NEWBASEEXCHANGERATEID) NEWBALANCE,
                        REVALUATIONS.BASECURRENCYID CURRENCYID
                    from CTE_NEWPREVIOUSPAIRINGS REVALUATIONS
                        left join dbo.CURRENCYEXCHANGERATE NEWBASERATE on NEWBASERATE.ID = REVALUATIONS.NEWBASEEXCHANGERATEID
                        left join dbo.CURRENCYEXCHANGERATE PREVIOUSBASERATE on PREVIOUSBASERATE.ID = REVALUATIONS.PREVIOUSBASEEXCHANGERATEID
                    where REVALUATIONS.TRANSACTIONCURRENCYID <> REVALUATIONS.BASECURRENCYID
                        and REVALUATIONS.NEWBASEEXCHANGERATEID is not null

                    union all

                    select 
                        REVALUATIONS.ID ID,
                        REVALUATIONS.DATE DATE,
                        REVALUATIONS.SEQUENCE,
                        'Organization' TYPE,
                        PREVIOUSORGANIZATIONRATE.RATE PREVIOUSORGANIZATIONRATE,
                        case @ORIGINCODE
                            when 0
                                then 
                                    case
                                        when REVALUATIONS.BASECURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
                                            then dbo.UFN_CURRENCY_CONVERT(REVALUATIONS.AMOUNTTOREVALUE,REVALUATIONS.PREVIOUSBASEEXCHANGERATEID)
                                        else
                                            case
                                                when REVALUATIONS.TRANSACTIONCURRENCYID = REVALUATIONS.BASECURRENCYID
                                                    then dbo.UFN_CURRENCY_CONVERT(REVALUATIONS.AMOUNTTOREVALUE,REVALUATIONS.PREVIOUSORGANIZATIONEXCHANGERATEID)
                                                else dbo.UFN_CURRENCY_CONVERT(dbo.UFN_CURRENCY_CONVERT(REVALUATIONS.AMOUNTTOREVALUE,REVALUATIONS.PREVIOUSBASEEXCHANGERATEID),REVALUATIONS.PREVIOUSORGANIZATIONEXCHANGERATEID)
                                            end
                                    end
                            when 1
                                then dbo.UFN_CURRENCY_CONVERT(REVALUATIONS.AMOUNTTOREVALUE,REVALUATIONS.PREVIOUSORGANIZATIONEXCHANGERATEID)
                        end PREVIOUSBALANCE,
                        NEWORGANIZATIONRATE.RATE NEWORGANIZATIONRATE,                        
                        case @ORIGINCODE
                            when 0
                                then 
                                    case
                                        when REVALUATIONS.BASECURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
                                            then dbo.UFN_CURRENCY_CONVERT(REVALUATIONS.AMOUNTTOREVALUE,REVALUATIONS.NEWBASEEXCHANGERATEID)
                                        else
                                            case
                                                when REVALUATIONS.TRANSACTIONCURRENCYID = REVALUATIONS.BASECURRENCYID
                                                    then dbo.UFN_CURRENCY_CONVERT(REVALUATIONS.AMOUNTTOREVALUE,REVALUATIONS.NEWORGANIZATIONEXCHANGERATEID)
                                                else dbo.UFN_CURRENCY_CONVERT(dbo.UFN_CURRENCY_CONVERT(REVALUATIONS.AMOUNTTOREVALUE,coalesce(REVALUATIONS.NEWBASEEXCHANGERATEID,REVALUATIONS.PREVIOUSBASEEXCHANGERATEID)),coalesce(REVALUATIONS.NEWORGANIZATIONEXCHANGERATEID,REVALUATIONS.PREVIOUSORGANIZATIONEXCHANGERATEID))
                                            end
                                    end
                            when 1
                                then dbo.UFN_CURRENCY_CONVERT(REVALUATIONS.AMOUNTTOREVALUE,REVALUATIONS.NEWORGANIZATIONEXCHANGERATEID)
                        end NEWBALANCE,
                        dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() CURRENCYID
                    from CTE_NEWPREVIOUSPAIRINGS REVALUATIONS
                        left join dbo.CURRENCYEXCHANGERATE NEWORGANIZATIONRATE on NEWORGANIZATIONRATE.ID = REVALUATIONS.NEWORGANIZATIONEXCHANGERATEID
                        left join dbo.CURRENCYEXCHANGERATE PREVIOUSORGANIZATIONRATE on PREVIOUSORGANIZATIONRATE.ID = REVALUATIONS.PREVIOUSORGANIZATIONEXCHANGERATEID
                    where (@ORIGINCODE = 0
                            and not(
                                REVALUATIONS.TRANSACTIONCURRENCYID = REVALUATIONS.BASECURRENCYID
                                    and REVALUATIONS.BASECURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
                            )
                            and not(
                                REVALUATIONS.BASECURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
                                    and REVALUATIONS.NEWBASEEXCHANGERATEID is null
                            )
                            and not(
                                REVALUATIONS.TRANSACTIONCURRENCYID = REVALUATIONS.BASECURRENCYID
                                    and REVALUATIONS.NEWORGANIZATIONEXCHANGERATEID is null
                            )
                            and not
                                REVALUATIONS.NEWORGANIZATIONEXCHANGERATEID is null
                                    and    REVALUATIONS.NEWBASEEXCHANGERATEID is null
                            )
                        )
                        or (@ORIGINCODE = 1
                            and REVALUATIONS.TRANSACTIONCURRENCYID <> dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
                            and REVALUATIONS.NEWORGANIZATIONEXCHANGERATEID is not null
                        )                        
                    order by REVALUATIONS.DATE desc, REVALUATIONS.SEQUENCE desc, TYPE;