UFN_EVENTEXPENSE_GETAMOUNTPAIDINCURRENCY

Returns the amount paid of an event expense in a given currency.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@EVENTEXPENSEID uniqueidentifier IN
@CURRENCYID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_EVENTEXPENSE_GETAMOUNTPAIDINCURRENCY
            (
                @EVENTEXPENSEID uniqueidentifier,
                @CURRENCYID uniqueidentifier
            )
            returns money
            as
            begin
                declare @AMOUNT money = 0;

                if @CURRENCYID is null or @CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
                begin
                    select @AMOUNT = EVENTEXPENSE.ORGANIZATIONAMOUNTPAID
                    from dbo.EVENTEXPENSE
                    where EVENTEXPENSE.ID = @EVENTEXPENSEID;
                end
                else
                begin
                    declare @RECORDBASECURRENCYID uniqueidentifier;
                    declare @RECORDDATE datetime;

                    select 
                        @RECORDBASECURRENCYID = EVENTEXPENSE.BASECURRENCYID,
                        @RECORDDATE = EVENTEXPENSE.DATEADDED
                    from dbo.EVENTEXPENSE 
                    where EVENTEXPENSE.ID = @EVENTEXPENSEID;

                    if @CURRENCYID = @RECORDBASECURRENCYID
                        select @AMOUNT = EVENTEXPENSE.AMOUNTPAID
                        from dbo.EVENTEXPENSE
                        where EVENTEXPENSE.ID = @EVENTEXPENSEID;
                    else
                    begin
                        declare @CURRENCYEXCHANGERATEID uniqueidentifier;
                        set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @CURRENCYID, @RECORDDATE, 1, null);
                        if @CURRENCYEXCHANGERATEID is not null
                            select @AMOUNT = dbo.UFN_CURRENCY_CONVERT(EVENTEXPENSE.ORGANIZATIONAMOUNTPAID, @CURRENCYEXCHANGERATEID)
                            from dbo.EVENTEXPENSE
                            where EVENTEXPENSE.ID = @EVENTEXPENSEID
                        else
                        begin
                            set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@CURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @RECORDDATE, 1, null);

                            select @AMOUNT = dbo.UFN_CURRENCY_CONVERTINVERSE(EVENTEXPENSE.ORGANIZATIONAMOUNTPAID, @CURRENCYEXCHANGERATEID)
                            from dbo.EVENTEXPENSE
                            where EVENTEXPENSE.ID = @EVENTEXPENSEID;
                        end 
                    end
                end
                return @AMOUNT;
            end