UFN_AUCTIONITEM_GETAMOUNTSINCURRENCY_BULK

Returns the value for auction items in a specified currency, in bulk.

Return

Return Type
table

Parameters

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

Definition

Copy


            CREATE function dbo.UFN_AUCTIONITEM_GETAMOUNTSINCURRENCY_BULK
            (
                @CURRENCYID uniqueidentifier,
                @ORGANIZATIONCURRENCYID uniqueidentifier,
                @DECIMALDIGITS tinyint,
                @ROUNDINGTYPECODE tinyint,
                @EVENTID uniqueidentifier
            )
            returns table
            as
            return
            (
                select
                    AUCTIONITEM.ID,
                    REVENUE.ID as [REVENUEID],
                    REVENUESPLIT.ID as [REVENUESPLITID],
                    REVENUE.CONSTITUENTID as [DONORID],
                    REVENUE.DATE,
                    REVENUE.POSTDATE,
                    AUCTIONITEM.TYPECODE,
                    case 
                        when @CURRENCYID is null or @CURRENCYID = @ORGANIZATIONCURRENCYID
                            then AUCTIONITEM.ORGANIZATIONVALUE
                        when @CURRENCYID = AUCTIONITEM.TRANSACTIONCURRENCYID 
                            then AUCTIONITEM.TRANSACTIONVALUE
                        else 
                            AUCTIONITEM.VALUE
                    end as [VALUEINCURRENCY],
                    case
                        when @CURRENCYID is null or @CURRENCYID = @ORGANIZATIONCURRENCYID
                            then AUCTIONITEM.ORGANIZATIONMINIMUMBID
                        when @CURRENCYID = AUCTIONITEM.TRANSACTIONCURRENCYID
                            then AUCTIONITEM.TRANSACTIONMINIMUMBID
                        else
                            AUCTIONITEM.MINIMUMBID
                    end as [MINIMUMBIDINCURRENCY]
                from dbo.AUCTIONITEM
                inner join dbo.REVENUE on REVENUE.ID = AUCTIONITEM.REVENUEAUCTIONDONATIONID
                inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID 
                where 
                    (@EVENTID is null or AUCTIONITEM.EVENTAUCTIONID = @EVENTID)
                    and 
                    (
                        @CURRENCYID is null
                        or @CURRENCYID = @ORGANIZATIONCURRENCYID
                        or @CURRENCYID = AUCTIONITEM.TRANSACTIONCURRENCYID
                        or @CURRENCYID = AUCTIONITEM.BASECURRENCYID
                    )

                union all
                select 
                    AUCTIONITEM.ID,
                    REVENUE.ID as [REVENUEID],
                    REVENUESPLIT.ID as [REVENUESPLITID],
                    REVENUE.CONSTITUENTID as [DONORID],
                    REVENUE.DATE,
                    REVENUE.POSTDATE,
                    AUCTIONITEM.TYPECODE,
                    case 
                        when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
                            then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(AUCTIONITEM.ORGANIZATIONVALUE, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)
                        when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
                            then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(AUCTIONITEM.ORGANIZATIONVALUE, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
                        else 0
                    end as [VALUEINCURRENCY],
                    case
                        when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
                            then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(AUCTIONITEM.ORGANIZATIONMINIMUMBID, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)
                        when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
                            then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(AUCTIONITEM.ORGANIZATIONMINIMUMBID, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
                        else 0
                    end as [MINIMUMBIDINCURRENCY]
                from dbo.AUCTIONITEM
                inner join dbo.REVENUE on REVENUE.ID = AUCTIONITEM.REVENUEAUCTIONDONATIONID
                inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID 
                outer apply
                (
                    select CURRENCYEXCHANGERATE.RATE
                    from dbo.CURRENCYEXCHANGERATE
                    where @ORGANIZATIONCURRENCYID = CURRENCYEXCHANGERATE.FROMCURRENCYID
                    and @CURRENCYID = CURRENCYEXCHANGERATE.TOCURRENCYID
                    and CURRENCYEXCHANGERATE.TYPECODE in (0,1)
                    and CURRENCYEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
                    and dateadd(ms, 86399996,REVENUE.DATE) >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
                    and dateadd(ms, 86399996,REVENUE.DATE) <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
                ) as [LATESTORGANIZATIONEXCHANGERATE]
                outer apply
                (
                    select CURRENCYEXCHANGERATE.RATE
                    from dbo.CURRENCYEXCHANGERATE
                    where @CURRENCYID = CURRENCYEXCHANGERATE.FROMCURRENCYID
                        and @ORGANIZATIONCURRENCYID= CURRENCYEXCHANGERATE.TOCURRENCYID
                        and CURRENCYEXCHANGERATE.TYPECODE in (0,1)
                        and CURRENCYEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
                        and dateadd(ms, 86399996,REVENUE.DATE) >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
                        and dateadd(ms, 86399996,REVENUE.DATE) <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
                ) [LATESTINVERSEORGANIZATIONEXCHANGERATE]
                where 
                    (@EVENTID is null or AUCTIONITEM.EVENTAUCTIONID = @EVENTID)
                    and @CURRENCYID is not null
                    and @CURRENCYID <> @ORGANIZATIONCURRENCYID
                    and @CURRENCYID <> AUCTIONITEM.TRANSACTIONCURRENCYID
                    and @CURRENCYID <> AUCTIONITEM.BASECURRENCYID




            )