UFN_EVENTREGISTRANT_GETBALANCEINCURRENCY_BULK

Returns the balance for all event registrants.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CURRENCYID uniqueidentifier IN

Definition

Copy


        CREATE function dbo.UFN_EVENTREGISTRANT_GETBALANCEINCURRENCY_BULK
        (
            @CURRENCYID uniqueidentifier
        )
        returns table
        as
        return (
            --NOTE: UFN_REVENUE_CONSTITUENTSWITHCOMMITMENTS and USP_REVENUEBATCH_CONSTITUENTCOMMITMENT do balance calculations inline. 

            --Any changes to the way balances are calculated needs to be made there as well. 


            select
                [REGISTRANT].[ID],
                case
                    when [CURRENCYPROPERTIES].[ID] = [EVENT].[BASECURRENCYID]
                        then [BALANCE].[AMOUNT]
                    else
                        dbo.[UFN_CURRENCY_ROUND](dbo.[UFN_CURRENCY_APPLYRATE]([BALANCE].[AMOUNT], coalesce([LATESTBASEEXCHANGERATE].[RATE],cast((1 / [LATESTINVERSEBASEEXCHANGERATE].[RATE]) as decimal(20,8)),0)), [CURRENCYPROPERTIES].[DECIMALDIGITS], [CURRENCYPROPERTIES].[ROUNDINGTYPECODE])
                end [BALANCEINCURRENCY],
                [REGISTRANT].[EVENTID],
                [REGISTRANT].[CONSTITUENTID],
                [REGISTRANT].[ATTENDED],
                [REGISTRANT].[WILLNOTATTEND],
                [REGISTRANT].[GUESTOFREGISTRANTID],
                [REGISTRANT].[EVENTSEATINGNOTE],
                [REGISTRANT].[BENEFITSWAIVED],
                [REGISTRANT].[ONLINEREGISTRANT],
                [REGISTRANT].[ADDEDBYID],
                [REGISTRANT].[CHANGEDBYID],
                [REGISTRANT].[DATEADDED],
                [REGISTRANT].[DATECHANGED],
                [REGISTRANT].[ISCANCELLED],
                [REGISTRANT].[CUSTOMIDENTIFIER],
                [REGISTRANT].[NOTES],
                [REGISTRANT].[TSLONG],
                [REGISTRANT].[LOOKUPID],
                [EVENT].[BASECURRENCYID] as [EVENTBASECURRENCYID],
                [EVENT].[APPEALID] as [EVENTAPPEALID],
                [BALANCE].[AMOUNT] as BALANCE,
                [EVENT].[MAINEVENTID],
                [REGISTRANT].[ISWALKIN],
                [REGISTRANT].[USERMARKEDATTENDANCE]
            from
                dbo.[REGISTRANT]
                inner join dbo.[EVENT] on [REGISTRANT].[EVENTID] = [EVENT].[ID]
                inner join
                (
                    select [REGISTRANTID], cast(sum([AMOUNT])as money) as [AMOUNT] from
                        (
                                --baseline

                                select [ID] as [REGISTRANTID], 0 as [AMOUNT]
                                from [REGISTRANT]
                            union all
                                --outstanding registrations

                                select [REGISTRANTID], [AMOUNT]
                                from [REGISTRANTREGISTRATION]
                            union all
                                --payments on registrations

                                select [REGISTRANTID], -[AMOUNT]
                                from [EVENTREGISTRANTPAYMENT]
                            union all
                                --credits toward registrations

                                select
                                    [CREDITITEMEVENTREGISTRATION].[REGISTRANTID],
                                    ((LI.QUANTITY * LI.UNITVALUE) - EXT.DISCOUNTS)
                                from
                                    dbo.FINANCIALTRANSACTIONLINEITEM LI
                                    inner join dbo.CREDITITEM_EXT EXT on EXT.ID = LI.ID
                                    inner join dbo.FINANCIALTRANSACTION FT on FT.ID = LI.FINANCIALTRANSACTIONID
                                    inner join dbo.[CREDITITEMEVENTREGISTRATION] on [LI].[ID] = [CREDITITEMEVENTREGISTRATION].[ID]
                                where
                                    FT.TYPECODE = 23 --Refunds

                                    or LI.TYPECODE = 5 and FT.TYPECODE in (5, 99) --Discounts


                        ) as [BALANCEITEMS]
                    group by [REGISTRANTID]
                ) [BALANCE] on [REGISTRANT].[ID] = [BALANCE].[REGISTRANTID]
                cross join
                (
                    select [ID], [DECIMALDIGITS], [ROUNDINGTYPECODE] from
                    dbo.[UFN_CURRENCY_GETPROPERTIES](@CURRENCYID) where @CURRENCYID is not null
                    union all
                    select [ID], [DECIMALDIGITS], [ROUNDINGTYPECODE] from
                    dbo.[UFN_CURRENCY_GETPROPERTIES](dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()) where @CURRENCYID is null
                ) as [CURRENCYPROPERTIES]
                outer apply
                (
                    select
                        [RATE]
                    from
                        dbo.[CURRENCYEXCHANGERATE]
                    where
                        [EVENT].[BASECURRENCYID] = [CURRENCYEXCHANGERATE].[FROMCURRENCYID]
                        and [CURRENCYPROPERTIES].[ID] = [CURRENCYEXCHANGERATE].[TOCURRENCYID]
                        and [CURRENCYEXCHANGERATE].[TYPECODE] in (0,1)
                        and [CURRENCYEXCHANGERATE].[ISLATESTRATEFORASOFDATE] = 1
                        and dateadd(ms, 86399996, getdate()) >= [CURRENCYEXCHANGERATE].[ASOFDATESDTZ]
                        and dateadd(ms, 86399996, getdate()) <= [CURRENCYEXCHANGERATE].[NEXTRATEASOFDATEORMAXSDTZ]
                ) [LATESTBASEEXCHANGERATE]
                outer apply
                (
                    select
                        [RATE]
                    from
                        dbo.[CURRENCYEXCHANGERATE]
                    where
                        [CURRENCYPROPERTIES].[ID] = [CURRENCYEXCHANGERATE].[FROMCURRENCYID]
                        and [EVENT].[BASECURRENCYID] = [CURRENCYEXCHANGERATE].[TOCURRENCYID]
                        and [CURRENCYEXCHANGERATE].[TYPECODE] in (0,1)
                        and [CURRENCYEXCHANGERATE].[ISLATESTRATEFORASOFDATE] = 1
                        and dateadd(ms, 86399996, getdate()) >= [CURRENCYEXCHANGERATE].[ASOFDATESDTZ]
                        and dateadd(ms, 86399996, getdate()) <= [CURRENCYEXCHANGERATE].[NEXTRATEASOFDATEORMAXSDTZ]
                ) [LATESTINVERSEBASEEXCHANGERATE]
        )